Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 55... Línea 55...
55
            ],
55
            ],
56
            'plans' => [
56
            'plans' => [
57
                'singular' => 'plan',
57
                'singular' => 'plan',
58
                'datagenerator' => 'plan',
58
                'datagenerator' => 'plan',
59
                'required' => ['name'],
59
                'required' => ['name'],
60
                'switchids' => ['user' => 'userid'],
60
                'switchids' => ['user' => 'userid', 'status' => 'status'],
-
 
61
            ],
-
 
62
            'plan_competencies' => [
-
 
63
                'singular' => 'plan_competency',
-
 
64
                'datagenerator' => 'plan_competency',
-
 
65
                'required' => ['plan', 'competency'],
-
 
66
                'switchids' => ['competency' => 'competencyid', 'plan' => 'planid'],
61
            ],
67
            ],
62
            'related_competencies' => [
68
            'related_competencies' => [
63
                'singular' => 'related_competency',
69
                'singular' => 'related_competency',
64
                'datagenerator' => 'related_competency',
70
                'datagenerator' => 'related_competency',
65
                'required' => ['competency', 'relatedcompetency'],
71
                'required' => ['competency', 'relatedcompetency'],
Línea 81... Línea 87...
81
                'singular' => 'user_competency_plan',
87
                'singular' => 'user_competency_plan',
82
                'datagenerator' => 'user_competency_plan',
88
                'datagenerator' => 'user_competency_plan',
83
                'required' => ['plan', 'competency', 'user'],
89
                'required' => ['plan', 'competency', 'user'],
84
                'switchids' => ['plan' => 'planid', 'competency' => 'competencyid', 'user' => 'userid'],
90
                'switchids' => ['plan' => 'planid', 'competency' => 'competencyid', 'user' => 'userid'],
85
            ],
91
            ],
-
 
92
            'user_evidence' => [
-
 
93
                'singular' => 'user_evidence',
-
 
94
                'datagenerator' => 'user_evidence',
-
 
95
                'required' => ['user', 'name'],
-
 
96
                'switchids' => ['user' => 'userid'],
-
 
97
            ],
-
 
98
            'user_evidence_competency' => [
-
 
99
                'singular' => 'user_evidence_competency',
-
 
100
                'datagenerator' => 'user_evidence_competency',
-
 
101
                'required' => ['userevidence', 'competency'],
-
 
102
                'switchids' => ['userevidence' => 'userevidenceid', 'competency' => 'competencyid'],
-
 
103
            ],
-
 
104
            'templates' => [
-
 
105
                'singular' => 'template',
-
 
106
                'datagenerator' => 'template',
-
 
107
                'required' => ['shortname'],
-
 
108
                'switchids' => ['context' => 'contextid'],
-
 
109
            ],
-
 
110
            'template_competencies' => [
-
 
111
                'singular' => 'template_competency',
-
 
112
                'datagenerator' => 'template_competency',
-
 
113
                'required' => ['template', 'competency'],
-
 
114
                'switchids' => ['template' => 'templateid', 'competency' => 'competencyid'],
-
 
115
            ],
86
        ];
116
        ];
87
    }
117
    }
Línea 88... Línea 118...
88
 
118
 
89
    /**
119
    /**
90
     * Get the competecy framework id using an idnumber.
120
     * Get the competency framework id using an idnumber.
91
     *
121
     *
92
     * @param string $idnumber
122
     * @param string $idnumber
93
     * @return int The competecy framework id
123
     * @return int The competency framework id
94
     */
124
     */
95
    protected function get_competencyframework_id(string $idnumber): int {
125
    protected function get_competencyframework_id(string $idnumber): int {
Línea 96... Línea 126...
96
        global $DB;
126
        global $DB;
Línea 101... Línea 131...
101
 
131
 
102
        return $id;
132
        return $id;
Línea 103... Línea 133...
103
    }
133
    }
104
 
134
 
105
    /**
135
    /**
106
     * Get the competecy id using an idnumber.
136
     * Get the competency id using an idnumber.
107
     *
137
     *
108
     * @param string $idnumber
138
     * @param string $idnumber
109
     * @return int The competecy id
139
     * @return int The competency id
110
     */
140
     */
Línea 111... Línea 141...
111
    protected function get_competency_id(string $idnumber): int {
141
    protected function get_competency_id(string $idnumber): int {
Línea 133... Línea 163...
133
 
163
 
134
        return $id;
164
        return $id;
Línea 135... Línea 165...
135
    }
165
    }
136
 
166
 
137
    /**
167
    /**
138
     * Get the related competecy id using an idnumber.
168
     * Get the related competency id using an idnumber.
139
     *
169
     *
140
     * @param string $idnumber
170
     * @param string $idnumber
141
     * @return int The related competecy id
171
     * @return int The related competency id
142
     */
172
     */
143
    protected function get_relatedcompetency_id(string $idnumber): int {
173
    protected function get_relatedcompetency_id(string $idnumber): int {
Línea 144... Línea 174...
144
        return $this->get_competency_id($idnumber);
174
        return $this->get_competency_id($idnumber);
-
 
175
    }
-
 
176
 
-
 
177
    /**
-
 
178
     * Get the template id by shortname.
-
 
179
     *
-
 
180
     * @param string $shortname The template name.
-
 
181
     * @return int
-
 
182
     */
-
 
183
    protected function get_template_id(string $shortname): int {
-
 
184
        global $DB;
-
 
185
 
-
 
186
        if (!$id = $DB->get_field('competency_template', 'id', ['shortname' => $shortname])) {
-
 
187
            throw new Exception('The specified template with name "' . $shortname . '" could not be found.');
-
 
188
        }
-
 
189
 
-
 
190
        return $id;
145
    }
191
    }
