MDL-67587 course: Add search in recommended activities admin page
[moodle.git] / course / classes / output / recommendations / activity_list.php
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/>.
17 /**
18  * Contains activity_list renderable used for the recommended activities page.
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  */
25 namespace core_course\output\recommendations;
27 /**
28  * Activity list renderable.
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  */
34 class activity_list implements \renderable, \templatable {
36     /** @var array $modules activities to display in the recommendations page. */
37     protected $modules;
39     /** @var string $searchquery The search query. */
40     protected $searchquery;
42     /**
43      * Constructor method.
44      *
45      * @param array $modules Activities to display
46      * @param string $searchquery The search query if present
47      */
48     public function __construct(array $modules, string $searchquery) {
49         $this->modules = $modules;
50         $this->searchquery = $searchquery;
51     }
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 {
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);
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         ];
84     }
85 }