ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f87
ilObjectPermissionStatusGUI Class Reference

This class displays the permission status of a user concerning a specific object. More...

+ Collaboration diagram for ilObjectPermissionStatusGUI:

Public Member Functions

 __construct (&$a_obj)
 Constructor public. More...
 
executeCommand ()
 execute command More...
 
 perminfo ()
 cmd function More...
 
 addToolbar ()
 Creates Toolbar entries. More...
 
 accessStatusInfo ()
 Access- and Statusinformation Info. More...
 
 accessPermissionsTable ()
 Access Permissions Table. More...
 
 availableRolesTable ()
 Available Roles Table. More...
 
 getAssignedValidRoles ()
 get Assigned Valid Roles More...
 
 getCommands ($a_type)
 get Commands More...
 
 getUser ()
 ilUser More...
 
 getAccessStatusInfoData ()
 Access Status Info Data. More...
 
 getAccessPermissionTableData ()
 Access Permissions Table Data. More...
 
 getAvailableRolesTableData ()
 Available Roles Table Data. More...
 

Data Fields

 $user
 
 $lng
 
 $ilCtrl
 
 $tpl
 
 $object
 
 $rbacreview
 
 $user_roles
 
 $global_roles
 
 $valid_roles
 
 $assigned_valid_roles
 
const IMG_OK = 0
 
const IMG_NOT_OK = 1
 

Detailed Description

This class displays the permission status of a user concerning a specific object.

("Permissions" -> "Permission of User")

Author
Sascha Hofmann sasch.nosp@m.ahof.nosp@m.mann@.nosp@m.gmx..nosp@m.de
Version
$Id$

ilObjectPermissionStatusGUI: ilRepositorySearchGUI

Definition at line 15 of file class.ilObjectPermissionStatusGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjectPermissionStatusGUI::__construct ( $a_obj)

Constructor public.

Definition at line 42 of file class.ilObjectPermissionStatusGUI.php.

References $ilCtrl, $lng, $rbacreview, $tpl, getAssignedValidRoles(), and getUser().

43  {
44  global $ilCtrl,$lng,$rbacreview, $tpl;
45 
46  $this->lng = $lng;
47  $this->ilCtrl = $ilCtrl;
48  $this->tpl = $tpl;
49  $this->object = $a_obj;
50  $this->rbacreview = $rbacreview;
51 
52  $this->user = $this->getUser();
53  $this->user_roles = $rbacreview->assignedRoles($this->user->getId());
54  $this->global_roles = $rbacreview->getGlobalRoles();
55  $this->valid_roles = $rbacreview->getParentRoleIds($this->object->getRefId());
56  $this->assigned_valid_roles = $this->getAssignedValidRoles();
57 
58  }
This class provides processing control methods.
getAssignedValidRoles()
get Assigned Valid Roles
+ Here is the call graph for this function:

Member Function Documentation

◆ accessPermissionsTable()

ilObjectPermissionStatusGUI::accessPermissionsTable ( )

Access Permissions Table.

Returns
string HTML

Definition at line 154 of file class.ilObjectPermissionStatusGUI.php.

References getAccessPermissionTableData().

Referenced by perminfo().

155  {
156  include_once("./Services/AccessControl/classes/class.ilAccessPermissionsStatusTableGUI.php");
157 
158  $table = new ilAccessPermissionsStatusTableGUI($this, "perminfo");
159 
160  $table->setData($this->getAccessPermissionTableData());
161  $table->setTitle($this->lng->txt("info_access_permissions"));
162 
163  return $table->getHTML();
164  }
Table for Acces Permissons in Permission > Permission of User.
getAccessPermissionTableData()
Access Permissions Table Data.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ accessStatusInfo()

ilObjectPermissionStatusGUI::accessStatusInfo ( )

Access- and Statusinformation Info.

Returns
string HTML

Definition at line 133 of file class.ilObjectPermissionStatusGUI.php.

References $data, getAccessStatusInfoData(), and ilCtrl\getFormAction().

Referenced by perminfo().

