Proyectos de Subversion Moodle

Rev

Rev 1 | Rev 1057 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1052
Línea 11... Línea 11...
11
 
11
 
12
 
12
 
13
 
13
 
14
class block_cursos_catalogo_ajax_external extends \external_api
14
class block_cursos_catalogo_ajax_external extends \external_api
15
{
15
{
16
    
16
 
17
    public static function enrolar_usuario_cursos_catalogo_parameters()
17
    public static function enrolar_usuario_cursos_catalogo_parameters()
18
    {
18
    {
19
        return new \external_function_parameters([
19
        return new \external_function_parameters([
20
            'courseid' => new \external_value(PARAM_INT, 'ID del curso', VALUE_DEFAULT, 0),
20
            'courseid' => new \external_value(PARAM_INT, 'ID del curso', VALUE_DEFAULT, 0),
21
        ]);
21
        ]);
22
    }
22
    }
23
    
23
 
24
    public static function enrolar_usuario_cursos_catalogo($courseid)
24
    public static function enrolar_usuario_cursos_catalogo($courseid)
25
    {
25
    {
26
        global $USER, $DB, $CFG;
26
        global $USER, $DB, $CFG;
27
        
27
 
28
        
28
 
29
        $userid = $USER->id;
29
        $userid = $USER->id;
30
        $course = get_course($courseid);
30
        $course = get_course($courseid);
31
        $enrol = false;
31
        $enrol = false;
32
        
32
 
33
        if(!$course) {
33
        if (!$course) {
34
            return json_encode(['success' => false, 'data' => 'No existe el curso']);
34
            return json_encode(['success' => false, 'data' => 'No existe el curso']);
35
        }
35
        }
36
        
36
 
37
        
37
 
38
        $enrolmethod = 'self';
38
        $enrolmethod = 'self';
39
        
39
 
40
        $instance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => $enrolmethod, 'status' => 0]);
-
 
41
        if(!$instance) {
40
        $instance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => $enrolmethod, 'status' => 0]);
42
            return json_encode(['success' => false, 'data' => 'El curso no permite auto inscribirse']);
-
 
43
            
-
 
44
        }
-
 
45
        
-
 
46
        try { 
-
 
Línea -... Línea 41...
-
 
41
        if (!$instance) {
-
 
42
            return json_encode(['success' => false, 'data' => 'El curso no permite auto inscribirse']);
-
 
43
        }
47
        $user = $DB->get_record('user', ['id' => $userid]);
44
 
-
 
45
        try {
-
 
46
            $user = $DB->get_record('user', ['id' => $userid]);
48
        $role = $DB->get_record('role', array('archetype' => 'student'));
47
            $role = $DB->get_record('role', array('archetype' => 'student'));
49
        $context = context_course::instance($course->id);
48
            $context = context_course::instance($course->id);
50
 
-
 
51
        $context = context_course::instance($course->id);
49
 
52
        if (is_enrolled($context, $user)) {
50
            $context = context_course::instance($course->id);
53
            return json_encode(['success' => true]);
51
            if (is_enrolled($context, $user)) {
54
            
52
                return json_encode(['success' => true]);
55
        } else {
53
            } else {
56
            $enrol = enrol_get_plugin($enrolmethod);
54
                $enrol = enrol_get_plugin($enrolmethod);
57
            if ($enrol === null) {
55
                if ($enrol === null) {
58
                return false;
56
                    return false;
59
            }
57
                }
60
            $instances = enrol_get_instances($course->id, true);
58
                $instances = enrol_get_instances($course->id, true);
61
            $manualinstance = null;
59
                $manualinstance = null;
-
 
60
                foreach ($instances as $instance) {
62
            foreach ($instances as $instance) {
61
                    if ($instance->name == $enrolmethod) {
-
 
62
                        $manualinstance = $instance;
-
 
63
                        break;
-
 
64
                    }
-
 
65
                }
-
 
66
                if ($manualinstance !== null) {
-
 
67
                    $instanceid = $enrol->add_default_instance($course);
-
 
68
                    if ($instanceid === null) {
-
 
69
                        $instanceid = $enrol->add_instance($course);
63
                if ($instance->name == $enrolmethod) {
70
                    }
64
                    $manualinstance = $instance;
-
 
65
                    break;
-
 
66
                }
-
 
67
            }
-
 
68
            if ($manualinstance !== null) {
-
 
69
                $instanceid = $enrol->add_default_instance($course);
-
 
70
                if ($instanceid === null) {
-
 
71
                    $instanceid = $enrol->add_instance($course);
-
 
72
                }
-
 
73
                $instance = $DB->get_record('enrol', array('id' => $instanceid));
71
                    $instance = $DB->get_record('enrol', array('id' => $instanceid));
74
            }
72
                }
75
            $enrol->enrol_user($instance, $user->id, $role->id);
-
 
76
        }
73
                $enrol->enrol_user($instance, $user->id, $role->id);
77
   
74
            }
78
        return json_encode(['success' => true]);
75
 
79
        
76
            return json_encode(['success' => true]);
80
        } catch(\Exception $e) {
77
        } catch (\Exception $e) {
81
            error_log($e->getTraceAsString());
-
 
82
            
-
 
83
            return json_encode(['success' => false, 'data' => $e->getMessage()]);
-
 
84
        }
-
 
85
        
78
            error_log($e->getTraceAsString());
86
        
79
 
87
        
80
            return json_encode(['success' => false, 'data' => $e->getMessage()]);
88
       
81
        }
