MDL-67262 core_course: Added the ability to recommend activities.
[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 renderers for the recommendations 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  * Main renderer for the recommendations page.
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     /**
40      * Constructor method.
41      *
42      * @param array $modules Activities to display
43      */
44     public function __construct(array $modules) {
45         $this->modules = $modules;
46     }
48     /**
49      * Export method to configure information into something the template can use.
50      *
51      * @param  \renderer_base $output Not actually used.
52      * @return array Template context information.
53      */
54     public function export_for_template(\renderer_base $output): array {
56         $info = array_map(function($module) {
57             return [
58                 'id' => $module->id ?? '',
59                 'name' => $module->title,
60                 'componentname' => $module->componentname,
61                 'icon' => $module->icon,
62                 'recommended' => $module->recommended ?? ''
63             ];
64         }, $this->modules);
66         return ['categories' => ['categoryname' => get_string('activities'), 'categorydata' => $info]];
67     }
68 }