ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilAccess Class Reference

Class ilAccessHandler Checks access for ILIAS objects. 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...
 
 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)
 @deprected More...
 
 filterUserIdsForCurrentUsersPositionsAndPermission (array $user_ids, string $permission)
 
Parameters
int[]$user_idsList of ILIAS-User-IDs which shall be filtered
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions

ilOrgUnitAccessException when a unknown permission is used. See the list of available permissions in interface ilOrgUnitPositionAccessHandler

See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 filterUserIdsForUsersPositionsAndPermission (array $user_ids, int $for_user_id, string $permission)
 
Parameters
int[]$user_idsList of ILIAS-User-IDs which shall be filtered
int$for_user_id
string$permission
Returns
int[] Filtered List of ILIAS-User-IDs
Exceptions

ilOrgUnitAccessException when a unknown permission is used. See the list of available permissions in interface ilOrgUnitPositionAccessHandler

See also
getAvailablePositionRelatedPermissions for available permissions
More...
 
 isCurrentUserBasedOnPositionsAllowedTo (string $permission, array $on_user_ids)
 
Parameters
string$permission
int[]$on_user_idsList 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_idsList 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)
 
 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...
 
 getStoredAccessResult (string $a_permission, string $a_cmd, int $a_ref_id, ?int $a_user_id=null)
 get stored access result More...
 
 setPreventCachingLastResult (bool $a_val)
 Set prevent caching last result. More...
 
 getPreventCachingLastResult ()
 Get prevent caching last result. More...
 
 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=null, ?int $a_tree_id=null)
 check access for an object (provide $a_type and $a_obj_id if available for better performance) More...
 
 getInfo ()
 get last info object 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 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)
 @deprected More...
 
 filterUserIdsForCurrentUsersPositionsAndPermission (array $user_ids, string $permission)
 
 filterUserIdsForUsersPositionsAndPermission (array $user_ids, int $for_user_id, string $permission)
 
 isCurrentUserBasedOnPositionsAllowedTo (string $permission, array $on_user_ids)
 
 isUserBasedOnPositionsAllowedTo (int $which_user_id, string $permission, array $on_user_ids)
 
 checkPositionAccess (string $pos_perm, int $ref_id)
 
 hasCurrentUserAnyPositionAccess (int $ref_id)
 
 filterUserIdsByPositionOfCurrentUser (string $pos_perm, int $ref_id, array $user_ids)
 
 filterUserIdsByPositionOfUser (int $user_id, string $pos_perm, int $ref_id, array $user_ids)
 
 checkRbacOrPositionPermissionAccess (string $rbac_perm, string $pos_perm, int $ref_id)
 
 filterUserIdsByRbacOrPositionOfCurrentUser (string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
 
 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

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.

63 {
64 global $DIC;
65
66 $this->user = $DIC->user();
67 $this->db = $DIC->database();
68 $this->rbacsystem = $DIC['rbacsystem'];
69 $this->results = [];
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 }
class ilAccessInfo
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...
global $DIC
Definition: shib_login.php:26

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

+ 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 185 of file class.ilAccess.php.

185 : void
186 {
187 $this->current_info->addInfoItem($a_type, $a_text, $a_data);
188 }

Referenced by ilObjRemoteCourseAccess\_checkAccess().

+ Here is the caller graph for this function:

◆ 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 193 of file class.ilAccess.php.

200 : bool {
201 return $this->checkAccessOfUser(
202 $this->user->getId(),
203 $a_permission,
204 $a_cmd,
205 $a_ref_id,
206 $a_type,
207 $a_obj_id,
208 $a_tree_id
209 );
210 }
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)

Referenced by ilOrgUnitSimpleImportGUI\__construct(), ilLDAPSettingsGUI\addRoleAssignmentCmd(), ilLDAPSettingsGUI\checkAccess(), ilObjOrgUnitGUI\editAdvancedSettings(), ilObjOrgUnitGUI\editSettings(), ilObjOrgUnitGUI\executeCommand(), ilSessionClassificationPathGUI\findSessionContainerForItem(), ilLDAPSettingsGUI\saveRoleSelectionCmd(), ilObjOrgUnitGUI\setContentSubTabs(), ilObjOrgUnitGUI\updateAdvancedSettings(), ilLDAPSettingsGUI\updateRoleAssignmentCmd(), and ilObjOrgUnitGUI\updateSettings().

