Current Path : C:/xampp/htdocs/moodle/competency/classes/external/ |
Current File : C:/xampp/htdocs/moodle/competency/classes/external/plan_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 plan 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 core_user; use renderer_base; use stdClass; use moodle_url; use core_competency\url; use core_comment\external\comment_area_exporter; use core_user\external\user_summary_exporter; /** * Class for exporting plan data. * * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class plan_exporter extends \core\external\persistent_exporter { protected static function define_class() { return \core_competency\plan::class; } protected static function define_related() { return array('template' => 'core_competency\\template?'); } protected function get_other_values(renderer_base $output) { $classname = static::define_class(); $status = $this->persistent->get('status'); $values = new stdClass(); $values->statusname = $this->persistent->get_statusname(); $values->isbasedontemplate = $this->persistent->is_based_on_template(); $values->canmanage = $this->persistent->can_manage(); $values->canrequestreview = $this->persistent->can_request_review(); $values->canreview = $this->persistent->can_review(); $values->canbeedited = $this->persistent->can_be_edited(); $values->isactive = $status == $classname::STATUS_ACTIVE; $values->isdraft = $status == $classname::STATUS_DRAFT; $values->iscompleted = $status == $classname::STATUS_COMPLETE; $values->isinreview = $status == $classname::STATUS_IN_REVIEW; $values->iswaitingforreview = $status == $classname::STATUS_WAITING_FOR_REVIEW; $values->isreopenallowed = $values->canmanage && $values->iscompleted; $values->iscompleteallowed = $values->canmanage && $values->isactive; $values->isunlinkallowed = $values->canmanage && !$values->iscompleted && $values->isbasedontemplate; $values->isrequestreviewallowed = false; $values->iscancelreviewrequestallowed = false; $values->isstartreviewallowed = false; $values->isstopreviewallowed = false; $values->isapproveallowed = false; $values->isunapproveallowed = false; if (!$values->isbasedontemplate) { $values->isrequestreviewallowed = $values->canrequestreview && $values->isdraft; $values->iscancelreviewrequestallowed = $values->canrequestreview && $values->iswaitingforreview; $values->isstartreviewallowed = $values->canreview && $values->iswaitingforreview; $values->isstopreviewallowed = $values->canreview && $values->isinreview; $values->isapproveallowed = $values->canreview && !$values->iscompleted && !$values->isactive; $values->isunapproveallowed = $values->canreview && $values->isactive; } $values->duedateformatted = userdate($this->persistent->get('duedate')); if ($this->persistent->is_based_on_template()) { $exporter = new template_exporter($this->related['template']); $values->template = $exporter->export($output); } if (!empty($values->isinreview)) { // TODO Make this more efficient. $userexporter = new user_summary_exporter(core_user::get_user($this->persistent->get('reviewerid'), '*', MUST_EXIST)); $values->reviewer = $userexporter->export($output); } $commentareaexporter = new comment_area_exporter($this->persistent->get_comment_object()); $values->commentarea = $commentareaexporter->export($output); $values->url = url::plan($this->persistent->get('id'))->out(false); return (array) $values; } public static function define_other_properties() { return array( 'statusname' => array( 'type' => PARAM_RAW, ), 'isbasedontemplate' => array( 'type' => PARAM_BOOL, ), 'canmanage' => array( 'type' => PARAM_BOOL, ), 'canrequestreview' => array( 'type' => PARAM_BOOL, ), 'canreview' => array( 'type' => PARAM_BOOL, ), 'canbeedited' => array( 'type' => PARAM_BOOL, ), 'isactive' => array( 'type' => PARAM_BOOL ), 'isdraft' => array( 'type' => PARAM_BOOL ), 'iscompleted' => array( 'type' => PARAM_BOOL ), 'isinreview' => array( 'type' => PARAM_BOOL ), 'iswaitingforreview' => array( 'type' => PARAM_BOOL ), 'isreopenallowed' => array( 'type' => PARAM_BOOL ), 'iscompleteallowed' => array( 'type' => PARAM_BOOL ), 'isunlinkallowed' => array( 'type' => PARAM_BOOL ), 'isrequestreviewallowed' => array( 'type' => PARAM_BOOL ), 'iscancelreviewrequestallowed' => array( 'type' => PARAM_BOOL ), 'isstartreviewallowed' => array( 'type' => PARAM_BOOL ), 'isstopreviewallowed' => array( 'type' => PARAM_BOOL ), 'isapproveallowed' => array( 'type' => PARAM_BOOL ), 'isunapproveallowed' => array( 'type' => PARAM_BOOL ), 'duedateformatted' => array( 'type' => PARAM_TEXT ), 'commentarea' => array( 'type' => comment_area_exporter::read_properties_definition(), ), 'reviewer' => array( 'type' => user_summary_exporter::read_properties_definition(), 'optional' => true ), 'template' => array( 'type' => template_exporter::read_properties_definition(), 'optional' => true, ), 'url' => array( 'type' => PARAM_URL ) ); } }