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); } }