Proyectos de Subversion Moodle

Rev

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

Rev 1129 Rev 1130
Línea 2... Línea 2...
2
defined('MOODLE_INTERNAL') || die();
2
defined('MOODLE_INTERNAL') || die();
Línea 3... Línea 3...
3
 
3
 
Línea 4... Línea 4...
4
use core_completion\progress;
4
use core_completion\progress;
5
 
5
 
6
global $CFG;
6
global $CFG;
7
require_once $CFG->libdir  . '/externallib.php';
7
require_once $CFG->libdir . '/externallib.php';
8
require_once $CFG->dirroot . '/course/classes/category.php';
8
require_once $CFG->dirroot . '/course/classes/category.php';
Línea 9... Línea -...
9
require_once $CFG->dirroot . '/blocks/moodleblock.class.php';
-
 
10
require_once $CFG->dirroot . '/blocks/course_list/block_course_list.php';
-
 
11
 
9
require_once $CFG->dirroot . '/blocks/moodleblock.class.php';
12
 
10
require_once $CFG->dirroot . '/blocks/course_list/block_course_list.php';
Línea 13... Línea 11...
13
 
11
 
14
class block_cursos_catalogo_ajax_external extends \external_api
12
class block_cursos_catalogo_ajax_external extends \external_api
15
{
13
{
16
 
14
 
17
    public static function enrolar_usuario_cursos_catalogo_parameters()
15
    public static function enrolar_usuario_cursos_catalogo_parameters()
18
    {
16
    {
Línea 19... Línea 17...
19
        return new \external_function_parameters([
17
        return new \external_function_parameters([
20
            'courseid' => new \external_value(PARAM_INT, 'ID del curso', VALUE_DEFAULT, 0),
18
            'courseid' => new \external_value(PARAM_INT, 'ID del curso', VALUE_DEFAULT, 0)
21
        ]);
19
        ]);
Línea 22... Línea -...
22
    }
-
 
23
 
20
    }
24
    public static function enrolar_usuario_cursos_catalogo($courseid)
21
 
25
    {
22
    public static function enrolar_usuario_cursos_catalogo($courseid)
Línea 26... Línea 23...
26
        global $USER, $DB, $CFG;
23
    {
-
 
24
        global $USER, $DB, $CFG;
-
 
25
 
27
 
26
        $userid = $USER->id;
-
 
27
        $course = get_course($courseid);
28
 
28
        $enrol = false;
Línea 29... Línea -...
29
        $userid = $USER->id;
-
 
30
        $course = get_course($courseid);
29
 
Línea 31... Línea 30...
31
        $enrol = false;
30
        if (! $course) {
-
 
31
            return json_encode([
-
 
32
                'success' => false,
-
 
33
                'data' => 'No existe el curso'
-
 
34
            ]);
32
 
35
        }
-
 
36
 
-
 
37
        $enrolmethod = 'self';
33
        if (!$course) {
38
 
-
 
39
        $instance = $DB->get_record('enrol', [
34
            return json_encode(['success' => false, 'data' => 'No existe el curso']);
40
            'courseid' => $course->id,
Línea 35... Línea 41...
35
        }
41
            'enrol' => $enrolmethod,
36
 
42
            'status' => 0
-
 
43
        ]);
-
 
44
        if (! $instance) {
37
 
45
            return json_encode([
-
 
46
                'success' => false,
-
 
47
                'data' => 'El curso no permite auto inscribirse'
38
        $enrolmethod = 'self';
48
            ]);
Línea 39... Línea 49...
39
 
49
        }
40
        $instance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => $enrolmethod, 'status' => 0]);
50
 
41
        if (!$instance) {
51
        try {
-
 
52
            $user = $DB->get_record('user', [
-
 
53
                'id' => $userid
42
            return json_encode(['success' => false, 'data' => 'El curso no permite auto inscribirse']);
54
            ]);
43
        }
55
            $role = $DB->get_record('role', array(
44
 
56
                'archetype' => 'student'
45
        try {
57
            ));
46
            $user = $DB->get_record('user', ['id' => $userid]);
58
            $context = context_course::instance($course->id);
Línea 66... Línea 78...
66
                if ($manualinstance !== null) {
78
                if ($manualinstance !== null) {
67
                    $instanceid = $enrol->add_default_instance($course);
79
                    $instanceid = $enrol->add_default_instance($course);
68
                    if ($instanceid === null) {
80
                    if ($instanceid === null) {
69
                        $instanceid = $enrol->add_instance($course);
81
                        $instanceid = $enrol->add_instance($course);
70
                    }
82
                    }
71
                    $instance = $DB->get_record('enrol', array('id' => $instanceid));
83
                    $instance = $DB->get_record('enrol', array(
-
 
84
                        'id' => $instanceid
-
 
85
                    ));
72
                }
86
                }
73
                $enrol->enrol_user($instance, $user->id, $role->id);
87
                $enrol->enrol_user($instance, $user->id, $role->id);
74
            }
88
            }
Línea 75... Línea 89...
75
 
89
 
-
 
90
            return json_encode([
-
 
91
                'success' => true
76
            return json_encode(['success' => true]);
92
            ]);
77
        } catch (\Exception $e) {
93
        } catch (\Exception $e) {
Línea -... Línea 94...
-
 
94
            error_log($e->getTraceAsString());
-
 
95
 
78
            error_log($e->getTraceAsString());
96
            return json_encode([
-
 
97
                'success' => false,
79
 
98
                'data' => $e->getMessage()
80
            return json_encode(['success' => false, 'data' => $e->getMessage()]);
99
            ]);
Línea 81... Línea -...
81
        }
-
 
82
    }
100
        }
83
 
101
    }
84
 
102
 
85
    public static function enrolar_usuario_cursos_catalogo_returns()
103
    public static function enrolar_usuario_cursos_catalogo_returns()
Línea 86... Línea -...
86
    {
-
 
87
        return new \external_value(PARAM_RAW, 'The updated JSON output');
-
 
88
    }
104
    {
89
 
105
        return new \external_value(PARAM_RAW, 'The updated JSON output');
90
 
106
    }
91
 
107
 
92
    public static function get_cursos_catalogo_parameters()
108
    public static function get_cursos_catalogo_parameters()
93
    {
109
    {
94
        return new \external_function_parameters([
110
        return new \external_function_parameters([
95
            'category_id' => new \external_value(PARAM_INT, 'Categoría de los Cursos', VALUE_DEFAULT, 0),
111
            'category_id' => new \external_value(PARAM_INT, 'Categoría de los Cursos', VALUE_DEFAULT, 0),
96
            'search_text' => new \external_value(PARAM_ALPHANUM, 'Palabra de busqueda', VALUE_DEFAULT, ' '),
112
            'search_text' => new \external_value(PARAM_ALPHANUM, 'Palabra de busqueda', VALUE_DEFAULT, ' '),
Línea 97... Línea 113...
97
            'page' => new \external_value(PARAM_INT, 'Número de página', VALUE_DEFAULT, 1),
113
            'page' => new \external_value(PARAM_INT, 'Número de página', VALUE_DEFAULT, 1),
98
            'perpage' => new \external_value(PARAM_INT, 'Cursos por página', VALUE_DEFAULT, 10),
114
            'perpage' => new \external_value(PARAM_INT, 'Cursos por página', VALUE_DEFAULT, 10)
99
        ]);
-
 
100
    }
115
        ]);
Línea 101... Línea -...
101
 
-
 
102
    public static function get_cursos_catalogo($category_id, $search_text, $page = 1, $perpage = 10)
-
 
103
    {
116
    }
104
 
-
 
Línea 105... Línea 117...
105
        global $USER, $DB, $CFG, $OUTPUT, $PAGE;
117
 
106
 
118
    public static function get_cursos_catalogo($category_id, $search_text, $page = 1, $perpage = 10)
Línea 107... Línea 119...
107
        $params = self::validate_parameters(
119
    {
108
            self::get_cursos_catalogo_parameters(),
120
        global $USER, $DB, $CFG, $OUTPUT, $PAGE;
Línea 109... Línea 121...
109
            compact('category_id', 'search_text', 'page', 'perpage')
121
 
110
        );
122
        $params = self::validate_parameters(self::get_cursos_catalogo_parameters(), compact('category_id', 'search_text', 'page', 'perpage'));
111
 
123
 
112
        $page = max(1, $params['page']);
124
        $page = max(1, $params['page']);
Línea 123... Línea 135...
123
                break;
135
                break;
124
            }
136
            }
