ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilAccess Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for ilAccess:
+ Collaboration diagram for ilAccess:

Public Member Functions

 __construct ()
 
 storeAccessResult (string $a_permission, string $a_cmd, int $a_ref_id, bool $a_access_granted, ?int $a_user_id=null, ?ilAccessInfo $a_info=null)
 store access result More...
 
 setPreventCachingLastResult (bool $a_val)
 Set prevent caching last result. More...
 
 getPreventCachingLastResult ()
 Get prevent caching last result. More...
 
 getStoredAccessResult (string $a_permission, string $a_cmd, int $a_ref_id, ?int $a_user_id=null)
 get stored access result
Parameters
string$a_permissionpermission
string$a_cmdcommand string
int$a_ref_idreference id
int | null$a_user_iduser id (if no id passed, current user id)
Returns
array<{granted: bool, info: ?ilAccessInfo, prevent_db_cache: bool}>
More...
 
 storeCache ()
 
 readCache (int $a_secs=0)
 
 getResults ()
 
 setResults (array $a_results)
 
 addInfoItem (string $a_type, string $a_text, string $a_data="")
 add an info item to current info object More...
 
 checkAccess (string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=null, ?int $a_tree_id=null)
 check access for an object (provide $a_type and $a_obj_id if available for better performance) More...
 
 checkAccessOfUser (int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=0, ?int $a_tree_id=0)
 check access for an object (provide $a_type and $a_obj_id if available for better performance) More...
 
 getInfo ()
 get last info object
See also
ilAccessInfo::getInfoItems()
More...
 
 getResultLast ()
 get last info object More...
 
 getResultAll (int $a_ref_id=0)
 
 doCacheCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id)
 look if result for current query is already in cache
