MDL-71235 webservices: add activity completion data to web services
This commit is contained in:
@@ -221,7 +221,7 @@ class core_completion_external extends external_api {
|
||||
* @throws moodle_exception
|
||||
*/
|
||||
public static function get_activities_completion_status($courseid, $userid) {
|
||||
global $CFG, $USER;
|
||||
global $CFG, $USER, $PAGE;
|
||||
require_once($CFG->libdir . '/grouplib.php');
|
||||
|
||||
$warnings = array();
|
||||
@@ -253,25 +253,24 @@ class core_completion_external extends external_api {
|
||||
|
||||
$results = array();
|
||||
foreach ($activities as $activity) {
|
||||
|
||||
// Check if current user has visibility on this activity.
|
||||
if (!$activity->uservisible) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get progress information and state (we must use get_data because it works for all user roles in course).
|
||||
$activitycompletiondata = $completion->get_data($activity, true, $user->id);
|
||||
|
||||
$results[] = array(
|
||||
'cmid' => $activity->id,
|
||||
'modname' => $activity->modname,
|
||||
'instance' => $activity->instance,
|
||||
'state' => $activitycompletiondata->completionstate,
|
||||
'timecompleted' => $activitycompletiondata->timemodified,
|
||||
'tracking' => $activity->completion,
|
||||
'overrideby' => $activitycompletiondata->overrideby,
|
||||
'valueused' => core_availability\info::completion_value_used($course, $activity->id)
|
||||
$exporter = new \core_completion\external\completion_info_exporter(
|
||||
$course,
|
||||
$activity,
|
||||
$userid,
|
||||
);
|
||||
$renderer = $PAGE->get_renderer('core');
|
||||
$data = (array)$exporter->export($renderer);
|
||||
$results[] = array_merge([
|
||||
'cmid' => $activity->id,
|
||||
'modname' => $activity->modname,
|
||||
'instance' => $activity->instance,
|
||||
'tracking' => $activity->completion,
|
||||
], $data);
|
||||
}
|
||||
|
||||
$results = array(
|
||||
@@ -292,21 +291,59 @@ class core_completion_external extends external_api {
|
||||
array(
|
||||
'statuses' => new external_multiple_structure(
|
||||
new external_single_structure(
|
||||
array(
|
||||
'cmid' => new external_value(PARAM_INT, 'comment ID'),
|
||||
[
|
||||
'cmid' => new external_value(PARAM_INT, 'course module ID'),
|
||||
'modname' => new external_value(PARAM_PLUGIN, 'activity module name'),
|
||||
'instance' => new external_value(PARAM_INT, 'instance ID'),
|
||||
'state' => new external_value(PARAM_INT, 'completion state value:
|
||||
0 means incomplete, 1 complete,
|
||||
2 complete pass, 3 complete fail'),
|
||||
'timecompleted' => new external_value(PARAM_INT, 'timestamp for completed activity'),
|
||||
'tracking' => new external_value(PARAM_INT, 'type of tracking:
|
||||
0 means none, 1 manual, 2 automatic'),
|
||||
'overrideby' => new external_value(PARAM_INT, 'The user id who has overriden the status, or null',
|
||||
'state' => new external_value(PARAM_INT,
|
||||
"Completion state value:
|
||||
0 means incomplete,
|
||||
1 complete,
|
||||
2 complete pass,
|
||||
3 complete fail"
|
||||
),
|
||||
'timecompleted' => new external_value(PARAM_INT,
|
||||
'timestamp for completed activity'),
|
||||
'tracking' => new external_value(PARAM_INT,
|
||||
"type of tracking:
|
||||
0 means none,
|
||||
1 manual,
|
||||
2 automatic"
|
||||
),
|
||||
'overrideby' => new external_value(PARAM_INT,
|
||||
'The user id who has overriden the status, or null', VALUE_OPTIONAL),
|
||||
'valueused' => new external_value(PARAM_BOOL,
|
||||
'Whether the completion status affects the availability of another activity.',
|
||||
VALUE_OPTIONAL),
|
||||
'valueused' => new external_value(PARAM_BOOL, 'Whether the completion status affects the availability
|
||||
of another activity.', VALUE_OPTIONAL),
|
||||
), 'Activity'
|
||||
'hascompletion' => new external_value(PARAM_BOOL,
|
||||
'Whether this activity module has completion enabled',
|
||||
VALUE_OPTIONAL),
|
||||
'isautomatic' => new external_value(PARAM_BOOL,
|
||||
'Whether this activity module instance tracks completion automatically.',
|
||||
VALUE_OPTIONAL),
|
||||
'istrackeduser' => new external_value(PARAM_BOOL,
|
||||
'Whether completion is being tracked for this user.',
|
||||
VALUE_OPTIONAL),
|
||||
'uservisible' => new external_value(PARAM_BOOL,
|
||||
'Whether this activity is visible to the user.',
|
||||
VALUE_OPTIONAL),
|
||||
'details' => new external_multiple_structure(
|
||||
new external_single_structure(
|
||||
[
|
||||
'rulename' => new external_value(PARAM_TEXT, 'Rule name'),
|
||||
'rulevalue' => new external_single_structure(
|
||||
[
|
||||
'status' => new external_value(PARAM_INT, 'Completion status'),
|
||||
'description' => new external_value(PARAM_TEXT, 'Completion description'),
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
VALUE_DEFAULT,
|
||||
[]
|
||||
),
|
||||
|
||||
], 'Activity'
|
||||
), 'List of activities status'
|
||||
),
|
||||
'warnings' => new external_warnings()
|
||||
|
||||
Reference in New Issue
Block a user