134  {
135  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
136 
137  $info = new ilInfoScreenGUI(new stdClass());
138  $info->setFormAction($this->ilCtrl->getFormAction($this));
139 
140  $info->addSection($this->lng->txt("info_access_and_status_info"));
141 
142  foreach($this->getAccessStatusInfoData() as $data)
143  {
144  $info->addProperty($data[0], $data[1]);
145  }
146 
147  return $info->getHTML();
148  }
getAccessStatusInfoData()
Access Status Info Data.
This class provides processing control methods.
Class ilInfoScreenGUI.
getFormAction(&$a_gui_obj, $a_fallback_cmd="", $a_anchor="", $a_asynch=false, $xml_style=true)
Get form action url for gui class object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addToolbar()

ilObjectPermissionStatusGUI::addToolbar ( )

Creates Toolbar entries.

Definition at line 106 of file class.ilObjectPermissionStatusGUI.php.

References ilCtrl\getFormAction(), ilCtrl\getLinkTargetByClass(), and ilTextInputGUI\setDataSource().

Referenced by perminfo().

107  {
108  global $ilToolbar;
109 
110  $ilToolbar->setFormAction($this->ilCtrl->getFormAction($this, "perminfo"));
111 
112  $ilToolbar->addText($this->lng->txt('user'));
113 
114  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
115 
116  $login = new ilTextInputGUI($this->lng->txt("username"), "user_login");
117  $login->setDataSource($this->ilCtrl->getLinkTargetByClass(array(get_class($this),
118  'ilRepositorySearchGUI'), 'doUserAutoComplete', '', true));
119  $login->setSize(15);
120  $login->setValue($this->user->getLogin());
121 
122  $ilToolbar->addInputItem($login);
123 
124  $ilToolbar->addFormButton($this->lng->txt("info_change_user_view"), "perminfo");
125 
126  //$ilToolbar->addText($lng->txt("info_enter_login_or_id"));
127  }
This class provides processing control methods.
setDataSource($href, $a_delimiter=null)
set datasource link for js autocomplete
getLinkTargetByClass($a_class, $a_cmd="", $a_anchor="", $a_asynch=false, $xml_style=true)
Get link target for command using gui class name.
This class represents a text property in a property form.
getFormAction(&$a_gui_obj, $a_fallback_cmd="", $a_anchor="", $a_asynch=false, $xml_style=true)
Get form action url for gui class object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ availableRolesTable()

ilObjectPermissionStatusGUI::availableRolesTable ( )

Available Roles Table.

Returns
string HTML

Definition at line 170 of file class.ilObjectPermissionStatusGUI.php.

References getAvailableRolesTableData().

Referenced by perminfo().

171  {
172  include_once("./Services/AccessControl/classes/class.ilAvailableRolesStatusTableGUI.php");
173 
174  $table = new ilAvailableRolesStatusTableGUI($this, "perminfo");
175 
176  $table->setData($this->getAvailableRolesTableData());
177  $table->setTitle($this->lng->txt("info_available_roles"));
178 
179  return $table->getHTML();
180  }
getAvailableRolesTableData()
Available Roles Table Data.
Table for Available Roles in Permission > Permission of User.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ executeCommand()

& ilObjectPermissionStatusGUI::executeCommand ( )

execute command

Definition at line 63 of file class.ilObjectPermissionStatusGUI.php.

References $cmd, $ilCtrl, ilCtrl\forwardCommand(), ilCtrl\getCmd(), ilCtrl\getNextClass(), and ilCtrl\setReturn().

64  {
65  global $ilCtrl;
66 
67  // determine next class in the call structure
68  $next_class = $this->ilCtrl->getNextClass($this);
69 
70  switch($next_class)
71  {
72  case 'ilrepositorysearchgui':
73  include_once('./Services/Search/classes/class.ilRepositorySearchGUI.php');
74  $rep_search =& new ilRepositorySearchGUI();
75  $this->ilCtrl->setReturn($this,'perminfo');
76  $this->ilCtrl->forwardCommand($rep_search);
77  break;
78 
79  default:
80  $cmd = $this->ilCtrl->getCmd();
81  $this->$cmd();
82  break;
83  }
84  }
getNextClass()
Get next class in the control path from the current class to the target command class.
This class provides processing control methods.
$cmd
Definition: sahs_server.php:35
setReturn(&$a_gui_obj, $a_cmd)
Set return command.
getCmd($a_default_cmd="", $a_safe_commands="")
Determines current get/post command.
& forwardCommand(&$a_gui_object)
Forward flow of control to next gui class this invokes the executeCommand() method of the gui object ...
+ Here is the call graph for this function:

