19 declare(strict_types=1);
47 $this->
lng = $DIC->language();
48 $this->rbacSystem = $DIC->rbac()->system();
49 $this->
http = $DIC->http();
62 $command = self::convertLowerCamelCaseToUnderscoreCaseConversion($command);
63 $stopCommands = [
'create'];
65 if (in_array($command, $stopCommands,
true)) {
70 $public_room_ref = (
int)
$settings->get(
'public_room_ref',
'0');
73 $firstObjId = (
int) current(array_keys($objIds));
75 $admin_ref = (
int) current($refIds);
77 $DIC->ctrl()->setParameterByClass(ilObjChatroomAdminGUI::class,
'ref_id', $admin_ref);
82 'link' => $DIC->ctrl()->getLinkTargetByClass(ilObjChatroomAdminGUI::class,
'view-clientsettings'),
83 'permission' =>
'read',
86 'lng' =>
'client_settings',
87 'link' => $DIC->ctrl()->getLinkTargetByClass(
88 ilObjChatroomAdminGUI::class,
91 'permission' =>
'read' 97 'link' => $DIC->ctrl()->getLinkTargetByClass(ilObjChatroomAdminGUI::class,
'smiley'),
98 'permission' =>
'read' 101 $DIC->ctrl()->setParameterByClass(ilObjChatroomGUI::class,
'ref_id', $public_room_ref);
104 'lng' =>
'public_chat_settings',
105 'link' => $DIC->ctrl()->getLinkTargetByClass(ilObjChatroomGUI::class,
'settings-general'),
106 'permission' =>
'read',
110 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'settings-general'),
111 'permission' =>
'read' 115 'link' => $DIC->ctrl()->getLinkTargetByClass(ilObjChatroomGUI::class,
'ban-show'),
116 'permission' =>
'read' 121 $DIC->ctrl()->setParameterByClass(ilPermissionGUI::class,
'ref_id', $public_room_ref);
123 'lng' =>
'public_chat_permissions',
124 'link' => $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class,
'perm'),
125 'permission' =>
'read',
127 $DIC->ctrl()->clearParametersByClass(ilPermissionGUI::class);
129 $DIC->ctrl()->setParameterByClass(ilPermissionGUI::class,
'ref_id', $admin_ref);
131 'lng' =>
'perm_settings',
132 'link' => $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class,
'perm'),
133 'permission' =>
'edit_permission',
135 $DIC->ctrl()->clearParametersByClass(ilPermissionGUI::class);
137 $is_in_permission_gui = (
138 strtolower($DIC->ctrl()->getCmdClass()) === strtolower(ilPermissionGUI::class) ||
139 strtolower($DIC->ctrl()->getCmdClass()) === strtolower(ilObjectPermissionStatusGUI::class)
142 $commandParts = explode(
'_', $command, 2);
143 if ($command ===
'ban_show') {
144 $commandParts[0] =
'settings';
145 $commandParts[1] =
'ban';
146 } elseif ($command ===
'settings_general') {
147 $commandParts[0] =
'settings';
148 $commandParts[1] =
'settings';
149 } elseif ($command ===
'view_saveclientsettings') {
150 $commandParts[0] =
'view';
151 $commandParts[1] =
'clientsettings';
153 $is_in_permission_gui &&
154 $this->
http->wrapper()->query()->has(
'ref_id') &&
155 $this->
http->wrapper()->query()->retrieve(
'ref_id', $this->
refinery->kindlyTo()->int()) === $public_room_ref
157 $commandParts[0] =
'perm';
158 $DIC->ctrl()->setParameterByClass(ilPermissionGUI::class,
'ref_id', $public_room_ref);
160 $is_in_permission_gui &&
161 $this->
http->wrapper()->query()->has(
'ref_id') &&
162 $this->
http->wrapper()->query()->retrieve(
'ref_id', $this->
refinery->kindlyTo()->int()) === $admin_ref
164 $commandParts[0] =
'perm_settings';
165 $DIC->ctrl()->setParameterByClass(ilPermissionGUI::class,
'ref_id', $admin_ref);
179 return strtolower(preg_replace(
'/(.*?)-(.*?)/',
'$1_$2', $value));
192 foreach ($config as
$id => $tabDefinition) {
193 if (!$inRoom && !$this->rbacSystem->checkAccess($tabDefinition[
'permission'], $this->gui->getRefId())) {
204 if (isset($tabDefinition[
'enabled']) && !$tabDefinition[
'enabled']) {
211 $command[0] ===
$id && isset($tabDefinition[
'subtabs']) &&
212 is_array($tabDefinition[
'subtabs'])
214 foreach ($tabDefinition[
'subtabs'] as $subid => $subTabDefinition) {
217 $this->rbacSystem->checkAccess($tabDefinition[
'permission'], $this->gui->getRefId())
229 if (isset($subTabDefinition[
'enabled']) && !$subTabDefinition[
'enabled']) {
235 $this->
getLabel($subTabDefinition, $subid),
236 $subTabDefinition[
'link']
249 private function getLabel(array $tabDefinition,
string $id): string
251 if (isset($tabDefinition[
'lng'])) {
252 return $this->
lng->txt($tabDefinition[
'lng']);
255 return $this->
lng->txt($id);
269 if (count($commandParts) > 1) {
270 if (isset($config[$commandParts[0]])) {
271 $DIC->tabs()->activateTab($commandParts[0]);
272 $this->activated_tab = $commandParts[0];
274 if (isset($config[$commandParts[0]][
'subtabs'][$commandParts[1]])) {
275 $DIC->tabs()->activateSubTab($commandParts[1]);
276 $this->activated_sub_tab = $commandParts[1];
279 } elseif (count($commandParts) === 1) {
280 $DIC->tabs()->activateTab($commandParts[0]);
281 $this->activated_tab = $commandParts[0];
304 $command = self::convertLowerCamelCaseToUnderscoreCaseConversion($command);
305 $stopCommands = [
'create'];
307 if (in_array($command, $stopCommands,
true)) {
316 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'view'),
317 'permission' =>
'read' 321 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'history-byday'),
322 'permission' =>
'read',
323 'enabled' => $room ? $room->getSetting(
'enable_history') :
false,
326 'lng' =>
'history_by_day',
327 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'history-byday'),
328 'permission' =>
'read' 331 'lng' =>
'history_by_session',
332 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'history-bysession'),
333 'permission' =>
'read' 338 'lng' =>
'info_short',
339 'link' => $DIC->ctrl()->getLinkTargetByClass([get_class($this->gui), ilInfoScreenGUI::class],
'info'),
340 'permission' =>
'read' 344 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'settings-general'),
345 'permission' =>
'write',
348 'lng' =>
'settings_general',
349 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'settings-general'),
350 'permission' =>
'write' 356 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'ban-show'),
357 'permission' =>
'moderate',
360 'lng' =>
'bans_table',
361 'link' => $DIC->ctrl()->getLinkTarget($this->gui,
'ban-show'),
362 'permission' =>
'moderate' 368 'link' => $DIC->ctrl()->getLinkTargetByClass(ilExportGUI::class,
''),
369 'permission' =>
'write' 372 'lng' =>
'permissions',
373 'link' => $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class,
'perm'),
374 'permission' =>
'edit_permission' 378 $commandParts = explode(
'_', $command, 2);
379 if (strtolower($DIC->ctrl()->getCmdClass()) === strtolower(ilPermissionGUI::class)) {
380 $commandParts[0] =
'perm';
static checkUserPermissions($permissions, int $ref_id, bool $send_info=true)
Checks user permissions by given array and ref_id.
buildTabs(ilTabsGUI $tabs, array $config, array $command, bool $inRoom=true)
Builds tabs and subtabs using given $tabs, $config and $command parameters.
Interface GlobalHttpState.
activateTab(array $commandParts, array $config)
Activates tab or subtab if existing.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static convertLowerCamelCaseToUnderscoreCaseConversion(string $value)
Convert a value given in lower camel case conversion to underscore case conversion (e...
getAdminTabsForCommand(string $command)
Builds $config and $commandparts arrays to assign them as parameters when calling $this->buildTabs an...
string $activated_sub_tab
static _getAllReferences(int $id)
get all reference ids for object ID
static _getObjectsByType(string $obj_type="", int $owner=null)
addSubTab(string $a_id, string $a_text, string $a_link, string $a_frame="")
static http()
Fetches the global http state from ILIAS.
Class ilObjectGUI Basic methods of all Output classes.
Class ilChatroomTabGUIFactory.
getLabel(array $tabDefinition, string $id)
Returns label for tab by $tabDefinition or $id.
__construct(Container $dic, ilPlugin $plugin)
static byObjectId(int $object_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
getTabsForCommand(string $command)
Builds $config and $commandparts arrays to assign them as parameters when calling $this->buildTabs an...
addTab(string $a_id, string $a_text, string $a_link, string $a_frame="")
Add a Tab.