. /** * Contains activity_list renderable used for the recommended activities page. * * @package core_course * @copyright 2020 Adrian Greeve * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core_course\output\recommendations; /** * Activity list renderable. * * @package core_course * @copyright 2020 Adrian Greeve * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class activity_list implements \renderable, \templatable { /** @var array $modules activities to display in the recommendations page. */ protected $modules; /** @var string $searchquery The search query. */ protected $searchquery; /** * Constructor method. * * @param array $modules Activities to display * @param string $searchquery The search query if present */ public function __construct(array $modules, string $searchquery) { $this->modules = $modules; $this->searchquery = $searchquery; } /** * Export method to configure information into something the template can use. * * @param \renderer_base $output Not actually used. * @return array Template context information. */ public function export_for_template(\renderer_base $output): array { $info = array_map(function($module) { return [ 'id' => $module->id ?? '', 'name' => $module->title, 'componentname' => $module->componentname, 'icon' => $module->icon, 'recommended' => $module->recommended ?? '' ]; }, $this->modules); return [ 'categories' => [ [ 'categoryname' => get_string('activities'), 'hascategorydata' => !empty($info), 'categorydata' => $info ] ], 'search' => [ 'query' => $this->searchquery, 'searchresultsnumber' => count($this->modules) ] ]; } }