mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
29a541724f
This has been generated running the following Sniff, part of the Moodle's CodeSniffer standard: - PSR2.Methods.MethodDeclaration It just ensures all the function declarations have the correct order for: - abstract and final. - visibility (public, protected, private). - static. So, all the lines modified by this commit are function declarations and the only changes are in the positions of those keywords.
102 lines
3.0 KiB
PHP
102 lines
3.0 KiB
PHP
<?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/>.
|
|
|
|
/**
|
|
* Contains the base class for fetching the important dates in an activity module for a given module instance and a user.
|
|
*
|
|
* @package core
|
|
* @copyright Shamim Rezaie <shamim@moodle.com>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace core;
|
|
|
|
use cm_info;
|
|
|
|
/**
|
|
* Class for fetching the important dates of an activity module for a given module instance and a user.
|
|
*
|
|
* @copyright Shamim Rezaie <shamim@moodle.com>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
abstract class activity_dates {
|
|
|
|
/**
|
|
* @var cm_info The course module information object.
|
|
*/
|
|
protected $cm;
|
|
|
|
/**
|
|
* @var int The user id.
|
|
*/
|
|
protected $userid;
|
|
|
|
/**
|
|
* activity_dates constructor.
|
|
*
|
|
* @param cm_info $cm course module
|
|
* @param int $userid user id
|
|
*/
|
|
public function __construct(cm_info $cm, int $userid) {
|
|
$this->cm = $cm;
|
|
$this->userid = $userid;
|
|
}
|
|
|
|
/**
|
|
* Returns a list of important dates in the given module for the user.
|
|
*
|
|
* @param cm_info $cm The course module information.
|
|
* @param int $userid The user ID.
|
|
* @return array|array[]
|
|
*/
|
|
public static function get_dates_for_module(cm_info $cm, int $userid): array {
|
|
$cmdatesclassname = static::get_dates_classname($cm->modname);
|
|
if (!$cmdatesclassname) {
|
|
return [];
|
|
}
|
|
|
|
/** @var activity_dates $dates */
|
|
$dates = new $cmdatesclassname($cm, $userid);
|
|
return $dates->get_dates();
|
|
}
|
|
|
|
/**
|
|
* Fetches the module's dates class implementation if it's available.
|
|
*
|
|
* @param string $modname The activity module name. Usually from cm_info::modname.
|
|
* @return string|null
|
|
*/
|
|
private static function get_dates_classname(string $modname): ?string {
|
|
$cmdatesclass = "mod_{$modname}\\dates";
|
|
if (class_exists($cmdatesclass) && is_subclass_of($cmdatesclass, self::class)) {
|
|
return $cmdatesclass;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns a list of important dates for this module.
|
|
*
|
|
* @return array[] Each element of the array is an array with keys:
|
|
* label - The label for the date
|
|
* timestamp - The date
|
|
*/
|
|
abstract protected function get_dates(): array;
|
|
}
|