89
    }
82
    }
90
    
83
 
91
    
-
 
92
    public static function enrolar_usuario_cursos_catalogo_returns()
84
 
93
    {
85
    public static function enrolar_usuario_cursos_catalogo_returns()
94
        return new \external_value(PARAM_RAW, 'The updated JSON output');
86
    {
95
        
87
        return new \external_value(PARAM_RAW, 'The updated JSON output');
96
    }
88
    }
97
    
89
 
98
    
90
 
99
    
91
 
100
    public static function get_cursos_catalogo_parameters()
92
    public static function get_cursos_catalogo_parameters()
101
    {
93
    {
102
        return new \external_function_parameters([
94
        return new \external_function_parameters([
Línea 103... Línea 95...
103
            'category_id' => new \external_value(PARAM_INT, 'Categoría de los Cursos', VALUE_DEFAULT, 0),
95
            'category_id' => new \external_value(PARAM_INT, 'Categoría de los Cursos', VALUE_DEFAULT, 0),
104
            'search_text' => new \external_value(PARAM_ALPHANUM, 'Palabra de busqueda', VALUE_DEFAULT, ' ' ),
96
            'search_text' => new \external_value(PARAM_ALPHANUM, 'Palabra de busqueda', VALUE_DEFAULT, ' '),
Línea 105... Línea 97...
105
        ]);
97
        ]);
106
    }
98
    }
107
 
99
 
Línea 108... Línea 100...
108
    public static function get_cursos_catalogo($category_id, $search_text)
100
    public static function get_cursos_catalogo($category_id, $search_text)