Returns
array<{hit: bool, granted: bool, prevent_db_cache: bool}>
More...
 
 doTreeCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id)
 check if object is in tree and not deleted More...
 
 doRBACCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, string $a_type)
 rbac check for current object -> type is used for create permission More...
 
 doPathCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, bool $a_all=false)
 check read permission for all parents More...
 
 doActivationCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
 check for activation and centralized offline status. More...
 
 doConditionCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
 condition check (currently only implemented for read permission) More...
 
 doStatusCheck (string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
 object type specific check More...
 
 clear ()
 
 enable (string $a_str, bool $a_bool)
 
 filterUserIdsForCurrentUsersPositionsAndPermission (array $user_ids, string $permission)
 
Parameters
int[]$user_ids List of ILIAS-User-IDs which shall be filtered
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions
More...
 
 filterUserIdsForUsersPositionsAndPermission (array $user_ids, int $for_user_id, string $permission)
 
Parameters
int[]$user_ids List of ILIAS-User-IDs which shall be filtered
int$for_user_id
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions
More...
 
 isCurrentUserBasedOnPositionsAllowedTo (string $permission, array $on_user_ids)
 
Parameters
string$permission
int[]$on_user_ids List of ILIAS-User-IDs
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 isUserBasedOnPositionsAllowedTo (int $which_user_id, string $permission, array $on_user_ids)
 
Parameters
int$which_user_idPermission check for this ILIAS-User-ID
string$permission
int[]$on_user_ids List of ILIAS-User-IDs
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 checkPositionAccess (string $pos_perm, int $ref_id)
 
Parameters
string$pos_perm
int$ref_idReference-ID of the desired Object in the tree
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 checkRbacOrPositionPermissionAccess (string $rbac_perm, string $pos_perm, int $ref_id)
 
Parameters
string$rbac_perm
string$pos_permSee the list of available permissions in interface ilOrgUnitPositionAccessHandler
int$ref_idReference-ID of the desired Object in the tree
Returns
bool
More...
 
 filterUserIdsByPositionOfCurrentUser (string $pos_perm, int $ref_id, array $user_ids)
 
Parameters
string$pos_perm
int$ref_id
int[]$user_ids
Returns
int[]
See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 filterUserIdsByPositionOfUser (int $user_id, string $pos_perm, int $ref_id, array $user_ids)
 
Parameters
int$user_id
string$pos_perm
int$ref_id
int[]$user_ids
Returns
int[]
See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 filterUserIdsByRbacOrPositionOfCurrentUser (string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
 
Parameters
string$rbac_perm
string$pos_permSee the list of available permissions in interface ilOrgUnitPositionAccessHandler
int$ref_idReference-ID of the desired Object in the tree
int[]$user_ids
Returns
int[]
More...
 
 hasCurrentUserAnyPositionAccess (int $ref_id)
 
Parameters
int$ref_id
Returns
bool
More...
 
 hasUserRBACorAnyPositionAccess (string $rbac_perm, int $ref_id)
 

Protected Attributes

ilOrgUnitPositionAccess $ilOrgUnitPositionAccess
 
array $obj_tree_cache
 
array $obj_type_cache
 
array $obj_id_cache
 
array $ac_cache
 
bool $status
 
bool $path
 
bool $condition
 
bool $tree
 
bool $rbac
 
bool $cache
 
ilAccessInfo $current_info
 
ilAccessInfo $last_info = null
 
array $results = []
 
array $last_result = []
 
array $stored_rbac_access = []
 
array $current_result_element = []
 
ilRbacSystem $rbacsystem
 
ilObjUser $user
 
ilLogger $ac_logger
 
ilDBInterface $db
 
ilTree $repositoryTree
 
ilObjectDefinition $objDefinition
 
ilLanguage $language = null
 

Private Member Functions

 getLanguage ()
 

Private Attributes

const MAX_CACHE_SIZE = 1000
 
bool $prevent_caching_last_result = false
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning Class ilAccessHandler Checks access for ILIAS objects

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Sascha Hofmann sasch.nosp@m.ahof.nosp@m.mann@.nosp@m.gmx..nosp@m.de

Definition at line 27 of file class.ilAccess.php.

Constructor & Destructor Documentation

◆ __construct()

ilAccess::__construct ( )

Definition at line 62 of file class.ilAccess.php.

References $DIC, ilLoggerFactory\getLogger(), ILIAS\Repository\rbac(), ILIAS\Repository\repositoryTree(), and ILIAS\Repository\user().

63  {
64  global $DIC;
65 
66  $this->user = $DIC->user();
67  $this->db = $DIC->database();
68  $this->rbacsystem = $DIC['rbacsystem'];
69  $this->results = array();
70  $this->current_info = new ilAccessInfo();
71  $this->repositoryTree = $DIC->repositoryTree();
72  $this->objDefinition = $DIC['objDefinition'];
73 
74  // use function enable to switch on/off tests (only cache is used so far)
75  $this->cache = true;
76  $this->rbac = true;
77  $this->tree = true;
78  $this->condition = true;
79  $this->path = true;
80  $this->status = true;
81  $this->obj_id_cache = [];
82  $this->obj_type_cache = [];
83  $this->obj_tree_cache = [];
84  $this->ac_cache = [];
85 
87 
88  $this->ac_logger = ilLoggerFactory::getLogger('ac');
89  }
static getLogger(string $a_component_id)
Get component logger.
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
+ Here is the call graph for this function:

Member Function Documentation

◆ addInfoItem()

ilAccess::addInfoItem ( string  $a_type,
string  $a_text,
string  $a_data = "" 
)

add an info item to current info object

Implements ilRBACAccessHandler.

Definition at line 218 of file class.ilAccess.php.

218  : void
219  {
220  $this->current_info->addInfoItem($a_type, $a_text, $a_data);
221  }

◆ checkAccess()

ilAccess::checkAccess ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
string  $a_type = "",
?int  $a_obj_id = null,
?int  $a_tree_id = null 
)

check access for an object (provide $a_type and $a_obj_id if available for better performance)

Implements ilRBACAccessHandler.

Definition at line 226 of file class.ilAccess.php.

References checkAccessOfUser(), and ILIAS\Repository\user().

Referenced by ilSessionClassificationPathGUI\findSessionContainerForItem(), and ilOrgUnitRecursiveUserAssignmentTableGUI\mayViewLPIn().

233  : bool {
234  return $this->checkAccessOfUser(
235  $this->user->getId(),
236  $a_permission,
237  $a_cmd,
238  $a_ref_id,
239  $a_type,
240  $a_obj_id,
241  $a_tree_id
242  );
243  }
checkAccessOfUser(int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=0, ?int $a_tree_id=0)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkAccessOfUser()

ilAccess::checkAccessOfUser ( int  $a_user_id,
string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
string  $a_type = "",
?int  $a_obj_id = 0,
?int  $a_tree_id = 0 
)

check access for an object (provide $a_type and $a_obj_id if available for better performance)

Implements ilRBACAccessHandler.

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

References $DIC, ilObject\_lookupObjId(), ilObject\_lookupType(), doActivationCheck(), doCacheCheck(), doConditionCheck(), doPathCheck(), doRBACCheck(), doStatusCheck(), doTreeCheck(), getLanguage(), ilAccessInfo\IL_NO_PERMISSION, setPreventCachingLastResult(), and storeAccessResult().

Referenced by checkAccess(), doActivationCheck(), doConditionCheck(), doPathCheck(), and ilExerciseDerivedTaskProvider\getFirstRefIdWithPermission().

256  : bool {
257  global $DIC;
258 
259  $ilBench = $DIC['ilBench'];
260 
261  $this->setPreventCachingLastResult(false); // for external db based caches
262 
263  $ilBench->start("AccessControl", "0400_clear_info");
264  $this->current_info->clear();
265  $ilBench->stop("AccessControl", "0400_clear_info");
266 
267  // get stored result (internal memory based cache)
268  $cached = $this->doCacheCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id);
269  if ($cached["hit"]) {
270  // Store access result
271  if (!$cached["granted"]) {
272  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
273  }
274  if ($cached["prevent_db_cache"]) {
275  $this->setPreventCachingLastResult(true); // should have been saved in previous call already
276  }
277  return $cached["granted"];
278  }
279 
280  $ilBench->start("AccessControl", "0500_lookup_id_and_type");
281  // get object id if not provided
282  if ($a_obj_id == 0) {
283  if (isset($this->obj_id_cache[$a_ref_id]) && $this->obj_id_cache[$a_ref_id] > 0) {
284  $a_obj_id = $this->obj_id_cache[$a_ref_id];
285  } else {
286  $a_obj_id = ilObject::_lookupObjId($a_ref_id);
287  $this->obj_id_cache[$a_ref_id] = $a_obj_id;
288  }
289  }
290  if ($a_type == "") {
291  if (isset($this->obj_type_cache[$a_ref_id]) && $this->obj_type_cache[$a_ref_id] != "") {
292  $a_type = $this->obj_type_cache[$a_ref_id];
293  } else {
294  $a_type = ilObject::_lookupType($a_ref_id, true);
295  $this->obj_type_cache[$a_ref_id] = $a_type;
296  }
297  }
298 
299  $ilBench->stop("AccessControl", "0500_lookup_id_and_type");
300 
301  // if supplied tree id is not = 1 (= repository main tree),
302  // check if object is in tree and not deleted
303  if ($a_tree_id != 1 &&
304  !$this->doTreeCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id)) {
305  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
306  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
307  return false;
308  }
309 
310  // rbac check for current object
311  if (!$this->doRBACCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_type)) {
312  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
313  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
314  return false;
315  }
316 
317  // Check object activation
318  $act_check = $this->doActivationCheck(
319  $a_permission,
320  $a_cmd,
321  $a_ref_id,
322  $a_user_id,
323  $a_obj_id,
324  $a_type
325  );
326 
327  if (!$act_check) {
328  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt('status_no_permission'));
329  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
330  return false;
331  }
332 
333  // check read permission for all parents
334  $par_check = $this->doPathCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id);
335  if (!$par_check) {
336  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
337  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
338  return false;
339  }
340 
341  // condition check (currently only implemented for read permission)
342  if (!$this->doConditionCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_obj_id, $a_type)) {
343  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
344  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
345  $this->setPreventCachingLastResult(true); // do not store this in db, since condition updates are not monitored
346  return false;
347  }
348 
349  // object type specific check
350  if (!$this->doStatusCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_obj_id, $a_type)) {
351  $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
352  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
353  $this->setPreventCachingLastResult(true); // do not store this in db, since status updates are not monitored
354  return false;
355  }
356 
357  // all checks passed
358  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
359  return true;
360  }
doCacheCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id)
look if result for current query is already in cachearray<{hit: bool, granted: bool, prevent_db_cache: bool}>
storeAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, bool $a_access_granted, ?int $a_user_id=null, ?ilAccessInfo $a_info=null)
store access result
doStatusCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
object type specific check
static _lookupObjId(int $ref_id)
global $DIC
Definition: feed.php:28
setPreventCachingLastResult(bool $a_val)
Set prevent caching last result.
doTreeCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id)
check if object is in tree and not deleted
doPathCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, bool $a_all=false)
check read permission for all parents
doConditionCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
condition check (currently only implemented for read permission)
doActivationCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
check for activation and centralized offline status.
static _lookupType(int $id, bool $reference=false)
doRBACCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, string $a_type)
rbac check for current object -> type is used for create permission
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkPositionAccess()

