See Release Notes
Long Term Support Release
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace core\output; use context; use renderable; use stdClass; use templatable; /** * The filter renderable class. * * @package core * @copyright 2021 Catalyst IT Australia Pty Ltd * @author Tomo Tsuyuki <tomotsuyuki@catalyst-au.net> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ abstract class datafilter implements renderable, templatable {> /** @var int None of the following match */ /** @var context $context The context where the filters are being rendered. */ > public const JOINTYPE_NONE = 0; protected $context; > > /** @var int Any of the following match */ /** @var string $tableregionid Container of the table to be updated by this filter, is used to retrieve the table */ > public const JOINTYPE_ANY = 1; protected $tableregionid; > > /** @var int All of the following match */ /** @var stdClass $course The course shown */ > public const JOINTYPE_ALL = 2; protected $course; >/** * Filter constructor. * * @param context $context The context where the filters are being rendered * @param string|null $tableregionid Container of the table which will be updated by this filter */ public function __construct(context $context, ?string $tableregionid = null) { $this->context = $context; $this->tableregionid = $tableregionid; if ($context instanceof \context_course) { $this->course = get_course($context->instanceid); } } /** * Get data for all filter types. * * @return array */ abstract protected function get_filtertypes(): array; /** * Get a standardised filter object. * * @param string $name * @param string $title * @param bool $custom * @param bool $multiple * @param string|null $filterclass * @param array $values * @param bool $allowempty * @return stdClass|null */ protected function get_filter_object( string $name, string $title, bool $custom, bool $multiple, ?string $filterclass, array $values,< bool $allowempty = false> bool $allowempty = false, > ?stdClass $filteroptions = null, > bool $required = false, > array $joinlist = [self::JOINTYPE_NONE, self::JOINTYPE_ANY, self::JOINTYPE_ALL]): ?stdClass { if (!$allowempty && empty($values)) { // Do not show empty filters. return null; } return (object) [ 'name' => $name, 'title' => $title, 'allowcustom' => $custom, 'allowmultiple' => $multiple, 'filtertypeclass' => $filterclass, 'values' => $values,> 'filteroptions' => $filteroptions, ]; > 'required' => $required, } > 'joinlist' => json_encode($joinlist)}