109
    {
101
    {
Línea 110... Línea 102...
110
 
102
 
111
        
103
 
112
        global $USER, $DB, $CFG, $OUTPUT, $PAGE;
104
        global $USER, $DB, $CFG, $OUTPUT, $PAGE;
113
        
-
 
114
 
105
 
115
 
106
 
116
        $userid = $USER->id;
107
 
117
        $url_noimage =  $CFG->wwwroot . '/theme/' . $PAGE->theme->name . '/pix/coursenoimage.jpg';
108
        $userid = $USER->id;
118
 
109
        $url_noimage =  $CFG->wwwroot . '/theme/' . $PAGE->theme->name . '/pix/coursenoimage.jpg';
119
        $is_admin = false;
110
 
120
        $admins = get_admins();
111
        $is_admin = false;
121
        foreach($admins as $admin)
112
        $admins = get_admins();
122
        {
113
        foreach ($admins as $admin) {
123
            if($USER->id == $admin->id) {
-
 
124
                $is_admin = true;
114
            if ($USER->id == $admin->id) {
125
                break;
115
                $is_admin = true;
126
            }
116
                break;
127
        }
117
            }
128
        
118
        }
129
        $all_categories = [];
119
 
130
        $records = $DB->get_records('course_categories', ['visible' => 1], 'sortorder, name');
120
        $all_categories = [];
131
        foreach($records as $record)
121
        $records = $DB->get_records('course_categories', ['visible' => 1], 'sortorder, name');
132
        {
122
        foreach ($records as $record) {
133
            $all_categories[ $record->id ] = $record;
123
            $all_categories[$record->id] = $record;
134
        }
-
 
Línea -... Línea 124...
-
 
124
        }
135
        
125
 
136
        
126
 
137
        $categories_ids = [];
127
        $categories_ids = [];
138
        $category_filter_active = false;
128
        $category_filter_active = false;
139
        if($category_id) {
129
        if ($category_id) {
140
            $category_filter_active = true;
130
            $category_filter_active = true;
141
            
131
 
142
            $recordLevel0 = $DB->get_record('course_categories', ['id' => $category_id]);
132
            $recordLevel0 = $DB->get_record('course_categories', ['id' => $category_id]);
143
            
-
 
144
 
133
 
145
            if($recordLevel0) {
134
 
146
                array_push( $categories_ids, $recordLevel0->id );
135
            if ($recordLevel0) {
147
                
136
                array_push($categories_ids, $recordLevel0->id);
148
                
137
 
149
                
-
 
150
                $recordsLevel1 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel0->id]);
138
 
151
                
139
 
152
                foreach($recordsLevel1 as $recordLevel1)
140
                $recordsLevel1 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel0->id]);
153
                {
141
 
154
                    
-
 
155
                    array_push( $categories_ids, $recordLevel1->id );
142
                foreach ($recordsLevel1 as $recordLevel1) {
156
                    
143
 
157
                    $recordsLevel2 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel1->id]);
144
                    array_push($categories_ids, $recordLevel1->id);
158
                    foreach($recordsLevel2 as $recordLevel2)
145
 
159
                    {
146
                    $recordsLevel2 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel1->id]);
160
                        array_push( $categories_ids, $recordLevel2->id );
-
 
161
                        
147
                    foreach ($recordsLevel2 as $recordLevel2) {
Línea 162... Línea 148...
162
                        $recordsLevel3 = $DB->get_records('course_categories', ['visible' => 2, 'parent' => $recordLevel2->id]);
148
                        array_push($categories_ids, $recordLevel2->id);
163
                        foreach($recordsLevel3 as $recordLevel3)
149
 
164
                        {
150
                        $recordsLevel3 = $DB->get_records('course_categories', ['visible' => 2, 'parent' => $recordLevel2->id]);
165
                            array_push( $categories_ids, $recordLevel3->id );
151
                        foreach ($recordsLevel3 as $recordLevel3) {
166
                        }
152
                            array_push($categories_ids, $recordLevel3->id);
167
                    }
153
                        }
168
                }
154
                    }
169
            }
155
                }
170
 
156
            }
171
        }
157
        }
172
 
158
 
173
        
159
 
174
                
-
 
Línea -... Línea 160...
-
 
160
 
175
        $course_ids                 = [];
161
        $course_ids                 = [];
176
        $course_category_ids        = [];
-
 
177
        $courseAvailableForAutoRol  = [];
162
        $course_category_ids        = [];
178
        
163
        $courseAvailableForAutoRol  = [];
179
        
164
 
180
        if($is_admin) {
165
 
181
            $mycourses = get_courses();
166
        if ($is_admin) {
182
        } else {
167
            $mycourses = get_courses();
183
            $mycourses  = enrol_get_users_courses($USER->id);
168
        } else {
184
        }
169
            $mycourses  = enrol_get_users_courses($USER->id);
185
        
170
        }
186
 
171
 
187
 
172
 
188
        foreach ($mycourses as $course)
173
 