146
 
192
 
147
    /**
193
    /**
148
     * Add a plan.
194
     * Add a plan.
149
     *
195
     *
Línea 206... Línea 252...
206
     *
252
     *
207
     * @param array $data Raw data.
253
     * @param array $data Raw data.
208
     * @return array Processed data.
254
     * @return array Processed data.
209
     */
255
     */
210
    protected function preprocess_plan(array $data): array {
256
    protected function preprocess_plan(array $data): array {
-
 
257
        global $DB, $USER;
-
 
258
 
211
        if (isset($data['competencies'])) {
259
        if (isset($data['competencies'])) {
212
            $competencies = array_map('trim', str_getcsv($data['competencies']));
260
            $competencies = array_map('trim', str_getcsv($data['competencies'], escape: '\\'));
213
            $data['competencyids'] = array_map([$this, 'get_competency_id'], $competencies);
261
            $data['competencyids'] = array_map([$this, 'get_competency_id'], $competencies);
Línea 214... Línea 262...
214
 
262
 
215
            unset($data['competencies']);
263
            unset($data['competencies']);
Línea -... Línea 264...
-
 
264
        }
-
 
265
 
-
 
266
        if (isset($data['reviewer'])) {
216
        }
267
            if (is_number($data['reviewer'])) {
-
 
268
                $data['reviewerid'] = $data['reviewer'];
-
 
269
            } else {
-
 
270
                if (!$userid = $DB->get_field('user', 'id', ['username' => $data['reviewer']])) {
-
 
271
                    throw new Exception('The specified user "' . $data['reviewer'] . '" could not be found.');
-
 
272
                }
-
 
273
                $data['reviewerid'] = $userid;
-
 
274
            }
Línea 217... Línea 275...
217
 
275
            unset($data['reviewer']);
218
        global $USER;
276
        }
219
 
-
 
220
        return $data + [
277
 
221
            'userid' => $USER->id,
278
        return $data + [
Línea 222... Línea 279...
222
            'status' => plan::STATUS_ACTIVE,
279
            'userid' => $USER->id,
223
        ];
280
        ];
Línea 256... Línea 313...
256
     * @return core_competency_generator Competency data generator.
313
     * @return core_competency_generator Competency data generator.
257
     */
314
     */
258
    protected function get_data_generator(): core_competency_generator {
315
    protected function get_data_generator(): core_competency_generator {
259
        return $this->componentdatagenerator;
316
        return $this->componentdatagenerator;
260
    }
317
    }
-
 
318
 
-
 
319
    /**
-
 
320
     * Get the user evidence id using a name.
-
 
321
     *
-
 
322
     * @param string $name User evidence name.
-
 
323
     * @return int The user evidence id
-
 
324
     */
-
 
325
    protected function get_userevidence_id(string $name): int {
-
 
326
        global $DB;
-
 
327
 
-
 
328
        if (!$id = $DB->get_field('competency_userevidence', 'id', ['name' => $name])) {
-
 
329
            throw new Exception('The specified user evidence with name "' . $name . '" could not be found.');
-
 
330
        }
-
 
331
 
-
 
332
        return $id;
-
 
333
    }
-
 
334
 
-
 
335
    /**
-
 
336
     * Get the template competency id using a name.
-
 
337
     *
-
 
338
     * @param string $name Template competency name.
-
 
339
     * @return int The template competency id
-
 
340
     */
-
 
341
    protected function get_templatecompetency_id(string $name): int {
-
 
342
        global $DB;
-
 
343
 
-
 
344
        if (!$id = $DB->get_field('competency_template', 'id', ['name' => $name])) {
-
 
345
            throw new Exception('The specified template competency with name "' . $name . '" could not be found.');
-
 
346
        }
-
 
347
 
-
 
348
        return $id;
-
 
349
    }
-
 
350
 
-
 
351
    /**
-
 
352
     * Get the context id using a contextid.
-
 
353
     *
-
 
354
     * @param string $contextid Context id.
-
 
355
     * @return int The context id
-
 
356
     */
-
 
357
    protected function get_context_id(string $contextid): int {
-
 
358
        global $DB;
-
 
359
 
-
 
360
        if (!$id = $DB->get_field('context', 'id', ['id' => $contextid])) {
-
 
361
            throw new Exception('The specified context with id "' . $contextid . '" could not be found.');
-
 
362
        }
-
 
363
 
-
 
364
        return $id;
-
 
365
    }
-
 
366
 
-
 
367
    /**
-
 
368
     * Get the status id by status name.
-
 
369
     *
-
 
370
     * @param string $name Status name.
-
 
371
     * @return int
-
 
372
     */
-
 
373
    protected function get_status_id(string $name): int {
-
 
374
 
-
 
375
        switch ($name) {
-
 
376
            case 'draft':
-
 
377
                $status = plan::STATUS_DRAFT;
-
 
378
                break;
-
 
379
            case 'in review':
-
 
380
                $status = plan::STATUS_IN_REVIEW;
-
 
381
                break;
-
 
382
            case 'waiting for review':
-
 
383
                $status = plan::STATUS_WAITING_FOR_REVIEW;
-
 
384
                break;
-
 
385
            case 'complete':
-
 
386
                $status = plan::STATUS_COMPLETE;
-
 
387
                break;
-
 
388
            default:
-
 
389
                $status = plan::STATUS_ACTIVE;
-
 
390
                break;
-
 
391
        }
-
 
392
 
-
 
393
        return $status;
-
 
394
    }
261
}
395
}