0
I need to create a link between a user and a course, I would like to do this using webservice.
Moodle has native enrol_manual_enrol_users function for this purpose, which has as mandatory parameters the link type roleid
, user id userid
and the course id courseid
.
But if I try to use the following error is returned, and nothing is inserted in the table mdl_role_assignments
"debuginfo":"Missing required key in single structure: enrolments"
Even with the three mandatory fields existing at the base of the Moodle.
/// Connection
$token = 'ed874e6d9f52539e180f49f4d926d50f';
$domainname = 'http://localhost/moodle';
$functionname = 'enrol_manual_enrol_users';
$restformat = 'json';
//////// enrol_manual_enrol_users ////////
/// Paramètres
$enrolment = new stdClass();
$enrolment->roleid = 5; //estudante(student) -> 5; moderador(teacher) -> 4; professor(editingteacher) -> 3;
$enrolment->userid = 2;
$enrolment->courseid = 5;
$enrolments = array( $enrolment);
$params = array('enrolments' => $enrolments);
print_r($params);
header('Content-Type: text/plain');
$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;
require_once('./curl.php');
$curl = new curl;
//if rest format == 'xml', then we do not add the param for backward compatibility with Moodle < 2.2
$restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';
$resp = $curl->post($serverurl . $restformat, $params);
print_r($resp);
Follow the list of parameters accepted by this function
'roleid' => new external_value(PARAM_INT, 'Role to assign to the user'),
'userid' => new external_value(PARAM_INT, 'The user that is going to be enrolled'),
'courseid' => new external_value(PARAM_INT, 'The course to enrol the user role in'),
'timestart' => new external_value(PARAM_INT, 'Timestamp when the enrolment start', VALUE_OPTIONAL),
'timeend' => new external_value(PARAM_INT, 'Timestamp when the enrolment end', VALUE_OPTIONAL),
'suspend' => new external_value(PARAM_INT, 'set to 1 to suspend the enrolment', VALUE_OPTIONAL)
I have done tests assigning values to these optional parameters, but nothing changes.