189
        {
174
        foreach ($mycourses as $course) {
190
            if(!$course->visible) {
175
            if (!$course->visible) {
191
                continue;
176
                continue;
192
            }
177
            }
193
            
-
 
194
            if($search_text) {
-
 
195
                if(stripos($course->fullname, $search_text) === false) {
-
 
Línea 196... Línea 178...
196
                    continue;
178
 
-
 
179
            if ($search_text) {
197
                }
180
                if (stripos($course->fullname, $search_text) === false) {
198
            }
181
                    continue;
199
            
182
                }
200
            
183
            }
201
            if($category_filter_active) {
-
 
202
                if(!in_array($course->category, $categories_ids)) {
184
 
203
                    continue;
185
 
204
                }
186
            if ($category_filter_active) {
205
            }
187
                if (!in_array($course->category, $categories_ids)) {
206
 
188
                    continue;
207
            
189
                }
208
            array_push($course_ids, $course->id);
190
            }
209
 
191
 
210
            
192
 
211
        }
193
            array_push($course_ids, $course->id);
212
        
194
        }
213
        $courses_with_autoenrol  = $DB->get_records('enrol', ['enrol' => 'self', 'status' => 0]);
195
 
214
        foreach($courses_with_autoenrol as $course_with_autoenrol)
196
        $courses_with_autoenrol  = $DB->get_records('enrol', ['enrol' => 'self', 'status' => 0]);
215
        {
197
        foreach ($courses_with_autoenrol as $course_with_autoenrol) {
216
            $course = get_course($course_with_autoenrol->courseid);
198
            $course = get_course($course_with_autoenrol->courseid);
217
            if(!$course->visible) {
199
            if (!$course->visible) {
218
                continue;
200
                continue;
219
            }
201
            }
220
            
202
 
221
            if($search_text) {
203
            if ($search_text) {
222
                if(stripos($course_with_autoenrol->fullname, $search_text) === false) {
-
 
Línea -... Línea 204...
-
 
204
                if (stripos($course_with_autoenrol->fullname, $search_text) === false) {
223
                    continue;
205
                    continue;
224
                }
206
                }
225
            }
207
            }
226
            
208
 
227
            if($category_filter_active) {
-
 
228
                if(!in_array($course->category, $categories_ids)) {
209
            if ($category_filter_active) {
229
                    continue;
210
                if (!in_array($course->category, $categories_ids)) {
230
                }
211
                    continue;
231
            }
212
                }
232
            
213
            }
233
            array_push($course_ids, $course->id);
214
 
234
            array_push($courseAvailableForAutoRol, $course->id);
215
            array_push($course_ids, $course->id);
235
        }
216
            array_push($courseAvailableForAutoRol, $course->id);
236
        
217
        }
237
 
218
 
238
 
219
 
239
 
220
 
240
        
221
 
241
        
222
 
242
        $courses = [];
223
 
243
        foreach ($course_ids as $course_id) 
-
 
244
        {
224
        $courses = [];
245
            $course = get_course($course_id);
225
        foreach ($course_ids as $course_id) {
246
            
226
            $course = get_course($course_id);
247
            if ($course instanceof stdClass) {
227
 
248
                $coreCourseList = new core_course_list_element($course);
228
            if ($course instanceof stdClass) {
249
            }
229
                $coreCourseList = new core_course_list_element($course);
250
            
230
            }
251
            if(!in_array($course->category, $course_category_ids)) {
231
 
252
 
232
            if (!in_array($course->category, $course_category_ids)) {
253
                
233
 
254
                array_push($course_category_ids, $course->category);
234
 
255
            }
235
                array_push($course_category_ids, $course->category);
256
            
236
            }
257
            
237
 
258
            $image = $url_noimage;
238
 
259
            foreach ($coreCourseList->get_course_overviewfiles() as $file)
239
            $image = $url_noimage;
Línea 260... Línea 240...
260
            {
240
            foreach ($coreCourseList->get_course_overviewfiles() as $file) {
261
                $isimage = $file->is_valid_image();
241
                $isimage = $file->is_valid_image();
262
                $image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage);
242
                $image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage);
263
                if (!$isimage) {
243
                if (!$isimage) {
264
                    $image = $url_noimage;
-
 
265
                }
244
                    $image = $url_noimage;
266
            }
245
                }
267
            
246
            }
