When enrolling a user via a web service call, we first want to verify if the user is enrolled in the course. After confirming they do not have an enrollment, we can send a request to create a new enrollment record.
In this example, the course node id (nid) we want to enroll the user in is 300 and the Drupal user ID (uid) is 200.
<?php // Verify if the user is enrolled in the course $curl = curl_init("http://your-domain.com/course_enrollment.json?uid=200&nid=300"); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); //Your credentials go here curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $json = curl_exec($curl); $response = json_decode($json); $list = $response->list; // See note below if(empty($list)){ $data = array( 'nid' => 300, 'uid' => 200, 'enrollmenttype' => 'webservice_call', // enrollmenttype and type should be updated per client system. They are the unique identifiers of the external system sending the call. 'type' => 'webservice_call', // Formatted in lower case alphanumeric and underscore characters. The two values are not required to be identical. 'status' => 1, ); // Send the enrollment creation request $curl = curl_init("http://your-domain.com/course_enrollment"); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:webservice_password"); //Your credentials go here curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); $response = curl_exec($curl); }
A successful creation request will return an array of values containing the "URI" of the new enrollment record, as well as it's enrollment "id".
{"uri":"http://your-domain.com/course_enrollment/458","id":"458","resource":"course_enrollment"}
For an explanation of the information returned from the verification request, see Web Service Responses.