ilAccess::checkPositionAccess ( string  $pos_perm,
int  $ref_id 
)

Parameters
string$pos_perm
int$ref_idReference-ID of the desired Object in the tree
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 807 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\checkPositionAccess().

807  : bool
808  {
809  return $this->ilOrgUnitPositionAccess->checkPositionAccess($pos_perm, $ref_id);
810  }
checkPositionAccess(string $pos_perm, int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
+ Here is the call graph for this function:

◆ checkRbacOrPositionPermissionAccess()

ilAccess::checkRbacOrPositionPermissionAccess ( string  $rbac_perm,
string  $pos_perm,
int  $ref_id 
)

Parameters
string$rbac_perm
string$pos_permSee the list of available permissions in interface ilOrgUnitPositionAccessHandler
int$ref_idReference-ID of the desired Object in the tree
Returns
bool

Implements ilOrgUnitPositionAndRBACAccessHandler.

Definition at line 815 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\checkRbacOrPositionPermissionAccess().

815  : bool
816  {
817  return $this->ilOrgUnitPositionAccess->checkRbacOrPositionPermissionAccess($rbac_perm, $pos_perm, $ref_id);
818  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
checkRbacOrPositionPermissionAccess(string $rbac_perm, string $pos_perm, int $ref_id)
+ Here is the call graph for this function:

◆ clear()

ilAccess::clear ( )

Implements ilRBACAccessHandler.

Definition at line 738 of file class.ilAccess.php.

738  : void
739  {
740  $this->results = array();
741  $this->last_result = [];
742  $this->current_info = new ilAccessInfo();
743  $this->stored_rbac_access = [];
744  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

◆ doActivationCheck()

ilAccess::doActivationCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id,
int  $a_obj_id,
string  $a_type 
)

check for activation and centralized offline status.

Implements ilRBACAccessHandler.

Definition at line 545 of file class.ilAccess.php.

References checkAccessOfUser(), ilMemberViewSettings\getInstance(), ilObjectActivation\getItem(), ilObject\lookupOfflineStatus(), ilObjectActivation\TIMINGS_ACTIVATION, and ILIAS\Repository\user().

Referenced by checkAccessOfUser().

552  : bool {
553  $cache_perm = ($a_permission === "visible" || $a_permission === 'leave')
554  ? "visible"
555  : "other";
556 
557  if (isset($this->ac_cache[$cache_perm][$a_ref_id][$a_user_id])) {
558  return $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id];
559  }
560 
561  // nothings needs to be done if current permission is write permission
562  if ($a_permission === 'write') {
563  return true;
564  }
565 
566  // #10852 - member view check
567  if ($a_user_id === $this->user->getId()) {
568  // #10905 - activate parent container ONLY
570  if ($memview->isActiveForRefId($a_ref_id) &&
571  $memview->getContainer() == $a_ref_id) {
572  return true;
573  }
574  }
575 
576  // in any case, if user has write permission return true
577  if ($this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id)) {
578  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
579  return true;
580  }
581 
582  // no write access => check centralized offline status
583  if (
584  $this->objDefinition->supportsOfflineHandling($a_type) &&
586  ) {
587  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = false;
588  return false;
589  }
590  $item_data = ilObjectActivation::getItem($a_ref_id);
591  // if activation isn't enabled
592  if ($item_data === null || (is_array($item_data) && count($item_data) == 0) ||
593  $item_data['timing_type'] != ilObjectActivation::TIMINGS_ACTIVATION) {
594  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
595  return true;
596  }
597  // if within activation time
598  if (($item_data['timing_start'] == 0 || time() >= $item_data['timing_start']) and
599  ($item_data['timing_end'] == 0 || time() <= $item_data['timing_end'])) {
600  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
601  return true;
602  }
603 
604  // if user has write permission
605  if ($this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id)) {
606  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
607  return true;
608  }
609 
610  // if current permission is visible or leave and visible is set in activation
611  if (($a_permission === 'visible' || $a_permission === 'leave')
612  && $item_data['visible']) {
613  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
614  return true;
615  }
616 
617  // learning progress must be readable, regardless of the activation
618  if ($a_permission == 'read_learning_progress') {
619  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
620  return true;
621  }
622  // no access
623  $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = false;
624  return false;
625  }
static lookupOfflineStatus(int $obj_id)
Lookup offline status using objectDataCache.
static getItem(int $ref_id)
checkAccessOfUser(int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=0, ?int $a_tree_id=0)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doCacheCheck()

