19 'http://purl.imsglobal.org/vocab/lis/v2/system/person#Administrator',
20 'http://purl.imsglobal.org/vocab/lis/v2/system/person#None',
21 'http://purl.imsglobal.org/vocab/lis/v2/system/person#AccountAdmin',
22 'http://purl.imsglobal.org/vocab/lis/v2/system/person#Creator',
23 'http://purl.imsglobal.org/vocab/lis/v2/system/person#SysAdmin',
24 'http://purl.imsglobal.org/vocab/lis/v2/system/person#SysSupport',
25 'http://purl.imsglobal.org/vocab/lis/v2/system/person#User',
26 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Administrator',
27 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Faculty',
28 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Guest',
29 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#None',
30 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Other',
31 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Staff',
32 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Student',
33 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Alumni',
34 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Instructor',
35 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Learner',
36 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Member',
37 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Mentor',
38 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#Observer',
39 'http://purl.imsglobal.org/vocab/lis/v2/institution/person#ProspectiveStudent',
40 'http://purl.imsglobal.org/vocab/lis/v2/membership#Administrator',
41 'http://purl.imsglobal.org/vocab/lis/v2/membership#ContentDeveloper',
42 'http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor',
43 'http://purl.imsglobal.org/vocab/lis/v2/membership#Learner',
44 'http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor',
45 'http://purl.imsglobal.org/vocab/lis/v2/membership#Manager',
46 'http://purl.imsglobal.org/vocab/lis/v2/membership#Member',
47 'http://purl.imsglobal.org/vocab/lis/v2/membership#Officer'
147 $this->firstname =
'';
148 $this->middlename =
'';
149 $this->lastname =
'';
150 $this->fullname =
'';
151 $this->sourcedId =
null;
152 $this->username =
null;
155 $this->roles = array();
156 $this->groups = array();
179 $names = array(0 =>
'', 1 =>
'');
182 $names = preg_split(
"/[\s]+/", $this->fullname);
187 } elseif (!empty($names[0])) {
188 $this->firstname = $names[0];
189 } elseif (!static::$allowEmptyName) {
190 $this->firstname =
'User';
192 $this->firstname =
'';
196 } elseif ((count($names) > 2) && !empty($names[1])) {
197 $this->middlename =
'';
198 for ($i = 1; $i < count($names); $i++) {
199 $this->middlename .= $names[$i] .
' ';
201 $this->middlename = trim($this->middlename);
203 $this->middlename =
'';
207 } elseif ((count($names) > 1) && !empty($names[count($names) - 1])) {
208 $this->lastname = $names[count($names) - 1];
209 } elseif (!static::$allowEmptyName) {
212 $this->lastname =
'';
214 if (empty($this->fullname) && (!empty($this->firstname) || !empty($this->lastname))) {
216 if (!empty($this->middlename)) {
217 $this->fullname .=
" {$this->middlename}";
219 $this->fullname .=
" {$this->lastname}";
233 } elseif (!empty($defaultEmail)) {
234 $this->email = $defaultEmail;
235 if (substr($this->email, 0, 1) ===
'@') {
236 if (!empty($this->username)) {
237 $this->email =
"{$this->username}{$this->email}";
239 $this->email =
"{$this->ltiUserId}{$this->email}";
254 return $this->hasRole(
'Learner');
264 return $this->hasRole(
'Instructor');
274 return $this->hasRole(
'ContentDeveloper');
284 return $this->hasRole(
'TeachingAssistant');
294 return $this->hasRole(
'Manager');
304 return $this->hasRole(
'Member');
314 return $this->hasRole(
'Officer');
334 return $this->hasRole(
'Mentor');
344 return $this->hasRole(
'Administrator') || $this->hasRole(
'urn:lti:sysrole:ims/lis/SysAdmin') ||
345 $this->hasRole(
'urn:lti:sysrole:ims/lis/Administrator') || $this->hasRole(
'urn:lti:instrole:ims/lis/Administrator');
359 private function hasRole($role)
361 $ok = in_array($role, $this->roles);
362 if (!$ok && (strpos($role,
'urn:') !== 0) && (strpos($role,
'http://') !== 0) && (strpos($role,
'https://') !== 0)) {
363 $role =
"urn:lti:role:ims/lis/{$role}";
364 $ok = in_array($role, $this->roles);
369 if (strpos($role,
'urn:') === 0) {
370 if (strpos($role,
'urn:lti:role:ims/lis/') === 0) {
371 $role2 =
'http://purl.imsglobal.org/vocab/lis/v2/membership#' . substr($role, 21);
372 if (substr($role, 21) ===
'TeachingAssistant') {
373 $role3 =
'http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant';
375 } elseif (strpos($role,
'urn:lti:instrole:ims/lis/') === 0) {
376 $role2 =
'http://purl.imsglobal.org/vocab/lis/v2/person#' . substr($role, 25);
377 $role3 =
'http://purl.imsglobal.org/vocab/lis/v2/institution/person#' . substr($role, 25);
378 } elseif (strpos($role,
'urn:lti:sysrole:ims/lis/') === 0) {
379 $role2 =
'http://purl.imsglobal.org/vocab/lis/v2/person#' . substr($role, 24);
380 $role3 =
'http://purl.imsglobal.org/vocab/lis/v2/system/person#' . substr($role, 24);
382 } elseif (strpos($role,
'http://purl.imsglobal.org/vocab/lis/v2/') === 0) {
383 if (strpos($role,
'http://purl.imsglobal.org/vocab/lis/v2/membership#') === 0) {
384 $role2 =
'urn:lti:role:ims/lis/' . substr($role, 50);
385 } elseif (strpos($role,
'http://purl.imsglobal.org/vocab/lis/v2/person#') === 0) {
386 $role2 =
'urn:lti:instrole:ims/lis/' . substr($role, 46);
387 $role3 =
'urn:lti:sysrole:ims/lis/' . substr($role, 46);
388 } elseif (strpos($role,
'http://purl.imsglobal.org/vocab/lis/v2/institution/person#') === 0) {
389 $role2 =
'urn:lti:instrole:ims/lis/' . substr($role, 58);
390 $role3 =
'http://purl.imsglobal.org/vocab/lis/v2/person#' . substr($role, 58);
391 } elseif (strpos($role,
'http://purl.imsglobal.org/vocab/lis/v2/system/person#') === 0) {
392 $role2 =
'urn:lti:sysrole:ims/lis/' . substr($role, 53);
393 $role3 =
'http://purl.imsglobal.org/vocab/lis/v2/person#' . substr($role, 53);
396 if (!empty($role2)) {
397 $ok = in_array($role2, $this->roles);
398 if (!$ok && !empty($role3)) {
399 $ok = in_array($role3, $this->roles);
Class to represent a platform user.
$ltiUserId
user ID as supplied in the last connection request.
$sourcedId
User's sourcedId.
__construct()
Class constructor.
setNames($firstname, $lastname, $fullname, $middlename=null)
Set the user's name.
$username
User's username.
isMember()
Check if the user is a member.
isManager()
Check if the user is a manager.
isInstructor()
Check if the user is an instructor.
isStaff()
Check if the user is staff.
isLearner()
Check if the user is a learner.
const PRINCIPAL_ROLES
List of principal roles for LTI 1.3.
isOfficer()
Check if the user is an officer.
$firstname
User's first name.
isContentDeveloper()
Check if the user is a content developer.
static $allowEmptyName
Allow user name field to be empty?
initialize()
Initialise the user.
$fullname
User's fullname.
$email
User's email address.
isAdmin()
Check if the user is an administrator (at any of the system, institution or context levels).
$middlename
User's middle name.
isTeachingAssistant()
Check if the user is a teaching assistant.
initialise()
Initialise the user.
isMentor()
Check if the user is a mentor.
setEmail($email, $defaultEmail=null)
Set the user's email address.
$lastname
User's last name (surname or family name).