Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Class for exporting plan data.
19
 *
20
 * @package    core_competency
21
 * @copyright  2015 Damyon Wiese
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
namespace core_competency\external;
25
defined('MOODLE_INTERNAL') || die();
26
 
27
use core_user;
28
use renderer_base;
29
use stdClass;
30
use moodle_url;
31
use core_competency\url;
32
use core_comment\external\comment_area_exporter;
33
use core_user\external\user_summary_exporter;
34
 
35
/**
36
 * Class for exporting plan data.
37
 *
38
 * @copyright  2015 Damyon Wiese
39
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
40
 */
41
class plan_exporter extends \core\external\persistent_exporter {
42
 
43
    protected static function define_class() {
44
        return \core_competency\plan::class;
45
    }
46
 
47
    protected static function define_related() {
48
        return array('template' => 'core_competency\\template?');
49
    }
50
 
51
    protected function get_other_values(renderer_base $output) {
52
        $classname = static::define_class();
53
        $status = $this->persistent->get('status');
54
 
55
        $values = new stdClass();
56
 
57
        $values->statusname = $this->persistent->get_statusname();
58
        $values->isbasedontemplate = $this->persistent->is_based_on_template();
59
 
60
        $values->canmanage = $this->persistent->can_manage();
61
        $values->canrequestreview = $this->persistent->can_request_review();
62
        $values->canreview = $this->persistent->can_review();
63
        $values->canbeedited = $this->persistent->can_be_edited();
64
 
65
        $values->isactive = $status == $classname::STATUS_ACTIVE;
66
        $values->isdraft = $status == $classname::STATUS_DRAFT;
67
        $values->iscompleted = $status == $classname::STATUS_COMPLETE;
68
        $values->isinreview = $status == $classname::STATUS_IN_REVIEW;
69
        $values->iswaitingforreview = $status == $classname::STATUS_WAITING_FOR_REVIEW;
70
 
71
        $values->isreopenallowed = $values->canmanage && $values->iscompleted;
72
        $values->iscompleteallowed = $values->canmanage && $values->isactive;
73
        $values->isunlinkallowed = $values->canmanage && !$values->iscompleted && $values->isbasedontemplate;
74
 
75
        $values->isrequestreviewallowed = false;
76
        $values->iscancelreviewrequestallowed = false;
77
        $values->isstartreviewallowed = false;
78
        $values->isstopreviewallowed = false;
79
        $values->isapproveallowed = false;
80
        $values->isunapproveallowed = false;
81
        if (!$values->isbasedontemplate) {
82
            $values->isrequestreviewallowed = $values->canrequestreview && $values->isdraft;
83
            $values->iscancelreviewrequestallowed = $values->canrequestreview && $values->iswaitingforreview;
84
            $values->isstartreviewallowed = $values->canreview && $values->iswaitingforreview;
85
            $values->isstopreviewallowed = $values->canreview && $values->isinreview;
86
            $values->isapproveallowed = $values->canreview && !$values->iscompleted && !$values->isactive;
87
            $values->isunapproveallowed = $values->canreview && $values->isactive;
88
        }
89
 
90
        $values->duedateformatted = userdate($this->persistent->get('duedate'));
91
 
92
        if ($this->persistent->is_based_on_template()) {
93
            $exporter = new template_exporter($this->related['template']);
94
            $values->template = $exporter->export($output);
95
        }
96
 
97
        if (!empty($values->isinreview)) {
98
            // TODO Make this more efficient.
99
            $userexporter = new user_summary_exporter(core_user::get_user($this->persistent->get('reviewerid'), '*', MUST_EXIST));
100
            $values->reviewer = $userexporter->export($output);
101
        }
102
 
103
        $commentareaexporter = new comment_area_exporter($this->persistent->get_comment_object());
104
        $values->commentarea = $commentareaexporter->export($output);
105
        $values->url = url::plan($this->persistent->get('id'))->out(false);
106
 
107
        return (array) $values;
108
    }
109
 
110
    public static function define_other_properties() {
111
        return array(
112
            'statusname' => array(
113
                'type' => PARAM_RAW,
114
            ),
115
            'isbasedontemplate' => array(
116
                'type' => PARAM_BOOL,
117
            ),
118
            'canmanage' => array(
119
                'type' => PARAM_BOOL,
120
            ),
121
            'canrequestreview' => array(
122
                'type' => PARAM_BOOL,
123
            ),
124
            'canreview' => array(
125
                'type' => PARAM_BOOL,
126
            ),
127
            'canbeedited' => array(
128
                'type' => PARAM_BOOL,
129
            ),
130
            'isactive' => array(
131
                'type' => PARAM_BOOL
132
            ),
133
            'isdraft' => array(
134
                'type' => PARAM_BOOL
135
            ),
136
            'iscompleted' => array(
137
                'type' => PARAM_BOOL
138
            ),
139
            'isinreview' => array(
140
                'type' => PARAM_BOOL
141
            ),
142
            'iswaitingforreview' => array(
143
                'type' => PARAM_BOOL
144
            ),
145
            'isreopenallowed' => array(
146
                'type' => PARAM_BOOL
147
            ),
148
            'iscompleteallowed' => array(
149
                'type' => PARAM_BOOL
150
            ),
151
            'isunlinkallowed' => array(
152
                'type' => PARAM_BOOL
153
            ),
154
            'isrequestreviewallowed' => array(
155
                'type' => PARAM_BOOL
156
            ),
157
            'iscancelreviewrequestallowed' => array(
158
                'type' => PARAM_BOOL
159
            ),
160
            'isstartreviewallowed' => array(
161
                'type' => PARAM_BOOL
162
            ),
163
            'isstopreviewallowed' => array(
164
                'type' => PARAM_BOOL
165
            ),
166
            'isapproveallowed' => array(
167
                'type' => PARAM_BOOL
168
            ),
169
            'isunapproveallowed' => array(
170
                'type' => PARAM_BOOL
171
            ),
172
            'duedateformatted' => array(
173
                'type' => PARAM_TEXT
174
            ),
175
            'commentarea' => array(
176
                'type' => comment_area_exporter::read_properties_definition(),
177
            ),
178
            'reviewer' => array(
179
                'type' => user_summary_exporter::read_properties_definition(),
180
                'optional' => true
181
            ),
182
            'template' => array(
183
                'type' => template_exporter::read_properties_definition(),
184
                'optional' => true,
185
            ),
186
            'url' => array(
187
                'type' => PARAM_URL
188
            )
189
        );
190
    }
191
}