ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilUsersGalleryGUI.php
Go to the documentation of this file.
1 <?php
2 
3 declare(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 
38  public function __construct(ilUsersGalleryCollectionProvider $collection_provider)
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'),
154  $user->getPublicName()
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 }
ILIAS Refinery Factory $refinery
static getInstanceByGlobalUser()
touchBlock(string $block)
overwrites ITX::touchBlock.
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...
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...
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...
ilUsersGalleryCollectionProvider $collection_provider
global $DIC
Definition: feed.php:28
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.
ilGlobalTemplateInterface $tpl
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
populateTemplate(array $gallery_groups)
ILIAS HTTP GlobalHttpState $http
ILIAS UI Renderer $renderer
static getInstance()
__construct(Container $dic, ilPlugin $plugin)
addActionSection(ilObjUser $user, array &$sections)
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...