When enrolling a user via a web service call, we first want to verify if the user is already enrolled in the course. After confirming they are not enrolled, we will send a request to create an enrollment record, giving the user fill access to the course.
In this example, the course node id (nid) we're looking to enroll the user in is 300 and the Drupal user ID (uid) is 200.
Verify a user is enrolled
<?php // Login to the site and request the access token $curl = curl_init('http://your-domain.com/restws/session/token'); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:restws_webservice"); // Your web service user credentials go here. curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $token = curl_exec($curl); // The token looks like "q71OBx05wtECfjA0KmXf6wiktewrywNhkMZv-OcfyOA%" // 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("X-CSRF-Token: $token", "Content-Type: application/json")); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:restws_webservice"); //Your credentials go here curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-CSRF-Token: $token", "Content-Type: application/json")); $json = curl_exec($curl); $response = json_decode($json); $list = $response->list; if(empty($list)){ $data = array( 'nid' => 300, 'uid' => 200, 'enrollmenttype' => 'webservice_call', 'type' => 'webservice_call', 'status' => 1, ); // Send the enrollment creation request $curl = curl_init("http://74.localhost/course_enrollment"); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-CSRF-Token: $token", "Content-Type: application/json")); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "restws_webservice:restws_webservice"); //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.
{"uri":"http:\/\/your-domain.com\/course_enrollment\/458","id":"458","resource":"course_enrollment"}