268
            $lastaccess = null;
247
 
269
            $sql = "select timecreated  from {logstore_standard_log} where courseid  = :courseid and userid  = :userid " . 
248
            $lastaccess = null;
270
                "  and eventname  = '\\\\core\\\\event\\\\course_viewed' order by id desc limit 1 ";
249
            $sql = "select timecreated  from {logstore_standard_log} where courseid  = :courseid and userid  = :userid " .
271
                
250
                "order by id desc limit 1 ";
272
            $timecreated = $DB->get_field_sql($sql,  array('courseid' => $course->id, 'userid' => $userid));
251
 
Línea 273... Línea 252...
273
            if($timecreated) {
252
            $timecreated = $DB->get_field_sql($sql,  array('courseid' => $course->id, 'userid' => $userid));
274
                
253
            if ($timecreated) {
Línea 296... Línea 275...
296
                    break;
275
                    break;
297
                }
276
                }
298
            }
277
            }
Línea 299... Línea 278...
299
 
278
 
300
            if (has_capability('moodle/course:manageactivities', $course_context, $USER->id) || has_capability('moodle/course:viewhiddenactivities', $course_context, $USER->id) || $completion_edit_curso) {
279
            if (has_capability('moodle/course:manageactivities', $course_context, $USER->id) || has_capability('moodle/course:viewhiddenactivities', $course_context, $USER->id) || $completion_edit_curso) {
301
                $editurl = $CFG->wwwroot . '/course/view.php?id='.$course->id.'&notifyeditingon=1';
280
                $editurl = $CFG->wwwroot . '/course/view.php?id=' . $course->id . '&notifyeditingon=1';
302
            } else {
281
            } else {
303
                $editurl = '';
282
                $editurl = '';
Línea 304... Línea 283...
304
            }
283
            }
305
 
284
 
306
            
285
 
307
            $modules = get_fast_modinfo($course->id)->get_cms();
286
            $modules = get_fast_modinfo($course->id)->get_cms();
308
            
287
 
309
            $linkurl = '';
-
 
310
            foreach ($modules as $module)
288
            $linkurl = '';
311
            {
289
            foreach ($modules as $module) {
312
                if (!$module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {
290
                if (!$module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {
313
                    continue;
291
                    continue;
314
                }
292
                }
315
                
293
 
316
                if($module->section == $first_section || $completion_edit_curso) {
294
                if ($module->section == $first_section || $completion_edit_curso) {
317
                    $linkurl =  new moodle_url($module->url, array('forceview' => 1));
295
                    $linkurl =  new moodle_url($module->url, array('forceview' => 1));
318
                    break;
296
                    break;
319
                }
297
                }
320
            }
298
            }
321
            
299
 
322
            $summary = trim(strip_tags($course->summary));
300
            $summary = trim(strip_tags($course->summary));
323
            
301
 
324
            if(empty($summary)) {
302
            if (empty($summary)) {
325
                $summary = '<p></p>';
303
                $summary = '<p></p>';
326
            } else if(strlen($summary) > 80) {
304
            } else if (strlen($summary) > 80) {
327
                
305
 
Línea 328... Línea 306...
328
                $summary =  substr($summary, 0, 80) . '...';
306
                $summary =  substr($summary, 0, 80) . '...';
329
            } 
307
            }
330
 
308
 
331
            if(empty($editurl) && in_array($course->id, $courseAvailableForAutoRol)) {
309
            if (empty($editurl) && in_array($course->id, $courseAvailableForAutoRol)) {
332
                $autoenrol = 'yes';
310
                $autoenrol = 'yes';
333
            } else {
311
            } else {
334
                $autoenrol = '';
312
                $autoenrol = '';
335
            } 
313
            }
336
            
314
 
337
            
315
 
338
            $category = $all_categories[$course->category];
316
            $category = $all_categories[$course->category];
339
            if($category->parent) {
317
            if ($category->parent) {
340
                $categoryParent = $all_categories[$category->parent];
318
                $categoryParent = $all_categories[$category->parent];
341
                if($categoryParent) {
319
                if ($categoryParent) {
342
                    $categoryName = $categoryParent->name . ' / ' . $category->name;
320
                    $categoryName = $categoryParent->name . ' / ' . $category->name;
343
                } else {
321
                } else {
344
                    $categoryName = $category->name;
322
                    $categoryName = $category->name;
345
                }
323
                }
346
            } else {
324
            } else {
347
                $categoryName =  $category->name;
325
                $categoryName =  $category->name;
348
            }
326
            }
349
            if(strlen($categoryName) > 40) {
327
            if (strlen($categoryName) > 40) {
-
 
328
 
-
 
329
                $categoryName =  substr($categoryName, 0, 40) . '...';
-
 
330
            }
-
 
331
 
-
 
332
 
Línea 350... Línea -...
350
                
-
 
351
                $categoryName =  substr($categoryName, 0, 40) . '...';
-
 
352
            } 
-
 
353
 
-
 
354
            
-
 
Línea 355... Línea 333...
355
           // echo '<pre>';
333
            // echo '<pre>';
356
           // echo '$categoryName = ' . $categoryName . ' $course->category = ' . $course->category;
334
            // echo '$categoryName = ' . $categoryName . ' $course->category = ' . $course->category;
357
           // echo '</pre>';
335
            // echo '</pre>';
358
            
336
 
Línea 378... Línea 356...
378
                'editurl' => $editurl,
356
                'editurl' => $editurl,
379
                'autoenrol' => $autoenrol,
357
                'autoenrol' => $autoenrol,
380
                'visible' => true,
358
                'visible' => true,
381
            ]);
