Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
   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  /**
  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   */
  24  
  25  namespace core_course\output\recommendations;
  26  
  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 {
  35  
  36      /** @var array $modules activities to display in the recommendations page. */
  37      protected $modules;
  38  
  39      /** @var string $searchquery The search query. */
  40      protected $searchquery;
  41  
  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      }
  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  
  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  }