◆ getAccessPermissionTableData()

ilObjectPermissionStatusGUI::getAccessPermissionTableData ( )

Access Permissions Table Data.

Returns
array

Definition at line 367 of file class.ilObjectPermissionStatusGUI.php.

References ilRbacReview\_getOperationList(), getAssignedValidRoles(), and ilPlugin\lookupTxt().

Referenced by accessPermissionsTable().

368  {
369  global $ilAccess,$ilObjDataCache,$objDefinition;
370 
371  // get all possible operation of current object
372  $ops_list = ilRbacReview::_getOperationList($this->object->getType());
373 
374  $counter = 0;
375  $result_set = array();
376 
377  // check permissions of user
378  foreach ($ops_list as $ops)
379  {
380  $access = $ilAccess->doRBACCheck($ops['operation'],"info",$this->object->getRefId(),$this->user->getId(),$this->object->getType());
381 
382  $result_set[$counter]["img"] = $access ? self::IMG_OK : self::IMG_NOT_OK;
383 
384  if (substr($ops['operation'], 0, 7) == "create_" &&
385  $objDefinition->isPlugin(substr($ops['operation'], 7)))
386  {
387  $result_set[$counter]["operation"] = ilPlugin::lookupTxt("rep_robj", substr($ops['operation'],7),
388  #$this->object->getType()."_".$ops['operation']);
389  'rbac_'.$ops['operation']);
390  }
391  else if ($objDefinition->isPlugin($this->object->getType()))
392  {
393  $result_set[$counter]["operation"] = ilPlugin::lookupTxt("rep_robj", $this->object->getType(),
394  $this->object->getType()."_".$ops['operation']);
395  }
396  elseif(substr($ops['operation'],0,7) == 'create_')
397  {
398  $result_set[$counter]["operation"] = $this->lng->txt('rbac_'.$ops['operation']);
399  }
400  else
401  {
402  $result_set[$counter]["operation"] = $this->lng->txt($this->object->getType()."_".$ops['operation']);
403  }
404 
405  $list_role = "";
406 
407  // Check ownership
408  if($this->user->getId() == $ilObjDataCache->lookupOwner($this->object->getId()))
409  {
410  if(
411  (substr($ops['operation'],0,7) != 'create_') and
412  ($ops['operation'] != 'edit_permission') and
413  ($ops['operation'] != 'edit_leanring_progress')
414  )
415  {
416  $list_role[] = $this->lng->txt('info_owner_of_object');
417  }
418  }
419  // get operations on object for each assigned role to user
420  foreach ($this->getAssignedValidRoles() as $role)
421  {
422  if (in_array($ops['ops_id'],$role['ops']))
423  {
424  $list_role[] = $role['translation'];
425  }
426  }
427 
428  if (empty($list_role))
429  {
430  $list_role[] = $this->lng->txt('none');
431  }
432 
433 
434  $result_set[$counter]["role_ownership"] = $list_role;
435 
436  ++$counter;
437  }
438 
439  return $result_set;
440  }
static _getOperationList($a_type=null)
get operation list by object type public static
static lookupTxt($a_mod_prefix, $a_pl_id, $a_lang_var)
Lookup language text.
getAssignedValidRoles()
get Assigned Valid Roles
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAccessStatusInfoData()

ilObjectPermissionStatusGUI::getAccessStatusInfoData ( )

Access Status Info Data.

Returns
array

Definition at line 283 of file class.ilObjectPermissionStatusGUI.php.

References $cmd, getAssignedValidRoles(), getCommands(), and IL_NO_PARENT_ACCESS.

Referenced by accessStatusInfo().

