ILIAS  release_8 Revision v8.24
class.ilUsersGalleryGUI.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
26{
28 protected ilCtrl $ctrl;
30 protected ilLanguage $lng;
31 protected ilObjUser $user;
33 protected \ILIAS\UI\Factory $factory;
34 protected \ILIAS\UI\Renderer $renderer;
35 protected \ILIAS\HTTP\GlobalHttpState $http;
36 protected \ILIAS\Refinery\Factory $refinery;
37
39 {
41 global $DIC;
42
43 $this->ctrl = $DIC->ctrl();
44 $this->tpl = $DIC->ui()->mainTemplate();
45 $this->lng = $DIC->language();
46 $this->user = $DIC->user();
47 $this->rbacsystem = $DIC->rbac()->system();
48 $this->factory = $DIC->ui()->factory();
49 $this->renderer = $DIC->ui()->renderer();
50 $this->http = $DIC->http();
51 $this->refinery = $DIC->refinery();
52
53 $this->collection_provider = $collection_provider;
54 }
55
56 public function executeCommand(): void
57 {
58 $next_class = $this->ctrl->getNextClass();
59 $cmd = $this->ctrl->getCmd('view');
60
61 switch (strtolower($next_class)) {
62 case strtolower(ilPublicUserProfileGUI::class):
63 $profile_gui = new ilPublicUserProfileGUI(
64 $this->http->wrapper()->query()->retrieve(
65 'user',
66 $this->refinery->kindlyTo()->int()
67 )
68 );
69 $profile_gui->setBackUrl($this->ctrl->getLinkTarget($this, 'view'));
70 $this->ctrl->forwardCommand($profile_gui);
71 break;
72
73 default:
74 switch ($cmd) {
75 default:
76 $this->$cmd();
77 break;
78 }
79 break;
80 }
81 }
82
83 protected function view(): void
84 {
85 $template = $this->populateTemplate($this->collection_provider->getGroupedCollections());
86 $this->tpl->setContent($template->get());
87 }
88
93 protected function addActionSection(ilObjUser $user, array &$sections): void
94 {
95 $contact_btn_html = "";
96
97 if (
98 !$this->user->isAnonymous() &&
99 !$user->isAnonymous() &&
100 ilBuddySystem::getInstance()->isEnabled() &&
101 $this->user->getId() !== $user->getId()
102 ) {
103 $contact_btn_html = ilBuddySystemLinkButton::getInstanceByUserId($user->getId())->getHtml();
104 }
105
106 $ua_gui = ilUserActionGUI::getInstance(new ilGalleryUserActionContext(), $this->tpl, $this->user->getId());
107 $list_html = $ua_gui->renderDropDown($user->getId());
108
109 if ($contact_btn_html || $list_html) {
110 $sections[] = $this->factory->legacy(
111 "<div style='float:left; margin-bottom:5px;'>" . $contact_btn_html . "</div><div class='button-container'>&nbsp;" . $list_html . "</div>"
112 );
113 }
114 }
115
120 protected function populateTemplate(array $gallery_groups): ilTemplate
121 {
123 $tpl = new ilTemplate('tpl.users_gallery.html', true, true, 'Services/User');
124
126 $panel->setBody($this->lng->txt('no_gallery_users_available'));
127 $tpl->setVariable('NO_ENTRIES_HTML', json_encode($panel->getHTML(), JSON_THROW_ON_ERROR));
128
129 $groups_with_users = array_filter($gallery_groups, static function (ilUsersGalleryGroup $group): bool {
130 return count($group) > 0;
131 });
132 $groups_with_highlight = array_filter($groups_with_users, static function (ilUsersGalleryGroup $group): bool {
133 return $group->isHighlighted();
134 });
135
136 if (0 === count($groups_with_users)) {
137 $tpl->setVariable('NO_GALLERY_USERS', $panel->getHTML());
138 return $tpl;
139 }
140
142 $panel->setBody($this->lng->txt('no_gallery_users_available'));
143 $tpl->setVariable('NO_ENTRIES_HTML', json_encode($panel->getHTML(), JSON_THROW_ON_ERROR));
144
145 $cards = [];
146
147 foreach ($gallery_groups as $group) {
149
150 foreach ($group as $user) {
151 $card = $this->factory->card()->standard($user->getPublicName());
152 $avatar = $this->factory->image()->standard(
153 $user->getAggregatedUser()->getPersonalPicturePath('big'),
155 );
156
157 $sections = [];
158
159 if (count($groups_with_highlight) > 0) {
160 $card = $card->withHighlight($group->isHighlighted());
161 }
162
163 $sections[] = $this->factory->listing()->descriptive(
164 [
165 $this->lng->txt("username") => $user->getAggregatedUser()->getLogin(),
166 $this->lng->txt("crs_contact_responsibility") => $group->getLabel()
167 ]
168 );
169
170 $this->addActionSection($user->getAggregatedUser(), $sections);
171
172 if ($user->hasPublicProfile()) {
173 $this->ctrl->setParameterByClass(
174 ilPublicUserProfileGUI::class,
175 'user',
176 $user->getAggregatedUser()->getId()
177 );
178 $public_profile_url = $this->ctrl->getLinkTargetByClass(ilPublicUserProfileGUI::class, 'getHTML');
179
180 $avatar = $avatar->withAction($public_profile_url);
181 $card = $card->withTitleAction($public_profile_url);
182 }
183
184 $card = $card->withImage($avatar)->withSections($sections);
185
186 $cards[] = $card;
187 }
188 }
189
190 $tpl->setVariable('GALLERY_HTML', $this->renderer->render($this->factory->deck($cards)));
191
192 if ($this->collection_provider->hasRemovableUsers()) {
193 $tpl->touchBlock('js_remove_handler');
194 }
195
196 return $tpl;
197 }
198}
static getInstanceByGlobalUser()
Class ilCtrl provides processing control methods.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
language handling
User class.
hasPublicProfile()
returns true if public is profile, false otherwise
getPersonalPicturePath(string $a_size="small", bool $a_force_pic=false)
getPublicName()
returns firstname lastname and login if profile is public, login otherwise
static getInstance()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
special template class to simplify handling of ITX/PEAR
static getInstance(ilUserActionContext $a_user_action_context, ilGlobalTemplateInterface $a_global_tpl, int $a_current_user_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ILIAS UI Renderer $renderer
ilGlobalTemplateInterface $tpl
populateTemplate(array $gallery_groups)
ILIAS Refinery Factory $refinery
ilUsersGalleryCollectionProvider $collection_provider
ILIAS HTTP GlobalHttpState $http
addActionSection(ilObjUser $user, array &$sections)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28
if(isset($_FILES['img_file']) &&is_array($_FILES['img_file'])) $panel
Definition: imgupload.php:198
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
touchBlock(string $block)
overwrites ITX::touchBlock.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc