Current Path : C:/Users/Mahmood/Desktop/moodle/competency/classes/external/ |
Current File : C:/Users/Mahmood/Desktop/moodle/competency/classes/external/evidence_exporter.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/>. /** * Class for exporting evidence data. * * @package core_competency * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core_competency\external; defined('MOODLE_INTERNAL') || die(); use context_system; use renderer_base; use core_competency\evidence; use core_competency\user_competency; use core_user\external\user_summary_exporter; /** * Class for exporting evidence data. * * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class evidence_exporter extends \core\external\persistent_exporter { /** * Constructor. * * @param mixed $data The data. * @param array $related Array of relateds. */ public function __construct($data, $related = array()) { if (!isset($related['context'])) { // Previous code was automatically using the system context which was not correct. // We let developers know that they must fix their code without breaking anything, and // fallback on the previous behaviour. This should be removed at a later stage: Moodle 3.5. debugging('Missing related context in evidence_exporter.', DEBUG_DEVELOPER); $related['context'] = context_system::instance(); } parent::__construct($data, $related); } protected static function define_related() { return array( 'actionuser' => 'stdClass?', 'context' => 'context', 'scale' => 'grade_scale', 'usercompetency' => 'core_competency\\user_competency?', 'usercompetencyplan' => 'core_competency\\user_competency_plan?', ); } protected static function define_class() { return evidence::class; } protected function get_other_values(renderer_base $output) { $other = array(); if (!empty($this->related['actionuser'])) { $exporter = new user_summary_exporter($this->related['actionuser']); $actionuser = $exporter->export($output); $other['actionuser'] = $actionuser; } $other['description'] = $this->persistent->get_description(); $other['userdate'] = userdate($this->persistent->get('timecreated')); if ($this->persistent->get('grade') === null) { $gradename = '-'; } else { $gradename = $this->related['scale']->scale_items[$this->persistent->get('grade') - 1]; } $other['gradename'] = $gradename; // Try to guess the user from the user competency. $userid = null; if ($this->related['usercompetency']) { $userid = $this->related['usercompetency']->get('userid'); } else if ($this->related['usercompetencyplan']) { $userid = $this->related['usercompetencyplan']->get('userid'); } else { $uc = user_competency::get_record(['id' => $this->persistent->get('usercompetencyid')]); $userid = $uc->get('userid'); } $other['candelete'] = evidence::can_delete_user($userid); return $other; } /** * Get the format parameters for gradename. * * @return array */ protected function get_format_parameters_for_gradename() { return [ 'context' => context_system::instance(), // The system context is cached, so we can get it right away. ]; } public static function define_other_properties() { return array( 'actionuser' => array( 'type' => user_summary_exporter::read_properties_definition(), 'optional' => true ), 'description' => array( 'type' => PARAM_TEXT, // The description may contain course names, etc.. which may need filtering. ), 'gradename' => array( 'type' => PARAM_TEXT, ), 'userdate' => array( 'type' => PARAM_NOTAGS ), 'candelete' => array( 'type' => PARAM_BOOL ) ); } }