/**
  * Enrol All students on a course, checks to see if all the Moodle students
  * are already enrolled and then enrols the students who aren't
  *
  * @param object $cm the course module
  * @return boolean
  */
 public function enrol_all_students($cm)
 {
     // Get Moodle Course Object.
     $course = $this->get_course_data($this->turnitintooltwo->course);
     // Get local course members.
     $moodleclassmembers = $this->get_moodle_course_users($cm);
     // Get the user ids of who is already enrolled and remove them
     // from the local course members array.
     $tiiclassmemberships = $this->get_class_memberships($course->turnitin_cid);
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     $membership = new TiiMembership();
     $membership->setMembershipIds($tiiclassmemberships);
     try {
         $response = $turnitincall->readMemberships($membership);
         $readmemberships = $response->getMemberships();
         foreach ($readmemberships as $readmembership) {
             if ($readmembership->getRole() == "Learner") {
                 $moodleuserid = turnitintooltwo_user::get_moodle_user_id($readmembership->getUserId());
                 unset($moodleclassmembers[$moodleuserid]);
             }
         }
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'membercheckerror');
     }
     // Enrol remaining unenrolled users to the course.
     $members = array_keys($moodleclassmembers);
     foreach ($members as $member) {
         $user = new turnitintooltwo_user($member, "Learner");
         $user->join_user_to_class($course->turnitin_cid);
     }
     return true;
 }
 public function findMemberships($membership)
 {
     try {
         $soap = $this->readMembershipIdsForCollection(array('groupSourcedId' => $membership->getClassId(), 'collection' => 'courseSection'));
         $response = new Response($this);
         if ($response->getStatus() == 'error') {
             throw new TurnitinSDKException($response->getStatusCode(), $response->getDescription());
         } else {
             $tiiMembership = new TiiMembership();
             $membershipids = array();
             if (isset($soap->sourcedIdSet->sourcedId)) {
                 if (!is_array($soap->sourcedIdSet->sourcedId)) {
                     $soap->sourcedIdSet->sourcedId = array($soap->sourcedIdSet->sourcedId);
                 }
                 foreach ($soap->sourcedIdSet->sourcedId as $id) {
                     $membershipids[] = $id;
                 }
             }
             $tiiMembership->setMembershipIds($membershipids);
             $response->setMembership($tiiMembership);
         }
         return $response;
     } catch (SoapFault $e) {
         throw new TurnitinSDKException($e->faultcode, $e->faultstring, parent::getLogPath());
     }
 }