+ 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 215 of file class.ilAccess.php.

223 : bool {
224 global $DIC;
225
226 $ilBench = $DIC['ilBench'];
227
228 $this->setPreventCachingLastResult(false); // for external db based caches
229
230 $ilBench->start("AccessControl", "0400_clear_info");
231 $this->current_info->clear();
232 $ilBench->stop("AccessControl", "0400_clear_info");
233
234 // get stored result (internal memory based cache)
235 $cached = $this->doCacheCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id);
236 if ($cached["hit"]) {
237 // Store access result
238 if (!$cached["granted"]) {
239 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
240 }
241 if ($cached["prevent_db_cache"]) {
242 $this->setPreventCachingLastResult(true); // should have been saved in previous call already
243 }
244 return $cached["granted"];
245 }
246
247 $ilBench->start("AccessControl", "0500_lookup_id_and_type");
248 // get object id if not provided
249 if ($a_obj_id == 0) {
250 if (isset($this->obj_id_cache[$a_ref_id]) && $this->obj_id_cache[$a_ref_id] > 0) {
251 $a_obj_id = $this->obj_id_cache[$a_ref_id];
252 } else {
253 $a_obj_id = ilObject::_lookupObjId($a_ref_id);
254 $this->obj_id_cache[$a_ref_id] = $a_obj_id;
255 }
256 }
257 if ($a_type == "") {
258 if (isset($this->obj_type_cache[$a_ref_id]) && $this->obj_type_cache[$a_ref_id] != "") {
259 $a_type = $this->obj_type_cache[$a_ref_id];
260 } else {
261 $a_type = ilObject::_lookupType($a_ref_id, true);
262 $this->obj_type_cache[$a_ref_id] = $a_type;
263 }
264 }
265
266 $ilBench->stop("AccessControl", "0500_lookup_id_and_type");
267
268 // if supplied tree id is not = 1 (= repository main tree),
269 // check if object is in tree and not deleted
270 if ($a_tree_id != 1 &&
271 !$this->doTreeCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id)) {
272 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
273 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
274 return false;
275 }
276
277 // As of FR: https://docu.ilias.de/go/wiki/wpage_8648_1357#ilPageTocA248
278 // the ilObjSystemFolderGUI is always readable.
279 if ($a_ref_id === SYSTEM_FOLDER_ID && 'read' === $a_permission) {
280 return true;
281 }
282 // rbac check for current object
283 if (!$this->doRBACCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_type)) {
284 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
285 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
286 return false;
287 }
288
289 // Check object activation
290 $act_check = $this->doActivationCheck(
291 $a_permission,
292 $a_cmd,
293 $a_ref_id,
294 $a_user_id,
295 $a_obj_id,
296 $a_type
297 );
298
299 if (!$act_check) {
300 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt('status_no_permission'));
301 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
302 return false;
303 }
304
305 // check read permission for all parents
306 $par_check = $this->doPathCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id);
307 if (!$par_check) {
308 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
309 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
310 return false;
311 }
312
313 // condition check (currently only implemented for read permission)
314 if (!$this->doConditionCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_obj_id, $a_type)) {
315 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
316 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
317 $this->setPreventCachingLastResult(true); // do not store this in db, since condition updates are not monitored
318 return false;
319 }
320
321 // object type specific check
322 if (!$this->doStatusCheck($a_permission, $a_cmd, $a_ref_id, $a_user_id, $a_obj_id, $a_type)) {
323 $this->current_info->addInfoItem(ilAccessInfo::IL_NO_PERMISSION, $this->getLanguage()->txt("status_no_permission"));
324 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
325 $this->setPreventCachingLastResult(true); // do not store this in db, since status updates are not monitored
326 return false;
327 }
328
329 // all checks passed
330 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
331 return true;
332 }
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
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
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)
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
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,...
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.
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
doTreeCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id)
check if object is in tree and not deleted
setPreventCachingLastResult(bool $a_val)
Set prevent caching last result.
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)
const SYSTEM_FOLDER_ID
Definition: constants.php:35

Referenced by ilExerciseDerivedTaskProvider\getFirstRefIdWithPermission().

+ 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 782 of file class.ilAccess.php.

782 : bool
783 {
784 return $this->ilOrgUnitPositionAccess->checkPositionAccess($pos_perm, $ref_id);
785 }
checkPositionAccess(string $pos_perm, int $ref_id)
$ref_id
Definition: ltiauth.php:66

References $ref_id, and ilOrgUnitPositionAccess\checkPositionAccess().

+ 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 790 of file class.ilAccess.php.

790 : bool
791 {
792 return $this->ilOrgUnitPositionAccess->checkRbacOrPositionPermissionAccess($rbac_perm, $pos_perm, $ref_id);
793 }
checkRbacOrPositionPermissionAccess(string $rbac_perm, string $pos_perm, int $ref_id)

References $ref_id, and ilOrgUnitPositionAccess\checkRbacOrPositionPermissionAccess().

+ Here is the call graph for this function:

◆ clear()

ilAccess::clear ( )

Implements ilRBACAccessHandler.

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

713 : void
714 {
715 $this->results = [];
716 $this->last_result = [];
717 $this->current_info = new ilAccessInfo();
718 $this->stored_rbac_access = [];
719 }

◆ 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 517 of file class.ilAccess.php.

524 : bool {
525 $cache_perm = ($a_permission === "visible" || $a_permission === 'leave')
526 ? "visible"
527 : "other";
528
529 if (isset($this->ac_cache[$cache_perm][$a_ref_id][$a_user_id])) {
530 return $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id];
531 }
532
533 // nothings needs to be done if current permission is write permission
534 if ($a_permission === 'write') {
535 return true;
536 }
537
538 // #10852 - member view check
539 if ($a_user_id === $this->user->getId()) {
540 // #10905 - activate parent container ONLY
542 if ($memview->isActiveForRefId($a_ref_id) &&
543 $memview->getContainer() == $a_ref_id) {
544 return true;
545 }
546 }
547
548 // in any case, if user has write permission return true.
549 // you may specify further exceptions in ilObj[TYPE]Access::getBypassActivationCheckForPermissions;
550 $class = $this->objDefinition->getClassName($a_type);
551 $full_class = "ilObj" . $class . "Access";
552
553 $bypass = method_exists($full_class, 'getBypassActivationCheckForPermissions') ?
554 $full_class::getBypassActivationCheckForPermissions() : ['write'];
555
556 foreach ($bypass as $permission) {
557 if ($this->checkAccessOfUser($a_user_id, $permission, "", $a_ref_id)) {
558 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
559 return true;
560 }
561 }
562
563 // no write access/bypass => check centralized offline status
564 if (
565 $this->objDefinition->supportsOfflineHandling($a_type) &&
567 ) {
568 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = false;
569 return false;
570 }
571 $item_data = ilObjectActivation::getItem($a_ref_id);
572 // if activation isn't enabled
573 if ($item_data === null || (is_array($item_data) && count($item_data) == 0) ||
574 $item_data['timing_type'] != ilObjectActivation::TIMINGS_ACTIVATION) {
575 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
576 return true;
577 }
578 // if within activation time
579 if (($item_data['timing_start'] == 0 || time() >= $item_data['timing_start']) and
580 ($item_data['timing_end'] == 0 || time() <= $item_data['timing_end'])) {
581 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
582 return true;
583 }
584
585 // if user has write permission
586 if ($this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id)) {
587 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
588 return true;
589 }
590
591 // if current permission is visible or leave and visible is set in activation
592 if (($a_permission === 'visible' || $a_permission === 'leave')
593 && $item_data['visible']) {
594 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
595 return true;
596 }
597
598 // learning progress must be readable, regardless of the activation
599 if ($a_permission == 'read_learning_progress') {
600 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = true;
601 return true;
602 }
603 // no access
604 $this->ac_cache[$cache_perm][$a_ref_id][$a_user_id] = false;
605 return false;
606 }
static getItem(int $ref_id)
static lookupOfflineStatus(int $obj_id)
Lookup offline status using objectDataCache.

◆ 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 365 of file class.ilAccess.php.

365 : array
366 {
367 $stored_access = $this->getStoredAccessResult($a_permission, $a_cmd, $a_ref_id, $a_user_id);
368
369 //var_dump($stored_access);
370 if ($stored_access !== []) {
371 if (isset($stored_access['info']) && $stored_access['info'] instanceof ilAccessInfo) {
372 $this->current_info = $stored_access["info"];
373 }
374 //var_dump("cache-treffer:");
375 return [
376 "hit" => true,
377 "granted" => $stored_access["granted"],
378 "prevent_db_cache" => $stored_access["prevent_db_cache"]
379 ];
380 }
381
382 // not in cache
383 return [
384 "hit" => false,
385 "granted" => false,
386 "prevent_db_cache" => false
387 ];
388 }
getStoredAccessResult(string $a_permission, string $a_cmd, int $a_ref_id, ?int $a_user_id=null)
get stored access resultarray<{granted: bool, info: ?ilAccessInfo, prevent_db_cache: bool}>

◆ 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 611 of file class.ilAccess.php.

618 : bool {
619 if (
620 ($a_permission == 'visible') &&
621 !$this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id, $a_type, $a_obj_id)
622 ) {
624 if (!ilConditionHandler::_checkAllConditionsOfTarget($a_ref_id, $a_obj_id, $a_type, $a_user_id)) {
625 $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($a_ref_id, $a_obj_id, $a_type);
626 foreach ($conditions as $condition) {
627 $this->current_info->addInfoItem(
629 $this->getLanguage()->txt("missing_precondition") . ": " .
630 ilObject::_lookupTitle($condition["trigger_obj_id"]) . " " .
631 $this->getLanguage()->txt("condition_" . $condition["operator"]) . " " .
632 $condition["value"],
633 serialize($condition)
634 );
635 }
636 return false;
637 }
638 }
639 }
640
641 if (($a_permission == "read" or $a_permission == 'join') &&
642 !$this->checkAccessOfUser($a_user_id, "write", "", $a_ref_id, $a_type, $a_obj_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 return true;
659 }
const IL_MISSING_PRECONDITION
bool $condition
static lookupEffectiveHiddenStatusByTarget(int $a_target_ref_id)
Lookup hidden status (also take container control into account)
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
static _lookupTitle(int $obj_id)

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

+ Here is the call 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 487 of file class.ilAccess.php.

493 : bool {
494 $path = $this->repositoryTree->getPathId($a_ref_id);
495 foreach ($path as $id) {
496 if ($a_ref_id === $id) {
497 continue;
498 }
499 $access = $this->checkAccessOfUser($a_user_id, "read", "info", $id);
500 if ($access == false) {
501 $this->current_info->addInfoItem(
503 $this->getLanguage()->txt("no_parent_access"),
504 (string) $id
505 );
506 if ($a_all == false) {
507 return false;
508 }
509 }
510 }
511 return true;
512 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

References $id, getLanguage(), and ilAccessInfo\IL_NO_PARENT_ACCESS.

+ Here is the call 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 444 of file class.ilAccess.php.

450 : bool {
451 if ($a_permission == "") {
452 $message = sprintf(
453 '%s::doRBACCheck(): No operations given! $a_ref_id: %s',
454 get_class($this),
455 $a_ref_id
456 );
457 $this->ac_logger->error($message);
458 throw new ilPermissionException($message);
459 }
460
461 if (isset($this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id])) {
462 $access = $this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id];
463 } else {
464 $access = $this->rbacsystem->checkAccessOfUser($a_user_id, $a_permission, $a_ref_id, $a_type);
465 if (!is_array($this->stored_rbac_access) || count($this->stored_rbac_access) < self::MAX_CACHE_SIZE) {
466 if ($a_permission != "create") {
467 $this->stored_rbac_access[$a_user_id . "-" . $a_permission . "-" . $a_ref_id] = $access;
468 }
469 }
470 }
471 // Store in result cache
472 if (!$access) {
473 $this->current_info->addInfoItem(
475 $this->getLanguage()->txt("status_no_permission")
476 );
477 }
478 if ($a_permission != "create") {
479 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
480 }
481 return $access;
482 }

◆ 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 664 of file class.ilAccess.php.

671 : bool {
672 // check for a deactivated plugin
673 if ($this->objDefinition->isPluginTypeName($a_type) && !$this->objDefinition->isPlugin($a_type)) {
674 return false;
675 }
676 if (!$a_type) {
677 return false;
678 }
679
680 $class = $this->objDefinition->getClassName($a_type);
681 $location = $this->objDefinition->getLocation($a_type);
682 $full_class = "ilObj" . $class . "Access";
683
684 if ($class == "") {
685 $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.");
686 return false;
687 }
688
689 $full_class = new $full_class();
690
691 $obj_access = call_user_func(
692 [$full_class, "_checkAccess"],
693 $a_cmd,
694 $a_permission,
695 $a_ref_id,
696 $a_obj_id,
697 $a_user_id
698 );
699 if ($obj_access !== true) {
700 //Note: We must not add an info item here, because one is going
701 // to be added by the user function we just called a few
702 // lines above.
703 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
704 return false;
705 }
706 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
707 return true;
708 }
$location
Definition: buildRTE.php:22

◆ 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 393 of file class.ilAccess.php.

393 : bool
394 {
395 // Get stored result
396 $tree_cache_key = $a_user_id . ':' . $a_ref_id;
397 if (array_key_exists($tree_cache_key, $this->obj_tree_cache)) {
398 // Store access result
399 if (!$this->obj_tree_cache[$tree_cache_key]) {
400 $this->current_info->addInfoItem(
402 $this->getLanguage()->txt("status_no_permission")
403 );
404 }
405 $this->storeAccessResult(
406 $a_permission,
407 $a_cmd,
408 $a_ref_id,
409 $this->obj_tree_cache[$tree_cache_key],
410 $a_user_id
411 );
412
413 return $this->obj_tree_cache[$tree_cache_key];
414 }
415
416 if (!$this->repositoryTree->isInTree($a_ref_id) || $this->repositoryTree->isDeleted($a_ref_id)) {
417 // Store negative access results
418 // Store in tree cache
419 // Note, we only store up to 1000 results to avoid memory overflow.
420 if (count($this->obj_tree_cache) < self::MAX_CACHE_SIZE) {
421 $this->obj_tree_cache[$tree_cache_key] = false;
422 }
423
424 // Store in result cache
425 $this->current_info->addInfoItem(ilAccessInfo::IL_DELETED, $this->getLanguage()->txt("object_deleted"));
426 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, false, $a_user_id);
427 return false;
428 }
429
430 // Store positive access result.
431 // Store in tree cache
432 // Note, we only store up to 1000 results to avoid memory overflow.
433 if (count($this->obj_tree_cache) < self::MAX_CACHE_SIZE) {
434 $this->obj_tree_cache[$tree_cache_key] = true;
435 }
436 // Store in result cache
437 $this->storeAccessResult($a_permission, $a_cmd, $a_ref_id, true, $a_user_id);
438 return true;
439 }

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

+ Here is the call graph for this function:

◆ enable()

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

@deprected

Todo:
check for valid properties

Implements ilRBACAccessHandler.

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

725 : void
726 {
727 $this->$a_str = $a_bool;
728 }

◆ 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 798 of file class.ilAccess.php.

798 : array
799 {
800 return $this->ilOrgUnitPositionAccess->filterUserIdsByPositionOfCurrentUser($pos_perm, $ref_id, $user_ids);
801 }
filterUserIdsByPositionOfCurrentUser(string $pos_perm, int $ref_id, array $user_ids)

References $ref_id, and ilOrgUnitPositionAccess\filterUserIdsByPositionOfCurrentUser().

+ 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 806 of file class.ilAccess.php.

806 : array
807 {
808 return $this->ilOrgUnitPositionAccess->filterUserIdsByPositionOfUser($user_id, $pos_perm, $ref_id, $user_ids);
809 }
filterUserIdsByPositionOfUser(int $user_id, string $pos_perm, int $ref_id, array $user_ids)

References $ref_id, $user_id, and ilOrgUnitPositionAccess\filterUserIdsByPositionOfUser().

+ 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 814 of file class.ilAccess.php.

814 : array
815 {
817 $rbac_perm,
818 $pos_perm,
819 $ref_id,
820 $user_ids
821 );
822 }
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)

References $ref_id, and ilOrgUnitPositionAccess\filterUserIdsByRbacOrPositionOfCurrentUser().

+ Here is the call graph for this function:

◆ filterUserIdsForCurrentUsersPositionsAndPermission()

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

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

ilOrgUnitAccessException when a unknown permission is used. See the list of available permissions in interface ilOrgUnitPositionAccessHandler

See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

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

739 : array
740 {
742 $user_ids,
743 $permission
744 );
745 }
filterUserIdsForCurrentUsersPositionsAndPermission(array $user_ids, string $permission)

References ilOrgUnitPositionAccess\filterUserIdsForCurrentUsersPositionsAndPermission().

+ Here is the call graph for this function:

◆ filterUserIdsForUsersPositionsAndPermission()

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

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

ilOrgUnitAccessException when a unknown permission is used. See the list of available permissions in interface ilOrgUnitPositionAccessHandler

See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

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

750 : array
751 {
753 $user_ids,
754 $for_user_id,
755 $permission
756 );
757 }
filterUserIdsForUsersPositionsAndPermission(array $user_ids, int $for_user_id, string $permission)

References ilOrgUnitPositionAccess\filterUserIdsForUsersPositionsAndPermission().

+ Here is the call graph for this function:

◆ getInfo()

ilAccess::getInfo ( )

get last info object

See also
ilAccessInfo::getInfoItems()

Implements ilRBACAccessHandler.

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

337 : array
338 {
339 return is_object($this->last_info) ? $this->last_info->getInfoItems() : [];
340 }

◆ getLanguage()

ilAccess::getLanguage ( )
private

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

92 {
93 if ($this->language === null) {
94 global $DIC;
95 $this->language = $DIC['lng'];
96 }
97
98 return $this->language;
99 }
ilLanguage $language
language handling

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

+ Here is the call graph for this function:

◆ getPreventCachingLastResult()

ilAccess::getPreventCachingLastResult ( )

Get prevent caching last result.

Implements ilRBACAccessHandler.

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

143 : bool
144 {
146 }
bool $prevent_caching_last_result

◆ getResultAll()

ilAccess::getResultAll ( int  $a_ref_id = 0)

Implements ilRBACAccessHandler.

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

353 : array
354 {
355 if ($a_ref_id == "") {
356 return $this->results;
357 }
358
359 return $this->results[$a_ref_id];
360 }
array $results

References $results.

◆ getResultLast()

ilAccess::getResultLast ( )

get last info object

Implements ilRBACAccessHandler.

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

345 : array
346 {
347 return $this->last_result;
348 }
array $last_result

◆ getResults()

ilAccess::getResults ( )

Implements ilRBACAccessHandler.

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

169 : array
170 {
171 return $this->results;
172 }

References $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.

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 }

References ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ hasCurrentUserAnyPositionAccess()

ilAccess::hasCurrentUserAnyPositionAccess ( int  $ref_id)

Parameters
int$ref_id
Returns
bool

Implements ilOrgUnitPositionAccessHandler.

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

827 : bool
828 {
830 }

References $ref_id, and ilOrgUnitPositionAccess\hasCurrentUserAnyPositionAccess().

+ Here is the call graph for this function:

◆ hasUserRBACorAnyPositionAccess()

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

Implements ilOrgUnitPositionAndRBACAccessHandler.

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

835 : bool
836 {
838 }
hasUserRBACorAnyPositionAccess(string $rbac_perm, int $ref_id)

References $ref_id, and ilOrgUnitPositionAccess\hasUserRBACorAnyPositionAccess().

+ Here is the call graph for this function:

◆ isCurrentUserBasedOnPositionsAllowedTo()

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

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

Implements ilOrgUnitPositionAccessHandler.

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

762 : bool
763 {
764 return $this->ilOrgUnitPositionAccess->isCurrentUserBasedOnPositionsAllowedTo($permission, $on_user_ids);
765 }
isCurrentUserBasedOnPositionsAllowedTo(string $permission, array $on_user_ids)

References ilOrgUnitPositionAccess\isCurrentUserBasedOnPositionsAllowedTo().

+ 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_idsList of ILIAS-User-IDs
Returns
bool
See also
getAvailablePositionRelatedPermissions for available permissions

Implements ilOrgUnitPositionAccessHandler.

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

770 : bool
771 {
773 $which_user_id,
774 $permission,
775 $on_user_ids
776 );
777 }
isUserBasedOnPositionsAllowedTo(int $which_user_id, string $permission, array $on_user_ids)

References ilOrgUnitPositionAccess\isUserBasedOnPositionsAllowedTo().

+ 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.

135 : void
136 {
137 $this->prevent_caching_last_result = $a_val;
138 }

◆ setResults()

ilAccess::setResults ( array  $a_results)

Implements ilRBACAccessHandler.

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

177 : void
178 {
179 $this->results = $a_results;
180 }

◆ 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.

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 }
getPreventCachingLastResult()
Get prevent caching last result.
ilAccessInfo $current_info

References ILIAS\Repository\user().

+ 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.

◆ $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.

◆ $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.

◆ $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.

◆ $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: