<?php // This file is part of the Studyplan plugin for Moodle // // 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 <https://www.gnu.org/licenses/>. /** * * @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); } }