125
        }
137
        }
Línea 126... Línea 138...
126
 
138
 
127
        $all_categories = [];
139
        $all_categories = [];
-
 
140
        $records = $DB->get_records('course_categories', [
-
 
141
            'visible' => 1
128
        $records = $DB->get_records('course_categories', ['visible' => 1], 'sortorder, name');
142
        ], 'sortorder, name');
129
        foreach ($records as $record) {
143
        foreach ($records as $record) {
130
            $all_categories[$record->id] = $record;
144
            $all_categories[$record->id] = $record;
Línea 131... Línea 145...
131
        }
145
        }
132
 
146
 
133
        $categories_ids = [];
147
        $categories_ids = [];
134
        $category_filter_active = false;
148
        $category_filter_active = false;
Línea 135... Línea 149...
135
        if ($category_id) {
149
        if ($category_id) {
-
 
150
            $category_filter_active = true;
-
 
151
 
Línea 136... Línea 152...
136
            $category_filter_active = true;
152
            $recordLevel0 = $DB->get_record('course_categories', [
137
 
153
                'id' => $category_id
Línea 138... Línea 154...
138
            $recordLevel0 = $DB->get_record('course_categories', ['id' => $category_id]);
154
            ]);
-
 
155
 
-
 
156
            if ($recordLevel0) {
-
 
157
                array_push($categories_ids, $recordLevel0->id);
Línea 139... Línea 158...
139
 
158
 
Línea 140... Línea 159...
140
            if ($recordLevel0) {
159
                $recordsLevel1 = $DB->get_records('course_categories', [
Línea 141... Línea 160...
141
                array_push($categories_ids, $recordLevel0->id);
160
                    'visible' => 1,
-
 
161
                    'parent' => $recordLevel0->id
-
 
162
                ]);
-
 
163
 
142
 
164
                foreach ($recordsLevel1 as $recordLevel1) {
143
                $recordsLevel1 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel0->id]);
165
 
Línea 144... Línea 166...
144
 
166
                    array_push($categories_ids, $recordLevel1->id);
-
 
167
 
-
 
168
                    $recordsLevel2 = $DB->get_records('course_categories', [
-
 
169
                        'visible' => 1,
145
                foreach ($recordsLevel1 as $recordLevel1) {
170
                        'parent' => $recordLevel1->id
146
 
171
                    ]);
147
                    array_push($categories_ids, $recordLevel1->id);
172
                    foreach ($recordsLevel2 as $recordLevel2) {
148
 
173
                        array_push($categories_ids, $recordLevel2->id);
149
                    $recordsLevel2 = $DB->get_records('course_categories', ['visible' => 1, 'parent' => $recordLevel1->id]);
174
 
150
                    foreach ($recordsLevel2 as $recordLevel2) {
175
                        $recordsLevel3 = $DB->get_records('course_categories', [
151
                        array_push($categories_ids, $recordLevel2->id);
176
                            'visible' => 2,
Línea 152... Línea 177...
152
 
177
                            'parent' => $recordLevel2->id
153
                        $recordsLevel3 = $DB->get_records('course_categories', ['visible' => 2, 'parent' => $recordLevel2->id]);
178
                        ]);
154
                        foreach ($recordsLevel3 as $recordLevel3) {
179
                        foreach ($recordsLevel3 as $recordLevel3) {
155
                            array_push($categories_ids, $recordLevel3->id);
-
 
156
                        }
-
 
157
                    }
-
 
Línea 158... Línea 180...
158
                }
180
                            array_push($categories_ids, $recordLevel3->id);
159
            }
181
                        }
160
        }
182
                    }
161
 
183
                }
162
        $course_ids                 = [];
184
            }
163
        $course_category_ids        = [];
185
        }
-
 
186
 
164
        $courseAvailableForAutoRol  = [];
187
        $course_ids = [];
-
 
188
        $course_category_ids = [];
165
 
189
        $courseAvailableForAutoRol = [];
166
 
190
 
167
     
191
        if ($is_admin) {
168
 
192
            $mycourses = get_courses(); // get_courses_search($searchterms, $sort, $page, $perpage, $total_courses);
169
        if ($is_admin) {
193
        } else {
170
            $mycourses = get_courses();// get_courses_search($searchterms, $sort, $page, $perpage, $total_courses);
194
            $mycourses = enrol_get_users_courses($USER->id);
171
        } else {
195
            $courses_with_autoenrol = $DB->get_records('enrol', [
172
            $mycourses  = enrol_get_users_courses($USER->id);
196
                'enrol' => 'self',
173
            $courses_with_autoenrol  = $DB->get_records('enrol', ['enrol' => 'self', 'status' => 0]);
197
                'status' => 0
174
            foreach ($courses_with_autoenrol as $course_with_autoenrol) 
198
            ]);
175
            {
199
            foreach ($courses_with_autoenrol as $course_with_autoenrol) {
176
                $course = get_course($course_with_autoenrol->courseid);
200
                $course = get_course($course_with_autoenrol->courseid);
177
                array_push($mycourses, $course);
201
                array_push($mycourses, $course);
178
                
202
 
179
                array_push($courseAvailableForAutoRol, $course->id);
203
                array_push($courseAvailableForAutoRol, $course->id);
180
            }
204
            }
181
        }
205
        }
182
        
206
 
183
        $mycourses = array_filter($mycourses, function($course) use ($search_text, $category_filter_active, $categories_ids) {
207
        $mycourses = array_filter($mycourses, function ($course) use ($search_text, $category_filter_active, $categories_ids) {
184
            if (!$course->visible) {
208
            if (! $course->visible) {
185
                return false;
209
                return false;
186
            }
210
            }
187
            
211
 
188
            if ($search_text) {
212
            if ($search_text) {
189
                if (stripos($course->fullname, $search_text) === false) {
213
                if (stripos($course->fullname, $search_text) === false) {
190
                    return false;
214
                    return false;
191
                }
215
                }
-
 
216
            }
-
 
217
 
-
 
218
            if ($category_filter_active) {
-
 
219
                if (! in_array($course->category, $categories_ids)) {
192
            }
220
                    return false;
193
            
221
                }
194
            if ($category_filter_active) {
222
            }
195
                if (!in_array($course->category, $categories_ids)) {
223
 
196
                    return false;
224
            return true;
197
                }
225
        });
198
            }
226
 
199
            
227
        usort($mycourses, function ($a, $b) {
200
            return true;
228
            return $a->fullname <=> $b->fullname;
201
        });
229
        });
202
        
230
 
203
        /*
231
        /*
204
         $searchterms = array();
232
         * $searchterms = array();
205
         $sort = "c.sortorder DESC";
233
         * $sort = "c.sortorder DESC";
206
         */
234
         */
207
        
235
 
208
        $total_courses = count($mycourses);
236
        $total_courses = count($mycourses);
209
        $total_pages = ceil($total_courses / $perpage);
237
        $total_pages = ceil($total_courses / $perpage);
210
        if($total_pages * $perpage < $total_courses) {
238
        if ($total_pages * $perpage < $total_courses) {
211
            $total_pages++;
239
            $total_pages ++;
212
        }
-
 
213
        
240
        }
214
        $page = isset($page) ? max(1, min($page, $total_pages)) : 1;
241
 
215
            
242
        $page = isset($page) ? max(1, min($page, $total_pages)) : 1;
216
        $max_links = 3;
-
 
217
        $start_page = max(1, $page - floor($max_links / 2));
-
 
Línea 218... Línea 243...
218
        $end_page = min($total_pages, $start_page + $max_links - 1);
243
 
219
            
244
        $max_links = 3;
220
        if ($end_page - $start_page + 1 < $max_links) {
245
        $start_page = max(1, $page - floor($max_links / 2));
221
            $start_page = max(1, $end_page - $max_links + 1);
246
        $end_page = min($total_pages, $start_page + $max_links - 1);
222
        }
247
 
223
        
248
        if ($end_page - $start_page + 1 < $max_links) {
224
        
249
            $start_page = max(1, $end_page - $max_links + 1);
Línea 225... Línea 250...
225
        $start  = $page == 1 ? 0 : ($page - 1) * $perpage;
250
        }
226
        $mycourses = array_slice($mycourses, $start, $perpage);
251
 
227
        
252
        $start = $page == 1 ? 0 : ($page - 1) * $perpage;
Línea 228... Línea 253...
228
        
253
        $mycourses = array_slice($mycourses, $start, $perpage);
229
 
254
 
230
        $courses = [];
255
        $courses = [];
Línea 231... Línea 256...
231
        /*
256
        /*
232
        foreach ($course_ids as $course_id) {
257
         * foreach ($course_ids as $course_id) {
233
            $course = get_course($course_id);
258
         * $course = get_course($course_id);
234
          */  
259
         */
235
            
260
 
236
            foreach( $mycourses as $course) {
261
        foreach ($mycourses as $course) {
237
 
262
 
238
            if ($course instanceof stdClass) {
263
            if ($course instanceof stdClass) {
Línea 239... Línea 264...
239
                $coreCourseList = new core_course_list_element($course);
264
                $coreCourseList = new core_course_list_element($course);
240
            }
265
            }
-
 
266
 
241
 
267
            if (! in_array($course->category, $course_category_ids)) {
-
 
268
                array_push($course_category_ids, $course->category);
-
 
269
            }
242
            if (!in_array($course->category, $course_category_ids)) {
270
 
243
                array_push($course_category_ids, $course->category);
271
            $image = $url_noimage;
Línea 244... Línea 272...
244
            }
272
            foreach ($coreCourseList->get_course_overviewfiles() as $file) {
245
 
273
                $isimage = $file->is_valid_image();
Línea 246... Línea 274...
246
            $image = $url_noimage;
274
                $image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), ! $isimage);
-
 
275
                if (! $isimage) {
-
 
276
                    $image = $url_noimage;
247
            foreach ($coreCourseList->get_course_overviewfiles() as $file) {
277
                }
Línea 248... Línea 278...
248
                $isimage = $file->is_valid_image();
278
            }
249
                $image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage);
279
 
250
                if (!$isimage) {
280
            $lastaccess = null;
251
                    $image = $url_noimage;
281
            $sql = "select timecreated from {logstore_standard_log} where courseid = :courseid and userid = :userid order by id limit {$perpage}";
252
                }
282
            $params_a = [
253
            }
283
                'courseid' => $course->id,
Línea 275... Línea 305...
275
            $roles = get_user_roles($course_context, $USER->id, true);
305
            $roles = get_user_roles($course_context, $USER->id, true);
Línea 276... Línea 306...
276
 
306
 
277
            $completion_edit_curso = false;
307
            $completion_edit_curso = false;
278
            foreach ($roles as $role) {
308
            foreach ($roles as $role) {
279
                if ($role->shortname == 'companydepartmentmanager' || $role->shortname == 'companycoursenoneditor') {
309
                if ($role->shortname == 'companydepartmentmanager' || $role->shortname == 'companycoursenoneditor') {
280
                    $completion_edit_curso  = true;
310
                    $completion_edit_curso = true;
281
                    break;
311
                    break;
282
                }
312
                }
Línea 283... Línea 313...
283
            }
313
            }
Línea 290... Línea 320...
290
 
320
 
Línea 291... Línea 321...
291
            $modules = get_fast_modinfo($course->id)->get_cms();
321
            $modules = get_fast_modinfo($course->id)->get_cms();
292
 
322
 
293
            $linkurl = '';
323
            $linkurl = '';