284  {
285  global $ilAccess;
286  $infos = array();
287 
288  $result_set[0][] = $this->lng->txt("info_view_of_user");
289  $result_set[0][] = $this->user->getFullname()." (#".$this->user->getId().")";
290 
291  $assigned_valid_roles = array();
292 
293  foreach ($this->getAssignedValidRoles() as $role)
294  {
295  $assigned_valid_roles[] = $role["translation"];
296  }
297 
298  $roles_str = implode(", ",$assigned_valid_roles);
299 
300  $result_set[1][] = $this->lng->txt("roles");
301  $result_set[1][] = $roles_str;
302 
303  $result_set[2][] = $this->lng->txt("status");
304 
305  $ilAccess->clear();
306  $ilAccess->checkAccessOfUser(
307  $this->user->getId(),
308  'read',
309  '',
310  $this->object->getRefId(),
311  $this->object->getType(),
312  $this->object->getId()
313  );
314 
315  $infos = array_merge($infos,$ilAccess->getInfo());
316 
317  $cmds = $this->getCommands($this->object->getType());
318 
319  foreach ($cmds as $cmd)
320  {
321  $ilAccess->clear();
322  $ilAccess->doStatusCheck($cmd['permission'],$cmd['cmd'],$this->object->getRefId(),$this->user->getId(),$this->object->getId(),$this->object->getType());
323  $infos = array_merge($infos,$ilAccess->getInfo());
324  }
325 
326  $alert = "il_ItemAlertProperty";
327  $okay = "il_ItemOkayProperty";
328  $text = "";
329 
330  if (!$infos)
331  {
332  $text = "<span class=\"".$okay."\">".$this->lng->txt("access")."</span><br/> ";
333  }
334  else
335  {
336  foreach ($infos as $info)
337  {
338  switch ($info['type'])
339  {
340  case IL_STATUS_MESSAGE:
341  $text .= "<span class=\"".$okay."\">".$info['text']."</span><br/> ";
342  break;
343 
344  case IL_NO_PARENT_ACCESS:
345  $factory = new ilObjectFactory();
346  $obj = $factory->getInstanceByRefId($info['data']);
347  $text .= "<span class=\"".$alert."\">".$info['text']." (".$this->lng->txt("obj_".$obj->getType())." #".$obj->getId().": ".$obj->getTitle().")</span><br/> ";
348  break;
349 
350  default:
351  $text .= "<span class=\"".$alert."\">".$info['text']."</span><br/> ";
352  break;
353 
354  }
355  }
356  }
357 
358  $result_set[2][] = $text;
359 
360  return $result_set;
361  }
Class ilObjectFactory.
$cmd
Definition: sahs_server.php:35
const IL_NO_PARENT_ACCESS
getAssignedValidRoles()
get Assigned Valid Roles
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAssignedValidRoles()

ilObjectPermissionStatusGUI::getAssignedValidRoles ( )

get Assigned Valid Roles

Returns
array

Definition at line 186 of file class.ilObjectPermissionStatusGUI.php.

References $assigned_valid_roles, ilRbacReview\_getOperationList(), and ilObjRole\_getTranslation().

Referenced by __construct(), getAccessPermissionTableData(), and getAccessStatusInfoData().

187  {
188  include_once ('./Services/AccessControl/classes/class.ilObjRole.php');
189  $assigned_valid_roles = array();
190 
191  foreach ($this->valid_roles as $role)
192  {
193  if (in_array($role['obj_id'],$this->user_roles))
194  {
195  if ($role["obj_id"] == SYSTEM_ROLE_ID)
196  {
197  // get all possible operation of current object
198  $ops_list = ilRbacReview::_getOperationList($this->object->getType());
199 
200  foreach ($ops_list as $ops_data)
201  {
202  $ops[] = (int) $ops_data['ops_id'];
203  }
204 
205  $role['ops'] = $ops;
206  }
207  else
208  {
209  $role['ops'] = $this->rbacreview->getRoleOperationsOnObject($role["obj_id"],$this->object->getRefId());
210  }
211 
212  include_once('./Services/AccessControl/classes/class.ilObjRole.php');
213  $role['translation'] = str_replace(" ","&nbsp;",ilObjRole::_getTranslation($role["title"]));
214  $assigned_valid_roles[] = $role;
215  }
216  }
217 
218  $this->assigned_valid_roles = $assigned_valid_roles;
219 
220  return $assigned_valid_roles;
221  }
_getTranslation($a_role_title)
static _getOperationList($a_type=null)
get operation list by object type public static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAvailableRolesTableData()

