public function readMembershipsSoap($membership)
 {
     try {
         $soap = $this->readMemberships(array('sourcedIdSet' => array('sourcedId' => $membership->getMembershipIds())));
         $response = new Response($this);
         if ($response->getStatus() == 'error') {
             throw new TurnitinSDKException($response->getStatusCode(), $response->getDescription());
         } else {
             $memberships = array();
             if (isset($soap->membershipRecordSet->membershipRecord)) {
                 if (!is_array($soap->membershipRecordSet->membershipRecord)) {
                     $soap->membershipRecordSet->membershipRecord = array($soap->membershipRecordSet->membershipRecord);
                 }
                 foreach ($soap->membershipRecordSet->membershipRecord as $record) {
                     $tiiMembership = new TiiMembership();
                     $tiiMembership->setMembershipId($record->sourcedGUID->sourcedId);
                     $tiiMembership->setClassId($record->membership->collectionSourcedId);
                     $tiiMembership->setUserId($record->membership->member->personSourcedId);
                     $tiiMembership->setRole($record->membership->member->role->roleType);
                     $memberships[] = $tiiMembership;
                 }
             }
             $response->setMemberships($memberships);
         }
         return $response;
     } catch (SoapFault $e) {
         throw new TurnitinSDKException($e->faultcode, $e->faultstring, parent::getLogPath());
     }
 }
 /**
  * Get all the membership ids for a particular class
  *
  * @param int $tiicourseid the course id on Turnitin
  * @return array $tiiclassmembers all the membership Ids for the class if successful
  */
 private function get_class_memberships($tiicourseid)
 {
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     $membership = new TiiMembership();
     $membership->setClassId($tiicourseid);
     try {
         $response = $turnitincall->findMemberships($membership);
         $findmembership = $response->getMembership();
         $tiiclassmembers = $findmembership->getMembershipIds();
         return $tiiclassmembers;
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'membercheckerror');
     }
 }
 /**
  * Set the number of user messages and any instructor rubrics from Turnitin
  */
 public function set_user_values_from_tii()
 {
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     $user = new TiiUser();
     $user->setUserId($this->tii_user_id);
     try {
         $response = $turnitincall->readUser($user);
         $readuser = $response->getUser();
         $this->usermessages = $readuser->getUserMessages();
         $this->save_instructor_rubrics($readuser->getInstructorRubrics());
         $tiiuser = array("id" => $readuser->getUserId(), "firstname" => $readuser->getFirstName(), "lastname" => $readuser->getLastName(), "email" => $readuser->getEmail());
         return $tiiuser;
     } catch (Exception $e) {
         try {
             // We need to join the user to the account, we can only do that by adding the user to a class
             // make one and add them, then delete it. Awful workaround but should be rare.
             $class = new TiiClass();
             $uuid = uniqid(microtime() . '-');
             $class->setTitle($uuid);
             $response = $turnitincall->createClass($class);
             $newclass = $response->getClass();
             $tiiclassid = $newclass->getClassId();
             $membership = new TiiMembership();
             $membership->setRole($this->role);
             $membership->setUserId($this->tii_user_id);
             $membership->setClassId($tiiclassid);
             $response = $turnitincall->createMembership($membership);
             $class->setClassId($tiiclassid);
             $response = $turnitincall->deleteClass($class);
             $response = $turnitincall->readUser($user);
             $readuser = $response->getUser();
             $this->usermessages = $readuser->getUserMessages();
             $this->save_instructor_rubrics($readuser->getInstructorRubrics());
         } catch (Exception $e) {
             $turnitincomms->handle_exceptions($e, 'tiiusergeterror');
         }
     }
 }