/**
  * Get the users from Turnitin for the specified role, gets the memberships
  * and loops through them to get each user
  *
  * @param string $role the user has in the class
  * @return array $users
  */
 public function get_tii_users_by_role($role = "Learner")
 {
     global $DB;
     $users = array();
     // Get Moodle Course Object.
     $course = $this->get_course_data($this->turnitintooltwo->course);
     $classmembers = $this->get_class_memberships($course->turnitin_cid);
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     $membership = new TiiMembership();
     $membership->setMembershipIds($classmembers);
     // Get Enrolled users from Turnitin.
     try {
         $response = $turnitincall->readMemberships($membership);
         $readmemberships = $response->getMemberships();
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'membercheckerror');
     }
     // Add each user to an array.
     foreach ($readmemberships as $readmembership) {
         if ($readmembership->getRole() == $role) {
             // Check user is a Moodle user. otherwise we have to go to Turnitin for their name.
             $moodleuserid = turnitintooltwo_user::get_moodle_user_id($readmembership->getUserId());
             if (!empty($moodleuserid)) {
                 $user = $DB->get_record('user', array('id' => $moodleuserid));
                 $users[$readmembership->getUserId()]["firstname"] = $user->firstname;
                 $users[$readmembership->getUserId()]["lastname"] = $user->lastname;
                 $users[$readmembership->getUserId()]["membership_id"] = $readmembership->getMembershipId();
             } else {
                 $user = new TiiUser();
                 $user->setUserId($readmembership->getUserId());
                 try {
                     $response = $turnitincall->readUser($user);
                     $readuser = $response->getUser();
                     $users[$readmembership->getUserId()]["firstname"] = $readuser->getFirstName();
                     $users[$readmembership->getUserId()]["lastname"] = $readuser->getLastName();
                     $users[$readmembership->getUserId()]["membership_id"] = $readmembership->getMembershipId();
                 } catch (Exception $e) {
                     // A read user exception occurs when users are inactive. Re-enrol user to make them active.
                     $membership = new TiiMembership();
                     $membership->setClassId($course->turnitin_cid);
                     $membership->setUserId($readmembership->getUserId());
                     $membership->setRole($role);
                     try {
                         $turnitincall->createMembership($membership);
                     } catch (InnerException $e) {
                         // Ignore excepion.
                     }
                     try {
                         $user = new TiiUser();
                         $user->setUserId($readmembership->getUserId());
                         $response = $turnitincall->readUser($user);
                         $readuser = $response->getUser();
                         $users[$readmembership->getUserId()]["firstname"] = $readuser->getFirstName();
                         $users[$readmembership->getUserId()]["lastname"] = $readuser->getLastName();
                         $users[$readmembership->getUserId()]["membership_id"] = $readmembership->getMembershipId();
                     } catch (InnerException $e) {
                         $turnitincomms->handle_exceptions($e, 'tiiusergeterror');
                     }
                 }
             }
         }
     }
     return $users;
 }
 /**
  * Get whether the student has accepted the Turnitin User agreement
  *
  * @return boolean
  */
 public function get_accepted_user_agreement()
 {
     global $DB;
     $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();
         if ($readuser->getAcceptedUserAgreement()) {
             $turnitintooltwouser = $DB->get_record('turnitintooltwo_users', array('userid' => $this->id));
             $tii_userinfo = new stdClass();
             $tii_userinfo->id = $turnitintooltwouser->id;
             $tii_userinfo->user_agreement_accepted = 1;
             $DB->update_record('turnitintooltwo_users', $tii_userinfo);
             return true;
         } else {
             return false;
         }
     } catch (Exception $e) {
         // User may not be joined to account so we'll join them and recall function
         $this->set_user_values_from_tii();
         $this->get_accepted_user_agreement();
         // $turnitincomms->handle_exceptions($e, 'tiiusergeterror');
     }
 }
 /**
  * Create a new Instructor User on Turnitin.
  *
  * Takes a {@link TiiUser.html TiiUser} or a
  * {@link TiiPseudoUser.html TiiPseudoUser} object containing the required parameters
  * and returns a {@link Response.html Response} object containing the data from the response.
  *
  * Convenience method that adds the Instructor role (see: {@link TurnitinAPI.html#createUser createUser})
  *
  * @param TiiUser $user
  * @return Response
  */
 public function createInstructorUser($user)
 {
     $userSoap = $this->setOptions(new UserSoap($this->personwsdl, $this->getServiceOptions('person')));
     $user->setDefaultRole('Instructor');
     return $userSoap->createUser($user);
 }
 /**
  * Get the users from Turnitin for the specified role, gets the memberships
  * and loops through them to get each user
  *
  * @param string $role the user has in the class
  * @return array $users
  */
 public function get_tii_users_by_role($role = "Learner")
 {
     $users = array();
     // Get Moodle Course Object.
     $course = $this->get_course_data($this->turnitintooltwo->course);
     $classmembers = $this->get_class_memberships($course->turnitin_cid);
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     $membership = new TiiMembership();
     $membership->setMembershipIds($classmembers);
     // Get Enrolled users from Turnitin.
     try {
         $response = $turnitincall->readMemberships($membership);
         $readmemberships = $response->getMemberships();
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'membercheckerror');
     }
     // Add each user to an array.
     foreach ($readmemberships as $readmembership) {
         if ($readmembership->getRole() == $role) {
             $user = new TiiUser();
             $user->setUserId($readmembership->getUserId());
             try {
                 $response = $turnitincall->readUser($user);
                 $readuser = $response->getUser();
                 $users[$readmembership->getUserId()]["firstname"] = $readuser->getFirstName();
                 $users[$readmembership->getUserId()]["lastname"] = $readuser->getLastName();
                 $users[$readmembership->getUserId()]["membership_id"] = $readmembership->getMembershipId();
             } catch (Exception $e) {
                 // A read user exception occurs when users are inactive. Re-enrol user to make them active.
                 $membership = new TiiMembership();
                 $membership->setClassId($course->turnitin_cid);
                 $membership->setUserId($readmembership->getUserId());
                 $membership->setRole($role);
                 try {
                     $turnitincall->createMembership($membership);
                     $user = new TiiUser();
                     $user->setUserId($readmembership->getUserId());
                     $response = $turnitincall->readUser($user);
                     $readuser = $response->getUser();
                     $users[$readmembership->getUserId()]["firstname"] = $readuser->getFirstName();
                     $users[$readmembership->getUserId()]["lastname"] = $readuser->getLastName();
                     $users[$readmembership->getUserId()]["membership_id"] = $readmembership->getMembershipId();
                 } catch (InnerException $e) {
                     $turnitincomms->handle_exceptions($e, 'tiiusergeterror');
                 }
             }
         }
     }
     return $users;
 }
 public function findUser($user)
 {
     try {
         $request = array('queryObject' => $user->getEmail());
         $soap = $this->discoverPersonIds($request);
         $response = new Response($this);
         if ($response->getStatus() == 'error') {
             throw new TurnitinSDKException($response->getStatusCode(), $response->getDescription());
         } else {
             $tiiUser = new TiiUser();
             if (isset($soap->sourcedIdSet->sourcedId)) {
                 $tiiUser->setUserId($soap->sourcedIdSet->sourcedId);
             }
             $response->setUser($tiiUser);
         }
         return $response;
     } catch (SoapFault $e) {
         throw new TurnitinSDKException($e->faultcode, $e->faultstring, parent::getLogPath());
     }
 }