ilObjectPermissionStatusGUI::getAvailableRolesTableData ( )

Available Roles Table Data.

Returns
array

Definition at line 446 of file class.ilObjectPermissionStatusGUI.php.

References $path, and ilObjRole\_getTranslation().

Referenced by availableRolesTable().

447  {
448  global $tree;
449 
450  include_once('./Services/AccessControl/classes/class.ilObjRole.php');
451 
452  $path = array_reverse($tree->getPathId($this->object->getRefId()));
453 
454  include_once ('./Services/AccessControl/classes/class.ilObjRole.php');
455  $counter = 0;
456 
457  foreach ($this->valid_roles as $role)
458  {
459  $result_set[$counter]["img"] = in_array($role['obj_id'],$this->user_roles) ? self::IMG_OK : self::IMG_NOT_OK;
460  $result_set[$counter]["role"] = str_replace(" ","&nbsp;",ilObjRole::_getTranslation($role["title"]));
461 
462  if ($role['role_type'] != "linked")
463  {
464  $result_set[$counter]["effective_from"] = "";
465  }
466  else
467  {
468  $rolfs = $this->rbacreview->getFoldersAssignedToRole($role["obj_id"]);
469 
470  // ok, try to match the next rolf in path
471  foreach ($path as $node)
472  {
473  if ($node == 1)
474  {
475  break;
476  }
477 
478 
479  if (in_array($node,$rolfs))
480  {
481  $nodedata = $tree->getNodeData($node);
482  $result_set[$counter]["effective_from"] = $nodedata["title"];
483  $result_set[$counter]["effective_from_ref_id"] = $node;
484  break;
485  }
486  }
487  }
488 
489  if (in_array($role['obj_id'],$this->global_roles))
490  {
491  $result_set[$counter]["original_position"] = $this->lng->txt("global");
492  $result_set[$counter]["original_position_ref_id"] = false;
493  }
494  else
495  {
496  $rolf = $this->rbacreview->getFoldersAssignedToRole($role["obj_id"],true);
497  $parent_node = $tree->getNodeData($rolf[0]);
498  $result_set[$counter]["original_position"] = $parent_node["title"];
499  $result_set[$counter]["original_position_ref_id"] = $parent_node["ref_id"];
500  }
501 
502  ++$counter;
503  }
504 
505  return $result_set;
506  }
_getTranslation($a_role_title)
$path
Definition: index.php:22
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCommands()

ilObjectPermissionStatusGUI::getCommands (   $a_type)

get Commands

Parameters
$a_typestring
Returns
array

Definition at line 228 of file class.ilObjectPermissionStatusGUI.php.

References $location.

Referenced by getAccessStatusInfoData().

229  {
230  global $objDefinition;
231 
232  $class = $objDefinition->getClassName($a_type);
233  $location = $objDefinition->getLocation($a_type);
234  $full_class = "ilObj".$class."Access";
235  include_once($location."/class.".$full_class.".php");
236 
237  $cmds = call_user_func(array($full_class, "_getCommands"));
238 
239  array_push($cmds,array('permission' => 'visible','cmd' => 'info'));
240 
241  return $cmds;
242  }
$location
Definition: buildRTE.php:44
+ Here is the caller graph for this function:

◆ getUser()

ilObjectPermissionStatusGUI::getUser ( )

ilUser

Returns
ilObjUser|object

Definition at line 248 of file class.ilObjectPermissionStatusGUI.php.

References $_POST, $ilUser, $user, ilObjUser\_lookupId(), ilUtil\sendFailure(), and ilUtil\sendInfo().

Referenced by __construct().