359
            ]);
382
        }
360
        }
383
        
-
 
384
        usort($courses, function($a, $b) { return $a['fullname'] <=> $b['fullname']; });
-
 
385
        
-
 
386
        
-
 
Línea -... Línea 361...
-
 
361
 
-
 
362
        usort($courses, function ($a, $b) {
-
 
363
            return $a['fullname'] <=> $b['fullname'];
387
 
364
        });
-
 
365
 
-
 
366
 
-
 
367
 
388
      
368
 
389
        $categories = [];
369
        $categories = [];
390
        foreach($course_category_ids as $course_category_id)
-
 
391
        {
370
        foreach ($course_category_ids as $course_category_id) {
392
            $category = $all_categories[$course_category_id];
371
            $category = $all_categories[$course_category_id];
393
            if($category) {
372
            if ($category) {
394
                array_push($categories, ['id' => $category->id, 'name' => $category->name ]);
373
                array_push($categories, ['id' => $category->id, 'name' => $category->name]);
395
            }
374
            }
396
        }
375
        }
397
        
376
 
398
        
377
 
399
       
378
 
400
        
379
 
401
        
380
 
402
        $data = [
381
        $data = [
403
            'courses' => $courses 
382
            'courses' => $courses
404
        ]; 
383
        ];
405
        
384
 
406
        $cards = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/cards', $data);
385
        $cards = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/cards', $data);
407
        
386
 
408
        $data = [
387
        $data = [
409
            'categories' => $categories
388
            'categories' => $categories
410
        ];
389
        ];
411
        
390
 
412
        $badges = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/badges', $data);
-
 
Línea 413... Línea -...
413
        
-
 
Línea -... Línea 391...
-
 
391
        $badges = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/badges', $data);
414
 
392
 
415
        return json_encode(['success' => true, 'search_text' => $search_text, 'category_id' => $category_id,  'cards' => $cards, 'badges' => $badges]);
393
 
Línea 416... Línea 394...
416
 
394
        return json_encode(['success' => true, 'search_text' => $search_text, 'category_id' => $category_id,  'cards' => $cards, 'badges' => $badges]);
417
    }
395
    }
418
    
396
 
419
 
-
 
420
    public static function get_cursos_catalogo_returns()
397
 
421
    {
-
 
422
        return new \external_value(PARAM_RAW, 'The updated JSON output');
-
 
423
 
-
 
424
    }
-
 
425
 
-
 
426
    
-
 
427
    
-
 
428
    
-
 
429
    
398
    public static function get_cursos_catalogo_returns()