47 public static string $SCOPE =
'https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly';
91 $this->scope = self::$SCOPE;
104 public function get(
string $role = null,
int $limit = null)
106 return $this->
getMembers(
false, $role, $limit);
117 return $this->
getMembers(
true, $role, $limit);
127 private function getMembers(
bool $withGroups,
string $role = null,
int $limit = null)
132 $isLink = is_a($this->source,
'ceLTIc\LTI\ResourceLink');
133 $parameters = array();
135 $parameters[
'role'] = $role;
137 if (is_null($limit)) {
140 if (is_null($limit)) {
141 $limit = self::$defaultLimit;
143 if (!empty($limit)) {
144 $parameters[
'limit'] = strval($limit);
147 $context = $this->source->getContext();
148 if (!empty($this->source->getId())) {
149 $parameters[
'rlid'] = $this->source->getId();
151 if ($withGroups && ($this->mediaType === self::MEDIA_TYPE_MEMBERSHIPS_NRPS) && !empty(
$context)) {
153 $this->source->groupSets =
$context->groupSets;
154 $this->source->groups =
$context->groups;
155 $parameters[
'groups'] =
'true';
157 } elseif ($withGroups && ($this->mediaType === self::MEDIA_TYPE_MEMBERSHIPS_NRPS)) {
158 $this->source->getGroups();
159 $parameters[
'groups'] =
'true';
161 $userResults = array();
162 $memberships = array();
169 if (isset(
$http->responseJson->pageOf) && isset(
$http->responseJson->pageOf->membershipSubject) &&
170 isset(
$http->responseJson->pageOf->membershipSubject->membership)) {
172 $memberships = array_merge($memberships,
$http->responseJson->pageOf->membershipSubject->membership);
173 if (!empty(
$http->responseJson->nextPage)) {
174 $http->relativeLinks[
'next'] =
$http->responseJson->nextPage;
176 } elseif (isset(
$http->responseJson->members)) {
177 $memberships = array_merge($memberships,
$http->responseJson->members);
179 if (!$this->pagingMode &&
$http->hasRelativeLink(
'next')) {
181 $this->endpoint =
$url;
182 $parameters = array();
185 $userResults =
false;
189 if ($userResults !==
false) {
194 foreach ($memberships as $membership) {
196 $member = $membership->member;
202 $userresult = new \ILIAS\LTI\ToolProvider\UserResult();
203 $userresult->ltiUserId = $member->userId;
207 $firstname = (isset($member->givenName)) ? $member->givenName :
'';
208 $lastname = (isset($member->familyName)) ? $member->familyName :
'';
209 $fullname = (isset($member->name)) ? $member->name :
'';
210 $userresult->setNames($firstname, $lastname, $fullname);
213 if (isset($member->sourcedId)) {
214 $userresult->sourcedId = $member->sourcedId;
218 if (isset($member->ext_username)) {
219 $userresult->username = $member->ext_username;
220 } elseif (isset($member->ext_user_username)) {
221 $userresult->username = $member->ext_user_username;
222 } elseif (isset($member->custom_username)) {
223 $userresult->username = $member->custom_username;
224 } elseif (isset($member->custom_user_username)) {
225 $userresult->username = $member->custom_user_username;
229 $email = (isset($member->email)) ? $member->email :
'';
230 $userresult->setEmail(
$email, $this->source->getPlatform()->defaultEmail);
233 if (isset($membership->role)) {
242 if (isset($membership->message)) {
243 foreach ($membership->message as
$message) {
244 if (isset($message->message_type) && (($message->message_type ===
'basic-lti-launch-request') || ($message->message_type) ===
'LtiResourceLinkRequest')) {
245 if (isset($message->lis_result_sourcedid)) {
246 $userresult->ltiResultSourcedId = $message->lis_result_sourcedid;
249 if (isset($message->ext)) {
250 if (empty($userresult->username)) {
251 if (!empty($message->ext->username)) {
252 $userresult->username = $message->ext->username;
253 } elseif (!empty($message->ext->user_username)) {
254 $userresult->username = $message->ext->user_username;
258 if (isset($message->custom)) {
259 if (empty($userresult->username)) {
260 if (!empty($message->custom->username)) {
261 $userresult->username = $message->custom->username;
262 } elseif (!empty($message->custom->user_username)) {
263 $userresult->username = $message->custom->user_username;
271 if (!$doSave && isset($member->resultSourcedId)) {
272 $userresult->setResourceLinkId($this->source->getId());
273 $userresult->ltiResultSourcedId = $member->resultSourcedId;
280 $userResults[] = $userresult;
288 $member = $membership;
294 $userresult = new \ILIAS\LTI\ToolProvider\UserResult();
295 $userresult->ltiUserId = $member->user_id;
299 $firstname = (isset($member->given_name)) ? $member->given_name :
'';
300 $lastname = (isset($member->family_name)) ? $member->family_name :
'';
301 $fullname = (isset($member->name)) ? $member->name :
'';
302 $userresult->setNames($firstname, $lastname, $fullname);
305 if (isset($member->lis_person_sourcedid)) {
306 $userresult->sourcedId = $member->lis_person_sourcedid;
310 $email = (isset($member->email)) ? $member->email :
'';
311 $userresult->setEmail(
$email, $this->source->getPlatform()->defaultEmail);
314 if (isset($member->roles)) {
322 if (isset($member->message)) {
323 foreach ($member->message as
$message) {
324 if (isset($message->{
'https://purl.imsglobal.org/spec/lti/claim/message_type'}) && (($message->{
'https://purl.imsglobal.org/spec/lti/claim/message_type'} ===
'basic-lti-launch-request') || (
$message->{
'https://purl.imsglobal.org/spec/lti/claim/message_type'}) ===
'LtiResourceLinkRequest')) {
325 if (isset(
$message->{
'https://purl.imsglobal.org/spec/lti-bo/claim/basicoutcome'}) &&
326 isset(
$message->{
'https://purl.imsglobal.org/spec/lti-bo/claim/basicoutcome'}->lis_result_sourcedid)) {
327 $userresult->ltiResultSourcedId =
$message->{
'https://purl.imsglobal.org/spec/lti-bo/claim/basicoutcome'}->lis_result_sourcedid;
330 if (isset(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/ext'})) {
331 if (empty($userresult->username)) {
332 if (!empty(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/ext'}->username)) {
333 $userresult->username =
$message->{
'https://purl.imsglobal.org/spec/lti/claim/ext'}->username;
334 } elseif (!empty(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/ext'}->user_username)) {
335 $userresult->username =
$message->{
'https://purl.imsglobal.org/spec/lti/claim/ext'}->user_username;
339 if (isset(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/custom'})) {
340 if (empty($userresult->username)) {
341 if (!empty(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/custom'}->username)) {
342 $userresult->username =
$message->{
'https://purl.imsglobal.org/spec/lti/claim/custom'}->username;
343 } elseif (!empty(
$message->{
'https://purl.imsglobal.org/spec/lti/claim/custom'}->user_username)) {
344 $userresult->username =
$message->{
'https://purl.imsglobal.org/spec/lti/claim/custom'}->user_username;
356 $userResults[] = $userresult;
357 if (isset($member->group_enrollments)) {
358 $userresult->groups = array();
359 foreach ($member->group_enrollments as $group) {
360 $groupId = $group->group_id;
361 if (!array_key_exists($groupId, $this->source->groups)) {
362 $this->source->groups[$groupId] = array(
'title' =>
"Group {$groupId}");
364 if (!empty($this->source->groups[$groupId][
'set'])) {
365 $this->source->groupSets[$this->source->groups[$groupId][
'set']][
'num_members']++;
366 if ($userresult->isStaff()) {
367 $this->source->groupSets[$this->source->groups[$groupId][
'set']][
'num_staff']++;
369 if ($userresult->isLearner()) {
370 $this->source->groupSets[$this->source->groups[$groupId][
'set']][
'num_learners']++;
373 $userresult->groups[] = $groupId;
386 if ($isLink && !$this->pagingMode) {
387 foreach ($oldUsers as
$id => $userresult) {
388 $userresult->delete();
Class ChatMainBarProvider .
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)