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 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; }
/** * 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'); } } }
/** * 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; }
/** * Create a new Instructor Membership on a Class. * * Takes a {@link TiiMembership.html TiiMembership} 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#createMembership createMembership}) * * @param TiiMembership $membership * @return Response */ public function createInstructorMembership($membership) { $membershipSoap = $this->setOptions(new MembershipSoap($this->membershipwsdl, $this->getServiceOptions('membership'))); $membership->setRole('Instructor'); return $membershipSoap->createMembership($membership); }