ilAccess::doCacheCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id 
)

look if result for current query is already in cache

Returns
array<{hit: bool, granted: bool, prevent_db_cache: bool}>

Implements ilRBACAccessHandler.

Definition at line 393 of file class.ilAccess.php.

References getStoredAccessResult().

Referenced by checkAccessOfUser().

393  : array
394  {
395  $stored_access = $this->getStoredAccessResult($a_permission, $a_cmd, $a_ref_id, $a_user_id);
396 
397  //var_dump($stored_access);
398  if ($stored_access !== []) {
399  if (isset($stored_access['info']) && $stored_access['info'] instanceof ilAccessInfo) {
400  $this->current_info = $stored_access["info"];
401  }
402  //var_dump("cache-treffer:");
403  return [
404  "hit" => true,
405  "granted" => $stored_access["granted"],
406  "prevent_db_cache" => $stored_access["prevent_db_cache"]
407  ];
408  }
409 
410  // not in cache
411  return [
412  "hit" => false,
413  "granted" => false,
414  "prevent_db_cache" => false
415  ];
416  }
getStoredAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, ?int $a_user_id=null)
get stored access resultpermission command string reference id user id (if no id passed, current user id) array<{granted: bool, info: ?ilAccessInfo, prevent_db_cache: bool}>
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doConditionCheck()

ilAccess::doConditionCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id,
int  $a_obj_id,
string  $a_type 
)

condition check (currently only implemented for read permission)

Implements ilRBACAccessHandler.

Definition at line 630 of file class.ilAccess.php.

References ilConditionHandler\_checkAllConditionsOfTarget(), ilObject\_lookupTitle(), checkAccessOfUser(), getLanguage(), and ilAccessInfo\IL_MISSING_PRECONDITION.

Referenced by checkAccessOfUser().

637  : bool {
638  if (
639  ($a_permission == 'visible') &&
640  !$this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id, $a_type, $a_obj_id)
641  ) {
642  if (ilConditionHandler::lookupEffectiveHiddenStatusByTarget($a_ref_id)) {
643  if (!ilConditionHandler::_checkAllConditionsOfTarget($a_ref_id, $a_obj_id, $a_type, $a_user_id)) {
644  $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($a_ref_id, $a_obj_id, $a_type);
645  foreach ($conditions as $condition) {
646  $this->current_info->addInfoItem(
648  $this->getLanguage()->txt("missing_precondition") . ": " .
649  ilObject::_lookupTitle($condition["trigger_obj_id"]) . " " .
650  $this->getLanguage()->txt("condition_" . $condition["operator"]) . " " .
651  $condition["value"],
652  serialize($condition)
653  );
654  }
655  return false;
656  }
657  }
658  }
659 
660  if (($a_permission == "read" or $a_permission == 'join') &&
661  !$this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id, $a_type, $a_obj_id)) {
662  if (!ilConditionHandler::_checkAllConditionsOfTarget($a_ref_id, $a_obj_id, $a_type, $a_user_id)) {
663  $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($a_ref_id, $a_obj_id, $a_type);
664  foreach ($conditions as $condition) {
665  $this->current_info->addInfoItem(
667  $this->getLanguage()->txt("missing_precondition") . ": " .
668  ilObject::_lookupTitle($condition["trigger_obj_id"]) . " " .
669  $this->getLanguage()->txt("condition_" . $condition["operator"]) . " " .
670  $condition["value"],
671  serialize($condition)
672  );
673  }
674  return false;
675  }
676  }
677  return true;
678  }
const IL_MISSING_PRECONDITION
bool $condition
static _lookupTitle(int $obj_id)
static _checkAllConditionsOfTarget(int $a_target_ref_id, int $a_target_id, string $a_target_type="", int $a_usr_id=0)
checks wether all conditions of a target object are fulfilled
checkAccessOfUser(int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=0, ?int $a_tree_id=0)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doPathCheck()

ilAccess::doPathCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id,
bool  $a_all = false 
)

check read permission for all parents

Implements ilRBACAccessHandler.

Definition at line 515 of file class.ilAccess.php.

References $id, checkAccessOfUser(), getLanguage(), ilAccessInfo\IL_NO_PARENT_ACCESS, and ILIAS\Repository\repositoryTree().

Referenced by checkAccessOfUser().

521  : bool {
522  $path = $this->repositoryTree->getPathId($a_ref_id);
523  foreach ($path as $id) {
524  if ($a_ref_id === $id) {
525  continue;
526  }
527  $access = $this->checkAccessOfUser($a_user_id, "read", "info", $id);
528  if ($access == false) {
529  $this->current_info->addInfoItem(
531  $this->getLanguage()->txt("no_parent_access"),
532  (string) $id
533  );
534  if ($a_all == false) {
535  return false;
536  }
537  }
538  }
539  return true;
540  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
checkAccessOfUser(int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=0, ?int $a_tree_id=0)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doRBACCheck()

ilAccess::doRBACCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id,
string  $a_type 
)

rbac check for current object -> type is used for create permission

Implements ilRBACAccessHandler.

Definition at line 472 of file class.ilAccess.php.

References $message, getLanguage(), ilAccessInfo\IL_NO_PERMISSION, and storeAccessResult().

Referenced by checkAccessOfUser().

478  : bool {
479  if ($a_permission == "") {
480  $message = sprintf(
481  '%s::doRBACCheck(): No operations given! $a_ref_id: %s',
482  get_class($this),
483  $a_ref_id
484  );
485  $this->ac_logger->error($message);
486  throw new ilPermissionException($message);
487  }
488 
489  if (isset($this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id])) {
490  $access = $this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id];
491  } else {
492  $access = $this->rbacsystem->checkAccessOfUser($a_user_id, $a_permission, $a_ref_id, $a_type);
493  if (!is_array($this->stored_rbac_access) || count($this->stored_rbac_access) < self::MAX_CACHE_SIZE) {
494  if ($a_permission != "create") {
495  $this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id] = $access;
496  }
497  }
498  }
499  // Store in result cache
500  if (!$access) {
501  $this->current_info->addInfoItem(
503  $this->getLanguage()->txt("status_no_permission")
504  );
505  }
506  if ($a_permission != "create") {
507  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
508  }
509  return $access;
510  }
storeAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, bool $a_access_granted, ?int $a_user_id=null, ?ilAccessInfo $a_info=null)
store access result
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$message
Definition: xapiexit.php:32
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doStatusCheck()

ilAccess::doStatusCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id,
int  $a_obj_id,
string  $a_type 
)

object type specific check

Implements ilRBACAccessHandler.

Definition at line 683 of file class.ilAccess.php.

References $location, and storeAccessResult().

Referenced by checkAccessOfUser().

690  : bool {
691  // check for a deactivated plugin
692  if ($this->objDefinition->isPluginTypeName($a_type) && !$this->objDefinition->isPlugin($a_type)) {
693  return false;
694  }
695  if (!$a_type) {
696  return false;
697  }
698 
699  $class = $this->objDefinition->getClassName($a_type);
700  $location = $this->objDefinition->getLocation($a_type);
701  $full_class = "ilObj" . $class . "Access";
702 
703  // use autoloader for standard objects
704  if ($this->objDefinition->isPluginTypeName($a_type)) {
706  include_once($location . "/class." . $full_class . ".php");
707  }
708 
709  if ($class == "") {
710  $this->ac_logger->error("Cannot find class for object type $a_type, obj id $a_obj_id, ref id $a_ref_id. Abort status check.");
711  return false;
712  }
713 
714  $full_class = new $full_class();
715 
716  $obj_access = call_user_func(
717  array($full_class, "_checkAccess"),
718  $a_cmd,
719  $a_permission,
720  $a_ref_id,
721  $a_obj_id,
722  $a_user_id
723  );
724  if ($obj_access !== true) {
725  //Note: We must not add an info item here, because one is going
726  // to be added by the user function we just called a few
727  // lines above.
728  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
729  return false;
730  }
731  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
732  return true;
733  }
$location
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: buildRTE.php:22
storeAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, bool $a_access_granted, ?int $a_user_id=null, ?ilAccessInfo $a_info=null)
store access result
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doTreeCheck()

ilAccess::doTreeCheck ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
int  $a_user_id 
)

check if object is in tree and not deleted

Implements ilRBACAccessHandler.

Definition at line 421 of file class.ilAccess.php.

References getLanguage(), ilAccessInfo\IL_DELETED, ilAccessInfo\IL_NO_PERMISSION, ILIAS\Repository\repositoryTree(), and storeAccessResult().

Referenced by checkAccessOfUser().

421  : bool
422  {
423  // Get stored result
424  $tree_cache_key = $a_user_id . ':' . $a_ref_id;
425  if (array_key_exists($tree_cache_key, $this->obj_tree_cache)) {
426  // Store access result
427  if (!$this->obj_tree_cache[$tree_cache_key]) {
428  $this->current_info->addInfoItem(
430  $this->getLanguage()->txt("status_no_permission")
431  );
432  }
433  $this->storeAccessResult(
434  $a_permission,
435  $a_cmd,
436  $a_ref_id,
437  $this->obj_tree_cache[$tree_cache_key],
438  $a_user_id
439  );
440 
441  return $this->obj_tree_cache[$tree_cache_key];
442  }
443 
444  if (!$this->repositoryTree->isInTree($a_ref_id) || $this->repositoryTree->isDeleted($a_ref_id)) {
445  // Store negative access results
446  // Store in tree cache
447  // Note, we only store up to 1000 results to avoid memory overflow.
448  if (count($this->obj_tree_cache) < self::MAX_CACHE_SIZE) {
449  $this->obj_tree_cache[$tree_cache_key] = false;
450  }
451 
452  // Store in result cache
453  $this->current_info->addInfoItem(ilAccessInfo::IL_DELETED, $this->getLanguage()->txt("object_deleted"));
454  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
455  return false;
456  }
457 
458  // Store positive access result.
459  // Store in tree cache
460  // Note, we only store up to 1000 results to avoid memory overflow.
461  if (count($this->obj_tree_cache) < self::MAX_CACHE_SIZE) {
462  $this->obj_tree_cache[$tree_cache_key] = true;
463  }
464  // Store in result cache
465  $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
466  return true;
467  }
storeAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, bool $a_access_granted, ?int $a_user_id=null, ?ilAccessInfo $a_info=null)
store access result
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ enable()

ilAccess::enable ( string  $a_str,
bool  $a_bool 
)

Todo:
check for valid properties

Implements ilRBACAccessHandler.

Definition at line 750 of file class.ilAccess.php.

750  : void
751  {
752  $this->$a_str = $a_bool;
753  }

◆ filterUserIdsByPositionOfCurrentUser()

ilAccess::filterUserIdsByPositionOfCurrentUser ( string  $pos_perm,
int  $ref_id,
array  $user_ids 
)

Parameters
string$pos_perm
int$ref_id
int[]$user_ids
Returns
int[]
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 823 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\filterUserIdsByPositionOfCurrentUser().

823  : array
824  {
825  return $this->ilOrgUnitPositionAccess->filterUserIdsByPositionOfCurrentUser($pos_perm, $ref_id, $user_ids);
826  }
filterUserIdsByPositionOfCurrentUser(string $pos_perm, int $ref_id, array $user_ids)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
+ Here is the call graph for this function:

◆ filterUserIdsByPositionOfUser()

ilAccess::filterUserIdsByPositionOfUser ( int  $user_id,
string  $pos_perm,
int  $ref_id,
array  $user_ids 
)

Parameters
int$user_id
string$pos_perm
int$ref_id
int[]$user_ids
Returns
int[]
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 831 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\filterUserIdsByPositionOfUser().

831  : array
832  {
833  return $this->ilOrgUnitPositionAccess->filterUserIdsByPositionOfUser($user_id, $pos_perm, $ref_id, $user_ids);
834  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
filterUserIdsByPositionOfUser(int $user_id, string $pos_perm, int $ref_id, array $user_ids)
+ Here is the call graph for this function:

◆ filterUserIdsByRbacOrPositionOfCurrentUser()

ilAccess::filterUserIdsByRbacOrPositionOfCurrentUser ( string  $rbac_perm,
string  $pos_perm,
int  $ref_id,
array  $user_ids 
)

Parameters
string$rbac_perm
string$pos_permSee the list of available permissions in interface ilOrgUnitPositionAccessHandler
int$ref_idReference-ID of the desired Object in the tree
int[]$user_ids
Returns
int[]

Implements ilOrgUnitPositionAndRBACAccessHandler.

Definition at line 839 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\filterUserIdsByRbacOrPositionOfCurrentUser().

839  : array
840  {
842  $rbac_perm,
843  $pos_perm,
844  $ref_id,
845  $user_ids
846  );
847  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
+ Here is the call graph for this function:

◆ filterUserIdsForCurrentUsersPositionsAndPermission()

ilAccess::filterUserIdsForCurrentUsersPositionsAndPermission ( array  $user_ids,
string  $permission 
)

Parameters
int[]$user_ids List of ILIAS-User-IDs which shall be filtered
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 764 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\filterUserIdsForCurrentUsersPositionsAndPermission().

764  : array
765  {
767  $user_ids,
768  $permission
769  );
770  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
filterUserIdsForCurrentUsersPositionsAndPermission(array $user_ids, string $permission)
+ Here is the call graph for this function:

◆ filterUserIdsForUsersPositionsAndPermission()

ilAccess::filterUserIdsForUsersPositionsAndPermission ( array  $user_ids,
int  $for_user_id,
string  $permission 
)

Parameters
int[]$user_ids List of ILIAS-User-IDs which shall be filtered
int$for_user_id
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 775 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\filterUserIdsForUsersPositionsAndPermission().

775  : array
776  {
778  $user_ids,
779  $for_user_id,
780  $permission
781  );
782  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
filterUserIdsForUsersPositionsAndPermission(array $user_ids, int $for_user_id, string $permission)
+ Here is the call graph for this function:

◆ getInfo()

ilAccess::getInfo ( )

get last info object

See also
ilAccessInfo::getInfoItems()

Implements ilRBACAccessHandler.

Definition at line 365 of file class.ilAccess.php.

365  : array
366  {
367  return is_object($this->last_info) ? $this->last_info->getInfoItems() : array();
368  }

◆ getLanguage()

ilAccess::getLanguage ( )
private

Definition at line 91 of file class.ilAccess.php.

References $DIC, $language, and ILIAS\UI\examples\Symbol\Glyph\Language\language().

Referenced by checkAccessOfUser(), doConditionCheck(), doPathCheck(), doRBACCheck(), and doTreeCheck().

91  : ilLanguage
92  {
93  if ($this->language === null) {
94  global $DIC;
95  $this->language = $DIC['lng'];
96  }
97 
98  return $this->language;
99  }
ilLanguage $language
global $DIC
Definition: feed.php:28
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPreventCachingLastResult()

ilAccess::getPreventCachingLastResult ( )

Get prevent caching last result.

Implements ilRBACAccessHandler.

Definition at line 143 of file class.ilAccess.php.

References $prevent_caching_last_result.

Referenced by storeAccessResult().

143  : bool
144  {
146  }
bool $prevent_caching_last_result
+ Here is the caller graph for this function:

◆ getResultAll()

ilAccess::getResultAll ( int  $a_ref_id = 0)

Implements ilRBACAccessHandler.

Definition at line 381 of file class.ilAccess.php.

References $results.

381  : array
382  {
383  if ($a_ref_id == "") {
384  return $this->results;
385  }
386 
387  return $this->results[$a_ref_id];
388  }
array $results

◆ getResultLast()

ilAccess::getResultLast ( )

get last info object

Implements ilRBACAccessHandler.

Definition at line 373 of file class.ilAccess.php.

References $last_result.

373  : array
374  {
375  return $this->last_result;
376  }
array $last_result

◆ getResults()

ilAccess::getResults ( )

Implements ilRBACAccessHandler.

Definition at line 202 of file class.ilAccess.php.

References $results.

202  : array
203  {
204  return $this->results;
205  }
array $results

◆ getStoredAccessResult()

ilAccess::getStoredAccessResult ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
?int  $a_user_id = null 
)

get stored access result

Parameters
string$a_permissionpermission
string$a_cmdcommand string
int$a_ref_idreference id
int | null$a_user_iduser id (if no id passed, current user id)
Returns
array<{granted: bool, info: ?ilAccessInfo, prevent_db_cache: bool}>

Implements ilRBACAccessHandler.

Definition at line 151 of file class.ilAccess.php.

References ILIAS\Repository\user().

Referenced by doCacheCheck().

156  : array {
157  if ($a_user_id === null) {
158  $a_user_id = $this->user->getId();
159  }
160  if (isset($this->results[$a_ref_id][$a_permission][$a_cmd][$a_user_id])) {
161  return $this->results[$a_ref_id][$a_permission][$a_cmd][$a_user_id];
162  }
163  return [];
164  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasCurrentUserAnyPositionAccess()

ilAccess::hasCurrentUserAnyPositionAccess ( int  $ref_id)

Parameters
int$ref_id
Returns
bool

Implements ilOrgUnitPositionAccessHandler.

Definition at line 852 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\hasCurrentUserAnyPositionAccess().

852  : bool
853  {
855  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
+ Here is the call graph for this function:

◆ hasUserRBACorAnyPositionAccess()

ilAccess::hasUserRBACorAnyPositionAccess ( string  $rbac_perm,
int  $ref_id 
)

Implements ilOrgUnitPositionAndRBACAccessHandler.

Definition at line 860 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\hasUserRBACorAnyPositionAccess().

860  : bool
861  {
863  }
hasUserRBACorAnyPositionAccess(string $rbac_perm, int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:67
+ Here is the call graph for this function:

◆ isCurrentUserBasedOnPositionsAllowedTo()

ilAccess::isCurrentUserBasedOnPositionsAllowedTo ( string  $permission,
array  $on_user_ids 
)

Parameters
string$permission
int[]$on_user_ids List of ILIAS-User-IDs
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 787 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\isCurrentUserBasedOnPositionsAllowedTo().

787  : bool
788  {
789  return $this->ilOrgUnitPositionAccess->isCurrentUserBasedOnPositionsAllowedTo($permission, $on_user_ids);
790  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
isCurrentUserBasedOnPositionsAllowedTo(string $permission, array $on_user_ids)
+ Here is the call graph for this function:

◆ isUserBasedOnPositionsAllowedTo()

ilAccess::isUserBasedOnPositionsAllowedTo ( int  $which_user_id,
string  $permission,
array  $on_user_ids 
)

Parameters
int$which_user_idPermission check for this ILIAS-User-ID
string$permission
int[]$on_user_ids List of ILIAS-User-IDs
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

Definition at line 795 of file class.ilAccess.php.

References ilOrgUnitPositionAccess\isUserBasedOnPositionsAllowedTo().

795  : bool
796  {
798  $which_user_id,
799  $permission,
800  $on_user_ids
801  );
802  }
isUserBasedOnPositionsAllowedTo(int $which_user_id, string $permission, array $on_user_ids)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:

◆ readCache()

ilAccess::readCache ( int  $a_secs = 0)

Implements ilRBACAccessHandler.

Definition at line 184 of file class.ilAccess.php.

References $query, ilDBConstants\FETCHMODE_ASSOC, and ILIAS\Repository\user().

184  : bool
185  {
186  if ($a_secs > 0) {
187  $query = "SELECT * FROM acc_cache WHERE user_id = " .
188  $this->db->quote($this->user->getId(), 'integer');
189  $set = $this->db->query($query);
190  $rec = $set->fetchRow(ilDBConstants::FETCHMODE_ASSOC);
191  if ((time() - $rec["time"]) < $a_secs) {
192  $this->results = unserialize($rec["result"]);
193  return true;
194  }
195  }
196  return false;
197  }
$query
+ Here is the call graph for this function:

◆ setPreventCachingLastResult()

ilAccess::setPreventCachingLastResult ( bool  $a_val)

Set prevent caching last result.

Implements ilRBACAccessHandler.

Definition at line 135 of file class.ilAccess.php.

Referenced by checkAccessOfUser().

135  : void
136  {
137  $this->prevent_caching_last_result = $a_val;
138  }
+ Here is the caller graph for this function:

◆ setResults()

ilAccess::setResults ( array  $a_results)

Implements ilRBACAccessHandler.

Definition at line 210 of file class.ilAccess.php.

210  : void
211  {
212  $this->results = $a_results;
213  }

◆ storeAccessResult()

ilAccess::storeAccessResult ( string  $a_permission,
string  $a_cmd,
int  $a_ref_id,
bool  $a_access_granted,
?int  $a_user_id = null,
?ilAccessInfo  $a_info = null 
)

store access result

Implements ilRBACAccessHandler.

Definition at line 104 of file class.ilAccess.php.

References $current_info, getPreventCachingLastResult(), and ILIAS\Repository\user().

Referenced by checkAccessOfUser(), doRBACCheck(), doStatusCheck(), and doTreeCheck().

111  : void {
112  if ($a_user_id === null) {
113  $a_user_id = $this->user->getId();
114  }
115  if ($a_info === null) {
116  $a_info = $this->current_info;
117  }
118  if ($this->cache) {
119  $this->results[$a_ref_id][$a_permission][$a_cmd][$a_user_id] = [
120  "granted" => $a_access_granted,
121  "info" => $a_info,
122  "prevent_db_cache" => $this->getPreventCachingLastResult()
123  ];
124  $this->current_result_element = [$a_access_granted, $a_ref_id, $a_permission, $a_cmd, $a_user_id];
125  $this->last_result = $this->results[$a_ref_id][$a_permission][$a_cmd][$a_user_id];
126  $this->last_info = $a_info;
127  }
128  // get new info object
129  $this->current_info = new ilAccessInfo();
130  }
ilAccessInfo $current_info
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getPreventCachingLastResult()
Get prevent caching last result.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeCache()

ilAccess::storeCache ( )

Implements ilRBACAccessHandler.

Definition at line 169 of file class.ilAccess.php.

References $query, $res, and ILIAS\Repository\user().

169  : void
170  {
171  $query = "DELETE FROM acc_cache WHERE user_id = " . $this->db->quote($this->user->getId(), 'integer');
172  $res = $this->db->manipulate($query);
173 
174  $this->db->insert('acc_cache', array(
175  'user_id' => array('integer', $this->user->getId()),
176  'time' => array('integer', time()),
177  'result' => array('clob', serialize($this->results))
178  ));
179  }
$res
Definition: ltiservices.php:69
$query
+ Here is the call graph for this function:

Field Documentation

◆ $ac_cache

array ilAccess::$ac_cache
protected

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

◆ $ac_logger

ilLogger ilAccess::$ac_logger
protected

Definition at line 55 of file class.ilAccess.php.

◆ $cache

bool ilAccess::$cache
protected

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

◆ $condition

bool ilAccess::$condition
protected

Definition at line 39 of file class.ilAccess.php.

◆ $current_info

ilAccessInfo ilAccess::$current_info
protected

Definition at line 46 of file class.ilAccess.php.

Referenced by storeAccessResult().

◆ $current_result_element

array ilAccess::$current_result_element = []
protected

Definition at line 51 of file class.ilAccess.php.

◆ $db

ilDBInterface ilAccess::$db
protected

Definition at line 56 of file class.ilAccess.php.

◆ $ilOrgUnitPositionAccess

ilOrgUnitPositionAccess ilAccess::$ilOrgUnitPositionAccess
protected

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

◆ $language

ilLanguage ilAccess::$language = null
protected

Definition at line 60 of file class.ilAccess.php.

Referenced by getLanguage().

◆ $last_info

ilAccessInfo ilAccess::$last_info = null
protected

Definition at line 47 of file class.ilAccess.php.

◆ $last_result

array ilAccess::$last_result = []
protected

Definition at line 49 of file class.ilAccess.php.

Referenced by getResultLast().

◆ $obj_id_cache

array ilAccess::$obj_id_cache
protected

Definition at line 34 of file class.ilAccess.php.

◆ $obj_tree_cache

array ilAccess::$obj_tree_cache
protected

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

◆ $obj_type_cache

array ilAccess::$obj_type_cache
protected

Definition at line 33 of file class.ilAccess.php.

◆ $objDefinition

ilObjectDefinition ilAccess::$objDefinition
protected

Definition at line 58 of file class.ilAccess.php.

◆ $path

bool ilAccess::$path
protected

Definition at line 38 of file class.ilAccess.php.

◆ $prevent_caching_last_result

bool ilAccess::$prevent_caching_last_result = false
private

Definition at line 44 of file class.ilAccess.php.

Referenced by getPreventCachingLastResult().

◆ $rbac

bool ilAccess::$rbac
protected

Definition at line 41 of file class.ilAccess.php.

◆ $rbacsystem

ilRbacSystem ilAccess::$rbacsystem
protected

Definition at line 53 of file class.ilAccess.php.

◆ $repositoryTree

ilTree ilAccess::$repositoryTree
protected

Definition at line 57 of file class.ilAccess.php.

◆ $results

array ilAccess::$results = []
protected

Definition at line 48 of file class.ilAccess.php.

Referenced by getResultAll(), and getResults().

◆ $status

bool ilAccess::$status
protected

Definition at line 37 of file class.ilAccess.php.

◆ $stored_rbac_access

array ilAccess::$stored_rbac_access = []
protected

Definition at line 50 of file class.ilAccess.php.

◆ $tree

bool ilAccess::$tree
protected

Definition at line 40 of file class.ilAccess.php.

◆ $user

ilObjUser ilAccess::$user
protected

Definition at line 54 of file class.ilAccess.php.

◆ MAX_CACHE_SIZE

const ilAccess::MAX_CACHE_SIZE = 1000
private

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


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