Hi Everyone,
I noticed, that core_course_get_activities_overview is deprecated since Moodle v3.2 and I did found any reason why Moodle team deprecated this web services.
I also notice that many web services required cmid (Course Module ID) but I can't able to fetch cmid from web service.
I customized this web service and it is return cmid include default response (print_overview).
I believe, we should create a tracker for this web service for improvement. Please vote
and let me know if any improvement I can do.
improved code in course/externallib.php
public static function get_activities_overview($courseids) {
global $USER;
// Parameter validation.
$params = self::validate_parameters(self::get_activities_overview_parameters(), array('courseids' => $courseids));
$courseoverviews = array();
list($courses, $warnings) = external_util::validate_courses($params['courseids']);
if (!empty($courses)) {
// Add lastaccess to each course (required by print_overview function).
// We need the complete user data, the ws server does not load a complete one.
$user = get_complete_user_data('id', $USER->id);
foreach ($courses as $course) {
if (isset($user->lastcourseaccess[$course->id])) {
$course->lastaccess = $user->lastcourseaccess[$course->id];
} else {
$course->lastaccess = 0;
}
}
$overviews = array();
if ($modules = get_plugin_list_with_function('mod', 'print_overview')) {
foreach ($modules as $fname) {
$fname($courses, $overviews);
}
}
// Format output.
foreach ($overviews as $courseid => $modules) {
$courseoverviews[$courseid]['id'] = $courseid;
$courseoverviews[$courseid]['cmids'] = array();
$courseoverviews[$courseid]['overviews'] = array();
// Get all list of activities in the course
$activities = get_array_of_activities($courseid);
// Get all course module ids
foreach ($activities as $activity) {
$courseoverviews[$courseid]['cmids'][] = array(
'cmid' => $activity->cm
);
}
foreach ($modules as $modname => $overviewtext) {
$courseoverviews[$courseid]['overviews'][] = array(
'module' => $modname,
'overviewtext' => $overviewtext // This text doesn't need formatting.
);
}
}
}
$result = array(
'courses' => $courseoverviews,
'warnings' => $warnings
);
return $result;
}
/**
* Returns description of method result value
*
* @deprecated since 3.3
* @todo The final deprecation of this function will take place in Moodle 3.7 - see MDL-57487.
* @return external_description
* @since Moodle 3.2
*/
public static function get_activities_overview_returns() {
return new external_single_structure(
array(
'courses' => new external_multiple_structure(
new external_single_structure(
array(
'id' => new external_value(PARAM_INT, 'Course id'),
'cmids' => new external_multiple_structure(
new external_single_structure(
array(
'cmid' => new external_value(PARAM_INT, 'Module id'),
)
)
),
'overviews' => new external_multiple_structure(
new external_single_structure(
array(
'module' => new external_value(PARAM_PLUGIN, 'Module name'),
'overviewtext' => new external_value(PARAM_RAW, 'Overview text'),
)
)
)
)
), 'List of courses'
),
'warnings' => new external_warnings()
)
);
}
// Note: remove overridden method of get_activities_overview
improved code in db/lib/services.php
'core_course_get_activities_overview' => array(
'classname' => 'core_course_external',
'methodname' => 'get_activities_overview',
'classpath' => 'course/externallib.php',
'description' => 'Return activities overview for the given courses.',
'type' => 'read',
'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
),