MDL-67587 course: Add search in recommended activities admin page
[moodle.git] / course / classes / output / recommendations / activity_list.php
CommitLineData
cd09777d
AG
1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16
17/**
b3fe33ac 18 * Contains activity_list renderable used for the recommended activities page.
cd09777d
AG
19 *
20 * @package core_course
21 * @copyright 2020 Adrian Greeve
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 */
24
25namespace core_course\output\recommendations;
26
27/**
b3fe33ac 28 * Activity list renderable.
cd09777d
AG
29 *
30 * @package core_course
31 * @copyright 2020 Adrian Greeve
32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
33 */
34class activity_list implements \renderable, \templatable {
35
36 /** @var array $modules activities to display in the recommendations page. */
37 protected $modules;
38
d379dc9b
MG
39 /** @var string $searchquery The search query. */
40 protected $searchquery;
41
cd09777d
AG
42 /**
43 * Constructor method.
44 *
45 * @param array $modules Activities to display
d379dc9b 46 * @param string $searchquery The search query if present
cd09777d 47 */
d379dc9b 48 public function __construct(array $modules, string $searchquery) {
cd09777d 49 $this->modules = $modules;
d379dc9b 50 $this->searchquery = $searchquery;
cd09777d
AG
51 }
52
53 /**
54 * Export method to configure information into something the template can use.
55 *
56 * @param \renderer_base $output Not actually used.
57 * @return array Template context information.
58 */
59 public function export_for_template(\renderer_base $output): array {
60
61 $info = array_map(function($module) {
62 return [
63 'id' => $module->id ?? '',
64 'name' => $module->title,
65 'componentname' => $module->componentname,
66 'icon' => $module->icon,
67 'recommended' => $module->recommended ?? ''
68 ];
69 }, $this->modules);
70
d379dc9b
MG
71 return [
72 'categories' => [
73 [
74 'categoryname' => get_string('activities'),
75 'hascategorydata' => !empty($info),
76 'categorydata' => $info
77 ]
78 ],
79 'search' => [
80 'query' => $this->searchquery,
81 'searchresultsnumber' => count($this->modules)
82 ]
83 ];
cd09777d 84 }
b3fe33ac 85}