. /** * * @package local_treestudyplan * @copyright 2023 P.M. Kuipers * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace local_treestudyplan; class contextinfo { public $context; public function __construct($context) { $this->context = $context; } public static function structure($value=VALUE_REQUIRED) { return new \external_single_structure([ "name" => new \external_value(PARAM_TEXT, 'context name'), "shortname" => new \external_value(PARAM_TEXT, 'context short name'), "path" => new \external_multiple_structure( new \external_value(PARAM_TEXT)), "shortpath" => new \external_multiple_structure( new \external_value(PARAM_TEXT)), ], 'context information', $value); } public function model() { $ctxPath = array_reverse($this->context->get_parent_context_ids(true)); if (count($ctxPath) > 1 && $ctxPath[0] == 1) { array_shift($ctxPath); } return [ "name" => $this->context->get_context_name(false, false), "shortname" => $this->context->get_context_name(false, true), "path" => array_map(function($c) { return \context::instance_by_id($c)->get_context_name(false, false);}, $ctxPath), "shortpath" => array_map(function($c) { return \context::instance_by_id($c)->get_context_name(false, true);}, $ctxPath), ]; } public static function by_id($contextid): self { return new self(self::context_by_id($contextid)); } public static function context_by_id($contextid): \context { if ($contextid <= 1) { $contextid = 1; } return \context::instance_by_id($contextid); } }