294
            foreach ($modules as $module) {
324
            foreach ($modules as $module) {
295
                if (!$module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {
325
                if (! $module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {
Línea 296... Línea 326...
296
                    continue;
326
                    continue;
297
                }
327
                }
-
 
328
 
-
 
329
                if ($module->section == $first_section || $completion_edit_curso) {
298
 
330
                    $linkurl = new moodle_url($module->url, array(
299
                if ($module->section == $first_section || $completion_edit_curso) {
331
                        'forceview' => 1
300
                    $linkurl =  new moodle_url($module->url, array('forceview' => 1));
332
                    ));
Línea 301... Línea 333...
301
                    break;
333
                    break;
Línea 302... Línea 334...
302
                }
334
                }
303
            }
335
            }
304
 
336
 
Línea 305... Línea 337...
305
            $summary = trim(strip_tags($course->summary));
337
            $summary = trim(strip_tags($course->summary));
306
 
338
 
Línea 307... Línea 339...
307
            if (empty($summary)) {
339
            if (empty($summary)) {
308
                $summary = '<p></p>';
340
                $summary = '<p></p>';
309
            } else if (strlen($summary) > 80) {
341
            } else if (strlen($summary) > 80) {
Línea 324... Línea 356...
324
                    $categoryName = $categoryParent->name . ' / ' . $category->name;
356
                    $categoryName = $categoryParent->name . ' / ' . $category->name;
325
                } else {
357
                } else {
326
                    $categoryName = $category->name;
358
                    $categoryName = $category->name;
327
                }
359
                }
328
            } else {
360
            } else {
329
                $categoryName =  $category->name;
361
                $categoryName = $category->name;
330
            }
362
            }
331
            if (strlen($categoryName) > 40) {
363
            if (strlen($categoryName) > 40) {
Línea 332... Línea 364...
332
 
364
 
333
                $categoryName =  substr($categoryName, 0, 40) . '...';
365
                $categoryName = substr($categoryName, 0, 40) . '...';
Línea 334... Línea 366...
334
            }
366
            }
335
 
367
 
336
            // echo '<pre>';
368
            // echo '<pre>';
Línea 349... Línea 381...
349
                'idnumber' => $course->idnumber,
381
                'idnumber' => $course->idnumber,
350
                'isfavourite' => false,
382
                'isfavourite' => false,
351
                'shortname' => $course->shortname,
383
                'shortname' => $course->shortname,
352
                'showshortname' => false,
384
                'showshortname' => false,
353
                'startdate' => $course->startdate,
385
                'startdate' => $course->startdate,
354
                'summary' =>  $summary,
386
                'summary' => $summary,
355
                'summaryformat' => $course->summaryformat,
387
                'summaryformat' => $course->summaryformat,
356
                'timeaccess' => $lastaccess,
388
                'timeaccess' => $lastaccess,
357
                'viewurl' => $linkurl,
389
                'viewurl' => $linkurl,
358
                'editurl' => $editurl,
390
                'editurl' => $editurl,
359
                'autoenrol' => $autoenrol,
391
                'autoenrol' => $autoenrol,
360
                'visible' => true,
392
                'visible' => true
361
            ]);
393
            ]);
362
        }
394
        }
Línea 363... Línea 395...
363
 
395
 
Línea 364... Línea 396...
364
        $categories = [];
396
        $categories = [];
365
 
397
 
366
        foreach ($course_category_ids as $course_category_id) {
398
        foreach ($course_category_ids as $course_category_id) {
-
 
399
            $category = $all_categories[$course_category_id];
-
 
400
            if ($category) {
367
            $category = $all_categories[$course_category_id];
401
                array_push($categories, [
-
 
402
                    'id' => $category->id,
368
            if ($category) {
403
                    'name' => $category->name
369
                array_push($categories, ['id' => $category->id, 'name' => $category->name]);
404
                ]);
Línea 370... Línea 405...
370
            }
405
            }
371
        }
406
        }
Línea 398... Línea 433...
398
            'categories' => $categories
433
            'categories' => $categories
399
        ];
434
        ];
Línea 400... Línea 435...
400
 
435
 
Línea 401... Línea -...
401
        $badges = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/badges', $data);
-
 
402
 
436
        $badges = $OUTPUT->render_from_template('block_cursos_catalogo_ajax/badges', $data);
403
 
-
 
404
        return json_encode(
437
 
405
            [
438
        return json_encode([
406
                'success' => true,
439
            'success' => true,
407
                'search_text' => $search_text,
440
            'search_text' => $search_text,
408
                'category_id' => $category_id,
441
            'category_id' => $category_id,
409
                'cards' => $cards,
-
 
410
                'badges' => $badges
442
            'cards' => $cards,
411
            ]
443
            'badges' => $badges
Línea 412... Línea -...
412
        );
-
 
413
    }
444
        ]);
414
 
445
    }
415
 
446
 
416
    public static function get_cursos_catalogo_returns()
447
    public static function get_cursos_catalogo_returns()
417
    {
448
    {