249  {
250  global $ilUser;
251 
252  if (!isset($_POST['user_login']))
253  {
254  $user =& $ilUser;
255  }
256  else
257  {
258  include_once('Services/User/classes/class.ilObjUser.php');
259  $user_id = ilObjUser::_lookupId($_POST['user_login']);
260 
261  $factory = new ilObjectFactory();
262  $user = $factory->getInstanceByObjId($user_id,false);
263 
264 
265  if ($user === false or $user->getType() != 'usr')
266  {
267  $user =& $ilUser;
268  ilUtil::sendFailure($this->lng->txt('info_err_user_not_exist'));
269  }
270  else
271  {
272  ilUtil::sendInfo($this->lng->txt('info_user_view_changed'));
273  }
274  }
275 
276  return $user;
277  }
Class ilObjectFactory.
$_POST['username']
Definition: cron.php:12
static _lookupId($a_user_str)
lookup id by login
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ perminfo()

ilObjectPermissionStatusGUI::perminfo ( )

cmd function

Definition at line 89 of file class.ilObjectPermissionStatusGUI.php.

References accessPermissionsTable(), accessStatusInfo(), addToolbar(), and availableRolesTable().

90  {
91  $tpl = new ilTemplate("tpl.info_layout.html", false, false, "Services/AccessControl");
92 
93  $tpl->setVariable("INFO_SUMMARY",$this->accessStatusInfo());
94  $tpl->setVariable("INFO_PERMISSIONS",$this->accessPermissionsTable());
95  $tpl->setVariable("INFO_ROLES",$this->availableRolesTable());
96  $tpl->setVariable("INFO_REMARK_INTERRUPTED",$this->lng->txt('info_remark_interrupted'));
97 
98  $this->tpl->setVariable("ADM_CONTENT", $tpl->get());
99 
100  $this->addToolbar();
101  }
accessStatusInfo()
Access- and Statusinformation Info.
special template class to simplify handling of ITX/PEAR
accessPermissionsTable()
Access Permissions Table.
+ Here is the call graph for this function:

Field Documentation

◆ $assigned_valid_roles

ilObjectPermissionStatusGUI::$assigned_valid_roles

Definition at line 32 of file class.ilObjectPermissionStatusGUI.php.

Referenced by getAssignedValidRoles().

◆ $global_roles

ilObjectPermissionStatusGUI::$global_roles

Definition at line 30 of file class.ilObjectPermissionStatusGUI.php.

◆ $ilCtrl

ilObjectPermissionStatusGUI::$ilCtrl

Definition at line 22 of file class.ilObjectPermissionStatusGUI.php.

Referenced by __construct(), and executeCommand().

◆ $lng

ilObjectPermissionStatusGUI::$lng

Definition at line 20 of file class.ilObjectPermissionStatusGUI.php.

Referenced by __construct().

◆ $object

ilObjectPermissionStatusGUI::$object

Definition at line 26 of file class.ilObjectPermissionStatusGUI.php.

◆ $rbacreview

ilObjectPermissionStatusGUI::$rbacreview

Definition at line 28 of file class.ilObjectPermissionStatusGUI.php.

Referenced by __construct().

◆ $tpl

ilObjectPermissionStatusGUI::$tpl

Definition at line 24 of file class.ilObjectPermissionStatusGUI.php.

Referenced by __construct().

◆ $user

ilObjectPermissionStatusGUI::$user

Definition at line 18 of file class.ilObjectPermissionStatusGUI.php.

Referenced by getUser().

◆ $user_roles

ilObjectPermissionStatusGUI::$user_roles

Definition at line 29 of file class.ilObjectPermissionStatusGUI.php.

◆ $valid_roles

ilObjectPermissionStatusGUI::$valid_roles

Definition at line 31 of file class.ilObjectPermissionStatusGUI.php.

◆ IMG_NOT_OK

const ilObjectPermissionStatusGUI::IMG_NOT_OK = 1

Definition at line 35 of file class.ilObjectPermissionStatusGUI.php.

◆ IMG_OK

const ilObjectPermissionStatusGUI::IMG_OK = 0

The documentation for this class was generated from the following file: