35 if (self::$instance === null) {
36 self::$instance =
new self();
38 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_SPEC_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 39 . self::DEFAULT_CONTEXT);
40 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_DEFAULT_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION
41 .
"_" . self::DEFAULT_CONTEXT);
42 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_ORGU_DEFAULT_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION
43 .
"_" . self::DEFAULT_CONTEXT);
44 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_CRS_MEMBERS .
"_user_id_" . $DIC->user()->getId());
45 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_ORGU_MEMBERS .
"_user_id_" . $DIC->user()->getId());
46 self::$instance->dropTempTable(self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 47 . self::DEFAULT_CONTEXT);
50 return self::$instance;
69 if (!$DIC->settings()->get(
"enable_my_staff")) {
125 if (count($arr_usr_id) > 0) {
142 $q =
"SELECT COUNT(orgu_ua.orgu_id) AS 'cnt' FROM il_orgu_permissions AS perm 143 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id 144 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context is not NULL 145 WHERE orgu_ua.user_id = " . $DIC->database()->quote($user_id,
'integer') .
" AND perm.operations is not NULL AND perm.parent_id = -1";
147 $set = $DIC->database()->query($q);
148 $rec = $DIC->database()->fetchAssoc($set);
161 public function countOrgusOfUserWithOperationAndContext($user_id, $org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT)
170 $q =
"SELECT COUNT(orgu_ua.orgu_id) AS cnt FROM il_orgu_permissions AS perm 171 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id 172 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '" . $context .
"' 173 and orgu_ua.user_id = " . $DIC->database()->quote($user_id,
'integer') .
" AND perm.operations LIKE '%\"" 174 . $operation->getOperationId() .
"\"%' 175 WHERE perm.parent_id = -1";
177 $set = $DIC->database()->query($q);
178 $rec = $DIC->database()->fetchAssoc($set);
192 public function getUsersForUserOperationAndContext($user_id, $org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT, $tmp_table_name_prefix = self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX)
196 $tmp_table_name = $this->buildTempTableIlobjectsUserMatrixForUserOperationAndContext($user_id, $org_unit_operation_string, $context, $tmp_table_name_prefix);
198 $q =
'SELECT usr_id FROM ' . $tmp_table_name;
200 $user_set = $DIC->database()->query($q);
202 $arr_users =
array();
204 while ($rec = $DIC->database()->fetchAssoc($user_set)) {
205 $arr_users[$rec[
'usr_id']] = $rec[
'usr_id'];
223 $q =
"SELECT " . $tmp_orgu_members .
".user_id AS usr_id 225 " . $tmp_orgu_members .
" 226 INNER JOIN il_orgu_ua AS orgu_ua_current_user on orgu_ua_current_user.user_id = " . $DIC->database()->quote($user_id,
'integer') .
" 227 INNER JOIN il_orgu_authority AS auth ON auth.position_id = orgu_ua_current_user.position_id 230 /* Identische OrgUnit wie Current User; Nicht Rekursiv; Fixe Position */ 231 (orgu_ua_current_user.orgu_id = " . $tmp_orgu_members .
".orgu_id AND auth.scope = 1 232 AND auth.over = " . $tmp_orgu_members .
".user_position_id AND auth.over <> -1 235 /* Identische OrgUnit wie Current User; Nicht Rekursiv; Position egal */ 236 (orgu_ua_current_user.orgu_id = " . $tmp_orgu_members .
".orgu_id AND auth.scope = 1 AND auth.over = -1) 238 /* Kinder OrgUnit wie Current User */ 241 " . $tmp_orgu_members .
".orgu_id = orgu_ua_current_user.orgu_id OR 242 " . $tmp_orgu_members .
".tree_path LIKE CONCAT(\"%.\",orgu_ua_current_user.orgu_id ,\".%\") 244 " . $tmp_orgu_members .
".tree_path LIKE CONCAT(\"%.\",orgu_ua_current_user.orgu_id ) 250 /* Gleiche Position */ 251 auth.over = " . $tmp_orgu_members .
".user_position_id AND auth.over <> -1 264 $user_set = $DIC->database()->query($q);
266 $arr_users =
array();
268 while ($rec = $DIC->database()->fetchAssoc($user_set)) {
269 $arr_users[$rec[
'usr_id']] = $rec[
'usr_id'];
283 public function getIlobjectsAndUsersForUserOperationAndContext($user_id, $org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT)
292 $tmp_table_name =
'tmp_ilobj_user_matrix_' . $operation->getOperationId();
294 $this->buildTempTableIlobjectsUserMatrixForUserOperationAndContext($user_id, $org_unit_operation_string, $context, $tmp_table_name);
296 $q =
'SELECT * FROM ' . $tmp_table_name;
298 $user_set = $DIC->database()->query($q);
300 $arr_user_obj =
array();
302 while ($rec = $DIC->database()->fetchAssoc($user_set)) {
303 $arr_user_obj[] = $rec;
306 return $arr_user_obj;
318 public function buildTempTableIlobjectsUserMatrixForUserOperationAndContext($user_id, $org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT, $temporary_table_name_prefix = self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX)
322 $temporary_table_name = $temporary_table_name_prefix .
"_" . $org_unit_operation_string .
"_" . $context;
331 $tmp_table_objects_specific_perimissions = $this->buildTempTableIlobjectsSpecificPermissionSetForOperationAndContext($org_unit_operation_string, $context, self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_SPEC_PERMISSIONS);
333 $tmp_table_objects_default_perimissions = $this->buildTempTableIlobjectsDefaultPermissionSetForOperationAndContext($org_unit_operation_string, $context, self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_DEFAULT_PERMISSIONS);
335 $tmp_table_orgunit_default_perimissions = $this->buildTempTableIlorgunitDefaultPermissionSetForOperationAndContext($org_unit_operation_string, $context, self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_ORGU_DEFAULT_PERMISSIONS);
343 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 344 . self::DEFAULT_CONTEXT) {
348 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" AS ( 349 SELECT DISTINCT user_perm_matrix.perm_for_ref_id, user_perm_matrix.usr_id FROM 351 SELECT crs.*," . $tmp_table_course_members .
".ref_id," . $tmp_table_course_members .
".usr_id FROM 353 SELECT * FROM " . $tmp_table_objects_specific_perimissions .
" 355 SELECT * FROM " . $tmp_table_objects_default_perimissions .
" 357 INNER JOIN " . $tmp_table_course_members .
" on " . $tmp_table_course_members .
".ref_id = crs.perm_for_ref_id 360 " . $tmp_table_course_members .
".orgu_id = crs.perm_for_orgu_id AND " . $tmp_table_course_members .
".position_id = crs.perm_over_user_with_position AND perm_orgu_scope = 1 362 or perm_orgu_scope = 2 365 SELECT " . $tmp_table_orgunit_default_perimissions .
".*, " . $tmp_table_orgu_members .
".orgu_id AS ref_id, " 366 . $tmp_table_orgu_members .
".user_id FROM " . $tmp_table_orgunit_default_perimissions .
" 367 INNER JOIN " . $tmp_table_orgu_members .
" on " . $tmp_table_orgu_members .
".orgu_id = " 368 . $tmp_table_orgunit_default_perimissions .
".perm_for_ref_id 371 " . $tmp_table_orgu_members .
".orgu_id = " . $tmp_table_orgunit_default_perimissions .
".perm_for_orgu_id AND " 372 . $tmp_table_orgu_members .
".user_position_id = " . $tmp_table_orgunit_default_perimissions .
".perm_over_user_with_position AND perm_orgu_scope = 1 374 or perm_orgu_scope = 2 377 ) AS user_perm_matrix 378 INNER JOIN " . $tmp_table_orgu_member_path .
" AS path on path.user_id = user_perm_matrix.usr_id 380 INNER JOIN il_orgu_ua AS orgu_ua_current_user on orgu_ua_current_user.user_id = " . $DIC->database()->quote($user_id,
'integer') .
" 381 INNER JOIN il_orgu_permissions AS perm on perm.position_id = orgu_ua_current_user.position_id AND perm.parent_id = -1 382 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '$context' 383 and perm.operations LIKE '%\"" . $operation->getOperationId() .
"\"%' 387 /* Identische OrgUnit wie Current User; Nicht Rekursiv; Fixe Position */ 388 (orgu_ua_current_user.orgu_id = user_perm_matrix.perm_for_orgu_id AND user_perm_matrix.perm_orgu_scope = 1 389 AND orgu_ua_current_user.position_id = user_perm_matrix.perm_for_position_id AND user_perm_matrix.perm_over_user_with_position <> -1 392 /* Identische OrgUnit wie Current User; Nicht Rekursiv; Position egal */ 393 (orgu_ua_current_user.orgu_id = user_perm_matrix.perm_for_orgu_id AND user_perm_matrix.perm_orgu_scope = 1 AND user_perm_matrix.perm_over_user_with_position = -1) 395 /* Kinder OrgUnit wie Current User */ 397 orgu_ua_current_user.orgu_id = user_perm_matrix.perm_for_orgu_id 400 path.orgu_id = user_perm_matrix.perm_for_orgu_id OR 401 path.tree_path LIKE CONCAT(\"%.\",user_perm_matrix.perm_for_orgu_id ,\".%\") 403 path.tree_path LIKE CONCAT(\"%.\",user_perm_matrix.perm_for_orgu_id ) 409 /* Gleiche Position */ 410 orgu_ua_current_user.position_id = user_perm_matrix.perm_for_position_id AND user_perm_matrix.perm_over_user_with_position <> -1 415 user_perm_matrix.perm_over_user_with_position = -1 418 AND user_perm_matrix.perm_orgu_scope = 2 424 $DIC->database()->manipulate($q);
426 return $temporary_table_name;
437 public function buildTempTableIlobjectsSpecificPermissionSetForOperationAndContext($org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT, $temporary_table_name_prefix = self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_SPEC_PERMISSIONS)
441 $temporary_table_name = $temporary_table_name_prefix .
"_" . $org_unit_operation_string .
"_" . $context;
448 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_SPEC_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 449 . self::DEFAULT_CONTEXT) {
453 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" 454 (INDEX i1 (perm_for_ref_id), INDEX i2 (perm_for_orgu_id), INDEX i3 (perm_orgu_scope), INDEX i4 (perm_for_position_id), INDEX i5 (perm_over_user_with_position)) 457 obj_ref.ref_id AS perm_for_ref_id, 458 orgu_ua.orgu_id AS perm_for_orgu_id, 459 auth.scope AS perm_orgu_scope, 460 orgu_ua.position_id AS perm_for_position_id, 461 auth.over AS perm_over_user_with_position 463 il_orgu_permissions AS perm 464 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id 465 INNER JOIN il_orgu_authority AS auth ON auth.position_id = orgu_ua.position_id AND orgu_ua.user_id = " .
$GLOBALS[
'DIC']->user()
467 INNER JOIN object_reference AS obj_ref ON obj_ref.ref_id = perm.parent_id 468 INNER JOIN object_data AS obj ON obj.obj_id = obj_ref.obj_id AND obj.type = '$context' 469 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '$context' 471 perm.operations LIKE '%\"" . $operation->getOperationId() .
"\"%' 474 $DIC->database()->manipulate($q);
476 return $temporary_table_name;
487 public function buildTempTableIlobjectsDefaultPermissionSetForOperationAndContext($org_unit_operation_string =
ilOrgUnitOperation::OP_ACCESS_ENROLMENTS, $context = self::DEFAULT_CONTEXT, $temporary_table_name_prefix = self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_DEFAULT_PERMISSIONS)
491 $temporary_table_name = $temporary_table_name_prefix .
"_" . $org_unit_operation_string .
"_" . $context;
498 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_DEFAULT_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 499 . self::DEFAULT_CONTEXT) {
503 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" 504 (INDEX i1 (perm_for_ref_id), INDEX i2 (perm_for_orgu_id), INDEX i3 (perm_orgu_scope), INDEX i4 (perm_for_position_id),INDEX i5 (perm_over_user_with_position)) 507 obj_ref.ref_id AS perm_for_ref_id, 508 orgu_ua.orgu_id AS perm_for_orgu_id, 509 auth.scope AS perm_orgu_scope, 510 orgu_ua.position_id AS perm_for_position_id, 511 auth.over AS perm_over_user_with_position 514 INNER JOIN object_reference AS obj_ref ON obj_ref.obj_id = obj.obj_id 515 INNER JOIN il_orgu_permissions AS perm ON perm.operations LIKE '%\"" . $operation->getOperationId() .
"\"%' AND perm.parent_id = -1 516 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '" . $context .
"' 517 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id AND orgu_ua.user_id = " .
$GLOBALS[
'DIC']->user()
519 INNER JOIN il_orgu_authority AS auth ON auth.position_id = orgu_ua.position_id 522 obj.type = '" . $context .
"' 523 AND (obj_ref.ref_id , orgu_ua.position_id) 526 perm.parent_id, orgu_ua.position_id 528 il_orgu_permissions AS perm 529 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id 530 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '" . $context .
"' 531 WHERE perm.parent_id <> -1) 534 $DIC->database()->manipulate($q);
536 return $temporary_table_name;
547 public function buildTempTableIlorgunitDefaultPermissionSetForOperationAndContext($org_unit_operation_string = self::DEFAULT_ORG_UNIT_OPERATION, $context = self::DEFAULT_CONTEXT, $temporary_table_name_prefix = self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_ORGU_DEFAULT_PERMISSIONS)
551 $temporary_table_name = $temporary_table_name_prefix .
"_" . $org_unit_operation_string .
"_" . $context;
557 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_ORGU_DEFAULT_PERMISSIONS .
"_" . self::DEFAULT_ORG_UNIT_OPERATION .
"_" 558 . self::DEFAULT_CONTEXT) {
562 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" 563 (INDEX i1 (perm_for_ref_id), INDEX i2 (perm_for_orgu_id), INDEX i3 (perm_orgu_scope), INDEX i4 (perm_for_position_id), INDEX i5 (perm_over_user_with_position)) 566 orgu_ua.orgu_id AS perm_for_ref_id, /* Table has to be identical to the other Permission For Operation And Context-Tables! */ 567 orgu_ua.orgu_id AS perm_for_orgu_id, 568 auth.scope AS perm_orgu_scope, 569 orgu_ua.position_id AS perm_for_position_id, 570 auth.over AS perm_over_user_with_position 572 il_orgu_permissions AS perm 573 INNER JOIN il_orgu_ua AS orgu_ua ON orgu_ua.position_id = perm.position_id AND perm.parent_id = -1 AND orgu_ua.user_id = " 574 .
$GLOBALS[
'DIC']->user()->getId() .
" 575 INNER JOIN il_orgu_authority AS auth ON auth.position_id = orgu_ua.position_id 576 INNER JOIN il_orgu_op_contexts AS contexts on contexts.id = perm.context_id AND contexts.context = '" . $context .
"' 578 perm.operations LIKE '%\"" . $operation->getOperationId() .
"\"%' 581 $DIC->database()->manipulate($q);
583 return $temporary_table_name;
597 $temporary_table_name = $temporary_table_name_prefix .
"_user_id_" . $DIC->user()->getId();
599 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_CRS_MEMBERS .
"_user_id_" . $DIC->user()->getId()
600 || count($only_courses_of_user_ids) > 0) {
604 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" 605 (INDEX i1(ref_id), INDEX i2 (usr_id), INDEX i3 (position_id), INDEX i4 (orgu_id)) 607 SELECT crs_members_crs_ref.ref_id, crs_members.usr_id, orgu_ua.position_id, orgu_ua.orgu_id 609 SELECT obj_id, usr_id FROM obj_members WHERE member = 1 610 AND " . $DIC->database()->in(
'obj_members.usr_id', $only_courses_of_user_ids,
false,
'integer') .
" 612 SELECT obj_id, usr_id FROM crs_waiting_list 613 WHERE " . $DIC->database()->in(
'crs_waiting_list.usr_id', $only_courses_of_user_ids,
false,
'integer') .
" 615 SELECT obj_id, usr_id FROM il_subscribers 616 WHERE " . $DIC->database()->in(
'il_subscribers.usr_id', $only_courses_of_user_ids,
false,
'integer') .
" 618 INNER JOIN object_reference AS crs_members_crs_ref on crs_members_crs_ref.obj_id = crs_members.obj_id 619 INNER JOIN il_orgu_ua AS orgu_ua on orgu_ua.user_id = crs_members.usr_id 622 $DIC->database()->manipulate($q);
624 return $temporary_table_name;
638 $temporary_table_name = $temporary_table_name_prefix .
"_user_id_" . $DIC->user()->getId();
640 if ($temporary_table_name != self::TMP_DEFAULT_TABLE_NAME_PREFIX_ORGU_MEMBERS .
"_user_id_" . $DIC->user()->getId()
641 || count($only_orgus_of_user_ids) > 0) {
645 $q =
"CREATE TEMPORARY TABLE IF NOT EXISTS " . $temporary_table_name .
" 646 (INDEX i1(orgu_id), INDEX i2 (tree_path), INDEX i3 (tree_child), INDEX i4 (tree_parent), INDEX i5 (tree_lft), INDEX i6 (tree_rgt), INDEX i7 (user_position_id), INDEX i8 (user_id)) 648 SELECT orgu_ua.orgu_id AS orgu_id, 649 tree_orgu.path AS tree_path, 650 tree_orgu.child AS tree_child, 651 tree_orgu.parent AS tree_parent, 652 tree_orgu.lft AS tree_lft, 653 tree_orgu.rgt AS tree_rgt, 654 orgu_ua.position_id AS user_position_id, 655 orgu_ua.user_id AS user_id 657 il_orgu_ua AS orgu_ua 658 INNER JOIN object_reference AS obj_ref on obj_ref.ref_id = orgu_ua.orgu_id AND obj_ref.deleted is null 659 LEFT JOIN tree AS tree_orgu ON tree_orgu.child = orgu_ua.orgu_id";
661 if (count($only_orgus_of_user_ids) > 0) {
662 $q .=
" WHERE " . $DIC->database()->in(
'orgu_ua.user_id', $only_orgus_of_user_ids,
false,
'integer') .
" ";
667 $DIC->database()->manipulate($q);
669 return $temporary_table_name;
682 $q =
"DROP TABLE IF EXISTS " . $temporary_table_name;
683 $DIC->database()->manipulate($q);
const TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_SPEC_PERMISSIONS
const TMP_DEFAULT_TABLE_NAME_PREFIX_IL_ORGU_DEFAULT_PERMISSIONS
buildTempTableCourseMemberships($temporary_table_name_prefix=self::TMP_DEFAULT_TABLE_NAME_PREFIX_CRS_MEMBERS, array $only_courses_of_user_ids=array())
countOrgusOfUserWithAtLeastOneOperation($user_id)
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
hasCurrentUserAccessToUser($usr_id=0)
static $orgu_users_of_current_user_show_staff_permission
const TMP_DEFAULT_TABLE_NAME_PREFIX_CRS_MEMBERS
const TMP_DEFAULT_TABLE_NAME_PREFIX_ORGU_MEMBERS
hasCurrentUserAccessToLearningProgressInObject($ref_id=0)
dropTempTable($temporary_table_name)
getUsersForUserOperationAndContext($user_id, $org_unit_operation_string=self::DEFAULT_ORG_UNIT_OPERATION, $context=self::DEFAULT_CONTEXT, $tmp_table_name_prefix=self::TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX)
const OP_READ_LEARNING_PROGRESS
const DEFAULT_ORG_UNIT_OPERATION
const TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_USER_MATRIX
Create styles array
The data for the language used.
const OP_ACCESS_ENROLMENTS
buildTempTableOrguMemberships($temporary_table_name_prefix=self::TMP_DEFAULT_TABLE_NAME_PREFIX_ORGU_MEMBERS, array $only_orgus_of_user_ids=array())
hasCurrentUserAccessToCourseLearningProgressForAtLeastOneUser()
static findByOperationString($operation_string, $context_name)
hasCurrentUserAccessToMyStaff()
getUsersForUser($user_id)
const TMP_DEFAULT_TABLE_NAME_PREFIX_IL_OBJ_DEFAULT_PERMISSIONS