Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/monara/public_html/test.athavaneng.com/themes.php on line 99
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 226
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 227
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 228
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 229
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 230
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 231
.
/**
* 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
* @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
* @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
*/
protected abstract function get_dates(): array;
}