ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilChatroomTabFactory.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
12 {
16  private $gui;
17 
21  private $lng;
22 
29  public function __construct(ilObjectGUI $gui)
30  {
35  global $lng;
36 
37  $this->gui = $gui;
38  $this->lng = $lng;
39  }
40 
47  private function activateTab(array $commandParts, $config)
48  {
52  global $ilTabs;
53 
54  if(count($commandParts) > 1)
55  {
56  if(isset($config[$commandParts[0]]))
57  {
58  $ilTabs->activateTab($commandParts[0]);
59 
60  if(isset($config[$commandParts[0]]['subtabs'][$commandParts[1]]))
61  {
62  $ilTabs->activateSubTab($commandParts[1]);
63  }
64  }
65  }
66  else if(count($commandParts) == 1)
67  {
68  $ilTabs->activateTab($commandParts[0]);
69  }
70  }
71 
77  public function getAdminTabsForCommand($command)
78  {
84  global $ilTabs, $ilCtrl, $ilDB;
85 
86  $command = $this->convertLowerCamelCaseToUnderscoreCaseConversion($command);
87  $stopCommands = array('create');
88 
89  if(in_array($command, $stopCommands))
90  {
91  return;
92  }
93 
94  $settings = new ilSetting('chatroom');
95  $public_room_ref = $settings->get('public_room_ref');
96 
97  $query = 'SELECT ref_id FROM object_reference INNER JOIN object_data ON object_data.obj_id = object_reference.obj_id WHERE type = ' . $ilDB->quote('chta', 'text');
98  $rset = $ilDB->query($query);
99  $data = $ilDB->fetchAssoc($rset);
100  $admin_ref = $data['ref_id'];
101 
102  $ilCtrl->setParameterByClass('ilObjChatroomAdminGUI', 'ref_id', $admin_ref);
103 
104  $config = array(
105  'view' => array(
106  'lng' => 'settings',
107  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomAdminGUI', 'view-clientsettings'),
108  'permission' => 'read',
109  'subtabs' => array(
110  'clientsettings' => array(
111  'lng' => 'client_settings',
112  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomAdminGUI', 'view-clientsettings'),
113  'permission' => 'read'
114  ),
115  'serversettings' => array(
116  'lng' => 'server_settings',
117  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomAdminGUI', 'view-serversettings'),
118  'permission' => 'read'
119  )
120  )
121  ),
122  'smiley' => array(
123  'lng' => 'smiley',
124  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomAdminGUI', 'smiley'),
125  'permission' => 'read'
126  )
127  );
128  $ilCtrl->setParameterByClass('ilObjChatroomGUI', 'ref_id', $public_room_ref);
129 
130  $config['settings'] = array(
131  'lng' => 'public_chat_settings',
132  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomGUI', 'settings-general'),
133  'permission' => 'write',
134  'subtabs' => array(
135  'settings' => array(
136  'lng' => 'settings',
137  'link' => $ilCtrl->getLinkTarget($this->gui, 'settings-general'),
138  'permission' => 'write'
139  ),
140  'ban' => array(
141  'lng' => 'bans',
142  'link' => $ilCtrl->getLinkTargetByClass('ilObjChatroomGUI', 'ban-show'),
143  'permission' => 'moderate'
144  )
145  )
146  );
147 
148  $ilCtrl->setParameterByClass('ilPermissionGUI', 'ref_id', $public_room_ref);
149  $config['perm'] = array(
150  'lng' => 'public_chat_permissions',
151  'link' => $ilCtrl->getLinkTargetByClass('ilPermissionGUI', 'perm'),
152  'permission' => 'write',
153  );
154  $ilCtrl->clearParametersByClass('ilPermissionGUI');
155 
156  $ilCtrl->setParameterByClass('ilPermissionGUI', 'ref_id', $admin_ref);
157  $config['perm_settings'] = array(
158  'lng' => 'perm_settings',
159  'link' => $ilCtrl->getLinkTargetByClass('ilpermissiongui', 'perm'),
160  'permission' => 'write',
161  );
162  $ilCtrl->clearParametersByClass('ilPermissionGUI');
163 
164  $commandParts = explode('_', $command, 2);
165  if($command == 'ban_show')
166  {
167  $commandParts[0] = 'settings';
168  $commandParts[1] = 'ban';
169  }
170  else if($command == 'settings_general')
171  {
172  $commandParts[0] = 'settings';
173  $commandParts[1] = 'settings';
174  }
175  else if($command == 'view_savesettings')
176  {
177  $commandParts[0] = 'view';
178  $commandParts[1] = 'serversettings';
179  }
180  else if($command == 'view_saveclientsettings')
181  {
182  $commandParts[0] = 'view';
183  $commandParts[1] = 'clientsettings';
184  }
185  else if($ilCtrl->getCmdClass() == 'ilpermissiongui' && $_REQUEST['ref_id'] == $public_room_ref)
186  {
187  $commandParts[0] = 'perm';
188  $ilCtrl->setParameterByClass('ilPermissionGUI', 'ref_id', $public_room_ref);
189  }
190  else if($ilCtrl->getCmdClass() == 'ilpermissiongui' && $_REQUEST['ref_id'] == $admin_ref)
191  {
192  $commandParts[0] = 'perm_settings';
193  $ilCtrl->setParameterByClass('ilPermissionGUI', 'ref_id', $admin_ref);
194  }
195 
196  $this->buildTabs($ilTabs, $config, $commandParts);
197  $this->activateTab($commandParts, $config);
198  }
199 
205  public function getTabsForCommand($command)
206  {
211  global $ilTabs, $ilCtrl;
212 
213  $command = $this->convertLowerCamelCaseToUnderscoreCaseConversion($command);
214  $stopCommands = array('create');
215 
216  if(in_array($command, $stopCommands))
217  {
218  return;
219  }
220 
221  require_once 'Modules/Chatroom/classes/class.ilChatroom.php';
222  $room = ilChatroom::byObjectId($this->gui->object->getId());
223 
224  $config = array(
225  'view' => array(
226  'lng' => 'view',
227  'link' => $ilCtrl->getLinkTarget($this->gui, 'view'),
228  'permission' => 'read'
229  ),
230  'history' => array(
231  'lng' => 'history',
232  'link' => $ilCtrl->getLinkTarget($this->gui, 'history-byday'),
233  'permission' => 'read',
234  'enabled' => $room ? $room->getSetting('enable_history') : false,
235  'subtabs' => array(
236  'byday' => array(
237  'lng' => 'history_by_day',
238  'link' => $ilCtrl->getLinkTarget($this->gui, 'history-byday'),
239  'permission' => 'read'
240  ),
241  'bysession' => array(
242  'lng' => 'history_by_session',
243  'link' => $ilCtrl->getLinkTarget($this->gui, 'history-bysession'),
244  'permission' => 'read'
245  )
246  )
247  ),
248  'info' => array(
249  'lng' => 'info_short',
250  'link' => $ilCtrl->getLinkTargetByClass(array(get_class($this->gui), 'ilinfoscreengui'), 'info'),
251  'permission' => 'read'
252  ),
253  'settings' => array(
254  'lng' => 'settings',
255  'link' => $ilCtrl->getLinkTarget($this->gui, 'settings-general'),
256  'permission' => 'write',
257  'subtabs' => array(
258  'general' => array(
259  'lng' => 'settings_general',
260  'link' => $ilCtrl->getLinkTarget($this->gui, 'settings-general'),
261  'permission' => 'write'
262  )
263  )
264  ),
265  'ban' => array(
266  'lng' => 'bans',
267  'link' => $ilCtrl->getLinkTarget($this->gui, 'ban-show'),
268  'permission' => 'moderate',
269  'subtabs' => array(
270  'show' => array(
271  'lng' => 'bans_table',
272  'link' => $ilCtrl->getLinkTarget($this->gui, 'ban-show'),
273  'permission' => 'moderate'
274  )
275  )
276  ),
277  'perm' => array(
278  'lng' => 'permissions',
279  'link' => $ilCtrl->getLinkTargetByClass('ilpermissiongui', 'perm'),
280  'permission' => 'write'
281  )
282  );
283 
284  $commandParts = explode('_', $command, 2);
285 
286  if($ilCtrl->getCmdClass() == 'ilpermissiongui')
287  {
288  $commandParts[0] = 'perm';
289  }
290 
291  $this->buildTabs($ilTabs, $config, $commandParts);
292  $this->activateTab($commandParts, $config);
293  }
294 
302  private function buildTabs(ilTabsGUI $tabs, $config, $command)
303  {
307  global $rbacsystem;
308 
309  require_once 'Modules/Chatroom/classes/class.ilChatroom.php';
310  foreach($config as $id => $tabDefinition)
311  {
312  if(!ilChatroom::checkUserPermissions($tabDefinition['permission'], $this->gui->getRefId(), false))
313  {
314  continue;
315  }
316  else if(isset($tabDefinition['enabled']) && !$tabDefinition['enabled'])
317  {
318  continue;
319  }
320 
321  $tabs->addTab($id, $this->getLabel($tabDefinition, $id), $tabDefinition['link']);
322 
323  if($command[0] == $id && isset($tabDefinition['subtabs']) &&
324  is_array($tabDefinition['subtabs'])
325  )
326  {
327  foreach($tabDefinition['subtabs'] as $subid => $subTabDefinition)
328  {
329  if(!$rbacsystem->checkAccess($subTabDefinition['permission'], $this->gui->getRefId()))
330  {
331  continue;
332  }
333  else if(isset($subTabDefinition['enabled']) && !$subTabDefinition['enabled'])
334  {
335  continue;
336  }
337  $tabs->addSubTab(
338  $subid, $this->getLabel($subTabDefinition, $subid),
339  $subTabDefinition['link']
340  );
341  }
342  }
343  }
344  }
345 
355  private function getLabel($tabDefinition, $id)
356  {
357  if(isset($tabDefinition['lng']))
358  return $this->lng->txt($tabDefinition['lng']);
359  else
360  return $this->lng->txt($id);
361  }
362 
368  public static function convertLowerCamelCaseToUnderscoreCaseConversion($value)
369  {
370  return strtolower(preg_replace('/(.*?)-(.*?)/', '$1_$2', $value));
371  }
372 
379  public static function convertUnderscoreCaseToLowerCamelCaseConversion($value, $upper_case_first = FALSE)
380  {
381  $tokens = (array)explode('_', $value);
382  $value = '';
383 
384  foreach($tokens as $token)
385  {
386  $value .= ucfirst($token);
387  }
388 
389  if($upper_case_first === FALSE)
390  {
391  $value = strtolower($value, 0, 1) . substr($value, 1);
392  }
393 
394  return $value;
395  }
396 }
ILIAS Setting Class.
Tabs GUI.
Class ilChatroomTabFactory.
static convertLowerCamelCaseToUnderscoreCaseConversion($value)
Convert a value given in lower camel case conversion to underscore case conversion (e...
global $ilCtrl
Definition: ilias.php:18
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
Class ilObjectGUI Basic methods of all Output classes.
addSubTab($a_id, $a_text, $a_link, $a_frame="")
Add a Subtab.
global $ilDB
addTab($a_id, $a_text, $a_link, $a_frame="")
Add a Tab.
static byObjectId($object_id)
Returns ilChatroom object by given $object_id.
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
getLabel($tabDefinition, $id)
Returns label for tab by $tabDefinition or $id.
static convertUnderscoreCaseToLowerCamelCaseConversion($value, $upper_case_first=FALSE)
Convert a value given in underscore case conversion to lower camel case conversion (e...