51 return $this->IBLOCK_ID == $this->id;
59 if (!empty(
$ar) && is_array(
$ar))
61 foreach (
$ar as $arRight)
63 if (isset($arRight[
"RIGHT_ID"]))
65 if ($arRight[
"RIGHT_ID"] <>
'')
66 $RIGHT_ID = $arRight[
"RIGHT_ID"];
70 $arRights[$RIGHT_ID] =
array(
76 elseif (isset($arRight[
"GROUP_CODE"]))
78 $arRights[$RIGHT_ID][
"GROUP_CODE"] = $arRight[
"GROUP_CODE"];
80 elseif (isset($arRight[
"DO_CLEAN"]))
82 $arRights[$RIGHT_ID][
"DO_CLEAN"] = $arRight[
"DO_CLEAN"] ==
"Y" ?
"Y" :
"N";
84 elseif (isset($arRight[
"TASK_ID"]))
86 $arRights[$RIGHT_ID][
"TASK_ID"] = $arRight[
"TASK_ID"];
91 foreach($arRights as $RIGHT_ID => $arRightSet)
93 if(mb_substr($RIGHT_ID, 0, 1) ==
"n")
95 if($arRightSet[
"GROUP_CODE"] ==
'')
96 unset($arRights[$RIGHT_ID]);
97 elseif($arRightSet[
"TASK_ID"] > 0)
100 foreach($arRights as $RIGHT_ID2 => $arRightSet2)
104 && $arRightSet2[
"GROUP_CODE"] === $arRightSet[
"GROUP_CODE"]
107 unset($arRights[$RIGHT_ID2]);
117 private static function initTaskLetters()
119 if(!isset(self::$arLetterToTask))
122 array(
"LETTER"=>
"asc"),
124 "MODULE_ID" =>
"iblock",
125 "BINDING" =>
"iblock",
129 self::$arLetterToTask =
array();
131 self::$arLetterToTask[
$ar[
"LETTER"]] =
$ar[
"ID"];
137 self::initTaskLetters();
140 return self::$arLetterToTask;
141 elseif(array_key_exists($letter, self::$arLetterToTask))
142 return self::$arLetterToTask[$letter];
149 self::initTaskLetters();
152 return array_flip(self::$arLetterToTask);
154 return array_search($task, self::$arLetterToTask);
159 if(!isset(self::$arLetterToOperations))
161 self::$arLetterToOperations =
array();
164 self::$arLetterToOperations[$l2] =
array();
166 self::$arLetterToOperations[$l2][$op] = $op;
171 return self::$arLetterToOperations;
172 elseif(array_key_exists($letter, self::$arLetterToOperations))
173 return self::$arLetterToOperations[$letter];
182 foreach(
$arGroups as $GROUP_ID => $LETTER)
186 $arRights[
"n".$i] =
array(
187 "GROUP_CODE" =>
"G".$GROUP_ID,
190 "TASK_ID" => $TASK_ID,
203 array(
"LETTER"=>
"asc"),
205 "MODULE_ID" =>
"iblock",
215 function GetGroups($arOperations =
false, $opMode =
false)
219 $arRights = $this->
GetRights(
array(
"operations" => $arOperations,
"operations_mode" => $opMode));
220 foreach($arRights as $arRight)
221 $arResult[$arRight[
"GROUP_CODE"]] = $arRight[
"GROUP_CODE"];
232 "IBLOCK_ID" =>
array(
233 "TABLE_ALIAS" =>
"BR",
234 "FIELD_NAME" =>
"BR.IBLOCK_ID",
236 "FIELD_TYPE" =>
"int",
240 "TABLE_ALIAS" =>
"BR",
241 "FIELD_NAME" =>
"BR.IBLOCK_ID",
243 "FIELD_TYPE" =>
"int",
248 $strWhere = $obQueryWhere->GetQuery(
$arFilter);
261 ".($strWhere?
"WHERE ".$strWhere:
"").
"
291 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
292 AND BR.ENTITY_TYPE = 'iblock'
306 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, 'N' IS_INHERITED, BR.XML_ID
309 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
310 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
312 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
313 AND BR.ENTITY_TYPE = 'iblock'
314 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
316 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT
318 COUNT(DISTINCT O.ID) = ".
count($arOperations).
"
328 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, 'N' IS_INHERITED, BR.XML_ID
331 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
332 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
334 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
335 AND BR.ENTITY_TYPE = 'iblock'
336 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
346 "GROUP_CODE" =>
$ar[
"GROUP_CODE"],
347 "DO_INHERIT" =>
$ar[
"DO_INHERIT"],
348 "IS_INHERITED" =>
$ar[
"IS_INHERITED"],
349 "OVERWRITED" => isset(
$arOptions[
"count_overwrited"]) &&
$arOptions[
"count_overwrited"]? $obStorage->CountOverWrited(
$ar[
"GROUP_CODE"]): 0,
350 "TASK_ID" =>
$ar[
"TASK_ID"],
351 "XML_ID" =>
$ar[
"XML_ID"],
353 if(isset(
$ar[
"ENTITY_TYPE"]))
355 if(isset(
$ar[
"ENTITY_ID"]))
365 $stor->CleanUp(
true);
371 $stor->Recalculate();
378 foreach($arOldParents as
$id)
383 $arRights = $ob->GetRights();
384 foreach($arRights as $RIGHT_ID => $arRight)
386 if($arRight[
"DO_INHERIT"] ===
"Y")
395 $arOwnGroupCodes =
array();
397 foreach($arDBRights as $RIGHT_ID => $arOwnRight)
398 $arOwnGroupCodes[$arOwnRight[
"GROUP_CODE"]] = $RIGHT_ID;
400 foreach($arNewParents as
$id)
405 $arRights = $ob->GetRights();
406 foreach($arRights as $RIGHT_ID => $arRight)
409 $arRight[
"DO_INHERIT"] ===
"Y"
410 && !array_key_exists($arRight[
"GROUP_CODE"], $arOwnGroupCodes)
413 $obStorage->_set_section(
$id);
414 $obStorage->AddSelfSet($RIGHT_ID,
true);
415 $obStorage->AddChildrenSet($RIGHT_ID, $arRight[
"GROUP_CODE"],
true);
438 $arAddedCodes =
array();
439 $arUniqCodes =
array();
440 foreach($arRights as $RIGHT_ID => $arRightSet)
442 if($arRightSet[
"GROUP_CODE"] <>
'')
444 if(isset($arUniqCodes[$arRightSet[
"GROUP_CODE"]]))
445 unset($arRights[$RIGHT_ID]);
447 $arUniqCodes[$arRightSet[
"GROUP_CODE"]] =
true;
452 foreach($arRights as $RIGHT_ID => $arRightSet)
455 !is_array($arRightSet[
"TASK_ID"])
456 && !array_key_exists($arRightSet[
"TASK_ID"],
$arTasks)
457 && array_key_exists($RIGHT_ID, $arDBRights)
459 $arRights[$RIGHT_ID][
"TASK_ID"] = $arDBRights[$RIGHT_ID][
"TASK_ID"];
464 foreach($arRights as $RIGHT_ID => $arRightSet)
466 $ID = intval($RIGHT_ID);
467 $GROUP_CODE = $arRightSet[
"GROUP_CODE"];
469 $bChildrenSet =
false;
471 if($GROUP_CODE ==
'' || is_array($arRightSet[
"TASK_ID"]))
474 if(!array_key_exists($arRightSet[
"TASK_ID"],
$arTasks))
478 array_key_exists($RIGHT_ID, $arDBRights)
479 && isset($arRightSet[
"DO_CLEAN"])
480 && $arRightSet[
"DO_CLEAN"] ==
"Y"
484 $bChildrenSet =
true;
488 if(mb_substr($RIGHT_ID, 0, 1) ==
"n")
490 $arAddedCodes[$GROUP_CODE] = $GROUP_CODE;
491 $NEW_RIGHT_ID = $this->
_add(
494 $arRightSet[
"TASK_ID"],
495 $arRightSet[
"XML_ID"] ??
false
498 if(!isset($arRightSet[
"DO_CLEAN"]) || $arRightSet[
"DO_CLEAN"] !==
"NOT")
500 $obStorage->AddSelfSet($NEW_RIGHT_ID);
502 if(!isset($arRightSet[
"DO_CLEAN"]) || $arRightSet[
"DO_CLEAN"] !==
"NOT")
505 $obStorage->AddChildrenSet($NEW_RIGHT_ID, $GROUP_CODE,
true);
508 array_key_exists(
$ID, $arDBRights)
509 && $arDBRights[
$ID][
"IS_INHERITED"] !=
"Y"
512 $this->
_update(
$ID, $GROUP_CODE, $bInherit, $arRightSet[
"TASK_ID"]);
514 if ($bInherit && $bChildrenSet)
516 $obStorage->AddChildrenSet(
$ID, $GROUP_CODE,
true);
519 unset($arDBRights[
$ID]);
523 foreach($arDBRights as $RIGHT_ID => $arRightSet)
525 if($arRightSet[
"IS_INHERITED"] ==
"Y")
529 if($arRightSet[
"DO_INHERIT"] ==
"Y")
534 if(!isset($arAddedCodes[$arRightSet[
"GROUP_CODE"]]))
536 foreach($obStorage->FindParentWithInherit($arRightSet[
"GROUP_CODE"]) as $SECTION_ID => $PARENT_RIGHT)
538 $obStorage->AddSelfSet($PARENT_RIGHT,
true);
539 $obStorage->AddChildrenSet($PARENT_RIGHT, $arRightSet[
"GROUP_CODE"],
true);
545 $obStorage->CleanUp();
547 CIBlock::clearIblockTagCache($this->IBLOCK_ID);
552 function _add($GROUP_CODE, $bInherit, $TASK_ID, $XML_ID)
557 $NEW_RIGHT_ID =
$DB->Add(
"b_iblock_right",
array(
558 "IBLOCK_ID" => $this->IBLOCK_ID,
559 "GROUP_CODE" => $GROUP_CODE,
561 "ENTITY_ID" => $this->
id,
562 "DO_INHERIT" => $bInherit?
"Y":
"N",
563 "TASK_ID" => $TASK_ID,
564 "OP_SREAD" => in_array(
"section_read", $arOperations)?
"Y":
"N",
565 "OP_EREAD" => in_array(
"element_read", $arOperations)?
"Y":
"N",
566 "XML_ID" => ($XML_ID <>
''? $XML_ID:
false),
569 return $NEW_RIGHT_ID;
572 function _update($RIGHT_ID, $GROUP_CODE, $bInherit, $TASK_ID)
575 $RIGHT_ID = (int)$RIGHT_ID;
578 $strUpdate =
$DB->PrepareUpdate(
"b_iblock_right",
array(
580 "DO_INHERIT" => $bInherit?
"Y":
"N",
581 "TASK_ID" => $TASK_ID,
582 "OP_SREAD" => in_array(
"section_read", $arOperations)?
"Y":
"N",
583 "OP_EREAD" => in_array(
"element_read", $arOperations)?
"Y":
"N",
585 $DB->Query(
"UPDATE b_iblock_right SET ".$strUpdate.
" WHERE ID = ".$RIGHT_ID);
591 $RIGHT_ID = intval($RIGHT_ID);
592 $DB->Query(
"DELETE FROM b_iblock_right WHERE ID = ".$RIGHT_ID);
622 if($USER_ID > 0 && (!is_object(
$USER) || $USER_ID !=
$USER->GetID()))
624 $arGroups = CUser::GetUserGroup($USER_ID);
628 && COption::GetOptionString(
"main",
"controller_member",
"N") !=
"Y"
629 && COption::GetOptionString(
"main",
"~controller_limited_admin",
"N") !=
"Y"
644 $user_id = intval(
$USER->GetID());
646 $RIGHTS_MODE = CIBlock::GetArrayByID($obRights->GetIBlockID(),
"RIGHTS_MODE");
650 $arOperations = $obRights->GetUserOperations(
$ID, $user_id);
654 $cache_id = get_class($obRights).$user_id.
"|".
$ID;
655 if(!isset($cache[$cache_id]))
656 $cache[$cache_id] = $obRights->GetUserOperations(
$ID, $user_id);
657 $arOperations = $cache[$cache_id];
661 return $arOperations;
663 return isset($arOperations[$permission]);
667 $letter = CIBlock::GetPermission($obRights->GetIBlockID());
671 return $arOperations;
673 return isset($arOperations[$permission]);
702 $USER_ID = intval($USER_ID);
707 $USER_ID = intval(
$USER->GetID());
708 $bAuthorized =
$USER->IsAuthorized();
712 $bAuthorized =
false;
716 $sqlID =
array(intval($arID));
718 $sqlID = array_map(
'intval', $arID);
721 SELECT IBR.ENTITY_ID ID, O.NAME
722 FROM b_iblock_right IBR
723 INNER JOIN b_task_operation T ON T.TASK_ID = IBR.TASK_ID
724 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
725 ".($USER_ID > 0?
"LEFT":
"INNER").
" JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = ".$USER_ID.
"
726 WHERE IBR.ENTITY_TYPE = 'iblock'
727 AND IBR.ENTITY_ID in (".implode(
", ", $sqlID).
")
728 AND (UA.USER_ID IS NOT NULL ".($bAuthorized?
"OR IBR.GROUP_CODE = 'AU'":
"").
")
745 $groupId = (int)$groupId;
753 $groupCode =
"G".$groupId;
754 $availableLetters = [
"E",
"R",
"S",
"T",
"U",
"W",
"X"];
755 if (!in_array($letter, $availableLetters))
757 unset($availableLetters);
759 $task = Main\TaskTable::getList([
761 "filter" => [
"=LETTER" => $letter,
"=MODULE_ID" =>
"iblock",
"=SYS" =>
"Y"]
763 $rightId = (!empty($task) ? $task[
"ID"] :
null);
766 $filter = [
"=IBLOCK_TYPE_ID" => $iblockType,
"=ACTIVE"=>
"Y"];
773 while (
$iblock = $queryObject->fetch())
777 $rightsMode = CIBlock::getArrayByID(
$iblockId,
"RIGHTS_MODE");
787 $rightsObject = new \CIBlockRights(
$iblockId);
788 $rights = $rightsObject->GetRights();
790 "GROUP_CODE" => $groupCode,
792 "IS_INHERITED" =>
"N",
794 "TASK_ID" => $rightId,
796 "ENTITY_TYPE" =>
"iblock",
799 $rightsObject->SetRights(
$rights);
812 $this->
id = (int)$SECTION_ID;
820 FROM b_iblock_section
821 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
822 AND ID = ".$this->id.
"
824 return is_array(
$rs->Fetch());
843 "IBLOCK_ID" =>
array(
844 "TABLE_ALIAS" =>
"SR",
845 "FIELD_NAME" =>
"SR.IBLOCK_ID",
847 "FIELD_TYPE" =>
"int",
851 "TABLE_ALIAS" =>
"SR",
852 "FIELD_NAME" =>
"SR.SECTION_ID",
854 "FIELD_TYPE" =>
"int",
859 $strWhere = $obQueryWhere->GetQuery(
$arFilter);
863 SR.SECTION_ID ITEM_ID
871 b_iblock_section_right SR
872 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
873 ".($strWhere?
"WHERE ".$strWhere:
"").
"
904 b_iblock_section_right SR
905 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
907 SR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
908 AND SR.SECTION_ID = ".$this->id.
"
922 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, SR.IS_INHERITED, BR.XML_ID
924 b_iblock_section_right SR
925 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
926 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
927 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
929 SR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
930 AND SR.SECTION_ID = ".$this->id.
"
931 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
933 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, SR.IS_INHERITED
935 COUNT(DISTINCT O.ID) = ".
count($arOperations).
"
945 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, SR.IS_INHERITED, BR.XML_ID
947 b_iblock_section_right SR
948 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
949 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
950 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
952 SR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
953 AND SR.SECTION_ID = ".$this->id.
"
954 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
963 $arParentRights = $obParentRights->GetRights();
964 foreach($arParentRights as $RIGHT_ID => $arRight)
967 "GROUP_CODE" => $arRight[
"GROUP_CODE"],
968 "DO_INHERIT" => $arRight[
"DO_INHERIT"],
969 "IS_INHERITED" =>
"Y",
970 "IS_OVERWRITED" =>
"Y",
971 "TASK_ID" => $arRight[
"TASK_ID"],
972 "XML_ID" => $arRight[
"XML_ID"],
974 if(isset($arRight[
"ENTITY_TYPE"]))
975 $arResult[$RIGHT_ID][
"ENTITY_TYPE"] = $arRight[
"ENTITY_TYPE"];
976 if(isset($arRight[
"ENTITY_ID"]))
977 $arResult[$RIGHT_ID][
"ENTITY_ID"] = $arRight[
"ENTITY_ID"];
985 "GROUP_CODE" =>
$ar[
"GROUP_CODE"],
986 "DO_INHERIT" =>
$ar[
"DO_INHERIT"],
987 "IS_INHERITED" =>
$ar[
"IS_INHERITED"],
988 "OVERWRITED" => isset(
$arOptions[
"count_overwrited"]) &&
$arOptions[
"count_overwrited"]? $obStorage->CountOverWrited(
$ar[
"GROUP_CODE"]): 0,
989 "TASK_ID" =>
$ar[
"TASK_ID"],
990 "XML_ID" =>
$ar[
"XML_ID"],
992 if(isset(
$ar[
"ENTITY_TYPE"]))
994 if(isset(
$ar[
"ENTITY_ID"]))
1004 $stor->DeleteRights();
1005 $stor->CleanUp(
false);
1011 $acc->UpdateCodes();
1030 $USER_ID = intval($USER_ID);
1032 if(is_object(
$USER))
1035 $USER_ID = intval(
$USER->GetID());
1036 $bAuthorized =
$USER->IsAuthorized();
1040 $bAuthorized =
false;
1043 if(!is_array($arID))
1044 $sqlID =
array(intval($arID));
1048 $sqlID = array_map(
'intval', $arID);
1051 SELECT SR.SECTION_ID ID, O.NAME
1052 FROM b_iblock_section BS
1053 INNER JOIN b_iblock_section_right SR ON SR.SECTION_ID = BS.ID
1054 INNER JOIN b_iblock_right IBR ON IBR.ID = SR.RIGHT_ID
1055 INNER JOIN b_task_operation T ON T.TASK_ID = IBR.TASK_ID
1056 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
1057 ".($USER_ID > 0?
"LEFT":
"INNER").
" JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = ".$USER_ID.
"
1058 WHERE BS.ID in (".implode(
", ", $sqlID).
")
1059 ".($bAuthorized || $USER_ID > 0?
"
1060 AND (UA.USER_ID IS NOT NULL
1061 ".($bAuthorized?
"OR IBR.GROUP_CODE = 'AU'":
"").
"
1062 ".($USER_ID > 0?
"OR (IBR.GROUP_CODE = 'CR' AND BS.CREATED_BY = ".$USER_ID.
")":
"").
"
1067 while(
$ar =
$rs->Fetch())
1088 $this->
id = (int)$ELEMENT_ID;
1096 FROM b_iblock_element
1097 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1098 AND ID = ".$this->id.
"
1100 return is_array(
$rs->Fetch());
1119 "IBLOCK_ID" =>
array(
1120 "TABLE_ALIAS" =>
"ER",
1121 "FIELD_NAME" =>
"ER.IBLOCK_ID",
1123 "FIELD_TYPE" =>
"int",
1127 "TABLE_ALIAS" =>
"ER",
1128 "FIELD_NAME" =>
"ER.ELEMENT_ID",
1130 "FIELD_TYPE" =>
"int",
1135 $strWhere = $obQueryWhere->GetQuery(
$arFilter);
1139 ER.ELEMENT_ID ITEM_ID
1147 b_iblock_element_right ER
1148 INNER JOIN b_iblock_right BR ON BR.ID = ER.RIGHT_ID
1149 ".($strWhere?
"WHERE ".$strWhere:
"").
"
1177 b_iblock_element_right ER
1178 INNER JOIN b_iblock_right BR ON BR.ID = ER.RIGHT_ID
1180 ER.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1181 AND ER.ELEMENT_ID = ".$this->id.
"
1195 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, ER.IS_INHERITED, BR.XML_ID
1197 b_iblock_element_right ER
1198 INNER JOIN b_iblock_right BR ON BR.ID = ER.RIGHT_ID
1199 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
1200 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
1202 ER.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1203 AND ER.ELEMENT_ID = ".$this->id.
"
1204 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
1206 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, ER.IS_INHERITED
1208 COUNT(DISTINCT O.ID) = ".
count($arOperations).
"
1218 BR.ID, BR.GROUP_CODE, BR.TASK_ID, BR.DO_INHERIT, ER.IS_INHERITED, BR.XML_ID
1220 b_iblock_element_right ER
1221 INNER JOIN b_iblock_right BR ON BR.ID = ER.RIGHT_ID
1222 INNER JOIN b_task_operation T ON T.TASK_ID = BR.TASK_ID
1223 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
1225 ER.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1226 AND ER.ELEMENT_ID = ".$this->id.
"
1227 AND O.NAME IN ('".implode(
"', '", $arOperations).
"')
1238 $arParentRights = $obParentRights->GetRights();
1239 foreach($arParentRights as $RIGHT_ID => $arRight)
1242 "GROUP_CODE" => $arRight[
"GROUP_CODE"],
1243 "DO_INHERIT" => $arRight[
"DO_INHERIT"],
1244 "IS_INHERITED" =>
"Y",
1245 "IS_OVERWRITED" =>
"Y",
1246 "TASK_ID" => $arRight[
"TASK_ID"],
1247 "XML_ID" => $arRight[
"XML_ID"],
1249 if(isset($arRight[
"ENTITY_TYPE"]))
1250 $arResult[$RIGHT_ID][
"ENTITY_TYPE"] = $arRight[
"ENTITY_TYPE"];
1251 if(isset($arRight[
"ENTITY_ID"]))
1252 $arResult[$RIGHT_ID][
"ENTITY_ID"] = $arRight[
"ENTITY_ID"];
1258 while(
$ar =
$rs->Fetch())
1261 "GROUP_CODE" =>
$ar[
"GROUP_CODE"],
1262 "DO_INHERIT" =>
$ar[
"DO_INHERIT"],
1263 "IS_INHERITED" =>
$ar[
"IS_INHERITED"],
1265 "TASK_ID" =>
$ar[
"TASK_ID"],
1266 "XML_ID" =>
$ar[
"XML_ID"],
1268 if(isset(
$ar[
"ENTITY_TYPE"]))
1270 if(isset(
$ar[
"ENTITY_ID"]))
1280 $stor->DeleteRights();
1281 $stor->CleanUp(
false);
1287 $acc->UpdateCodes();
1297 $USER_ID = intval($USER_ID);
1299 if(is_object(
$USER))
1302 $USER_ID = intval(
$USER->GetID());
1303 $bAuthorized =
$USER->IsAuthorized();
1307 $bAuthorized =
false;
1313 $acc->UpdateCodes(
array(
'USER_ID' => $USER_ID));
1316 if(!is_array($arID))
1317 $sqlID =
array(intval($arID));
1321 $sqlID = array_map(
'intval', $arID);
1325 while (!empty($sqlID))
1327 if (
count($sqlID) > 1000)
1329 $head = array_slice($sqlID, 0, 1000);
1330 array_splice($sqlID, 0, 1000);
1339 SELECT ER.ELEMENT_ID ID, O.NAME
1340 FROM b_iblock_element E
1341 INNER JOIN b_iblock_element_right ER ON ER.ELEMENT_ID = E.ID
1342 INNER JOIN b_iblock_right IBR ON IBR.ID = ER.RIGHT_ID
1343 INNER JOIN b_task_operation T ON T.TASK_ID = IBR.TASK_ID
1344 INNER JOIN b_operation O ON O.ID = T.OPERATION_ID
1345 ".($USER_ID > 0?
"LEFT":
"INNER").
" JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = ".$USER_ID.
"
1346 WHERE E.ID in (".implode(
", ", $head).
")
1347 ".($bAuthorized || $USER_ID > 0?
"
1348 AND (UA.USER_ID IS NOT NULL
1349 ".($bAuthorized?
"OR IBR.GROUP_CODE = 'AU'":
"").
"
1350 ".($USER_ID > 0?
"OR (IBR.GROUP_CODE = 'CR' AND E.CREATED_BY = ".$USER_ID.
")":
"").
"
1354 while(
$ar =
$rs->Fetch())
1384 $this->arSection =
null;
1389 if(!isset($this->arSection))
1391 if($this->SECTION_ID > 0)
1393 $rsSection = CIBlockSection::GetList(
array(),
array(
1394 "IBLOCK_ID" => $this->IBLOCK_ID,
1395 "=ID" => $this->SECTION_ID,
1396 "CHECK_PERMISSIONS" =>
"N",
1397 ),
false,
array(
"LEFT_MARGIN",
"RIGHT_MARGIN"));
1398 $this->arSection = $rsSection->Fetch();
1404 $this->arSection[
"LEFT_MARGIN"] <= 0
1405 || $this->arSection[
"RIGHT_MARGIN"] <= 0
1409 CIBlockSection::Resort($this->IBLOCK_ID);
1411 $rsSection = CIBlockSection::GetList(
array(),
array(
1412 "IBLOCK_ID" => $this->IBLOCK_ID,
1413 "=ID" => $this->SECTION_ID,
1414 "CHECK_PERMISSIONS" =>
"N",
1415 ),
false,
array(
"LEFT_MARGIN",
"RIGHT_MARGIN"));
1416 $this->arSection = $rsSection->Fetch();
1421 $this->arSection =
false;
1432 if($this->ELEMENT_ID > 0)
1440 COUNT(DISTINCT SR.SECTION_ID) CNT
1443 INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
1444 INNER JOIN b_iblock_section BS ON BS.ID = SR.SECTION_ID
1446 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1447 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1448 AND SR.IS_INHERITED = 'N'
1449 AND BS.LEFT_MARGIN > ".$this->arSection[
"LEFT_MARGIN"].
"
1450 AND BS.RIGHT_MARGIN < ".$this->arSection[
"RIGHT_MARGIN"].
"
1459 COUNT(DISTINCT ER.ELEMENT_ID) CNT
1462 INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
1463 INNER JOIN b_iblock_section_element BSE ON BSE.IBLOCK_ELEMENT_ID = ER.ELEMENT_ID AND ADDITIONAL_PROPERTY_ID IS NULL
1464 INNER JOIN b_iblock_section BS ON BS.ID = BSE.IBLOCK_SECTION_ID
1466 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1467 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1468 AND ER.IS_INHERITED = 'N'
1469 AND BS.LEFT_MARGIN >= ".$this->arSection[
"LEFT_MARGIN"].
"
1470 AND BS.RIGHT_MARGIN <= ".$this->arSection[
"RIGHT_MARGIN"].
"
1482 COUNT(DISTINCT SR.SECTION_ID) CNT
1485 INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
1487 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1488 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1489 AND SR.IS_INHERITED = 'N'
1498 COUNT(DISTINCT ER.ELEMENT_ID) CNT
1501 INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
1503 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1504 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1505 AND ER.IS_INHERITED = 'N'
1519 $strRightSubQuery =
"
1520 SELECT ID FROM b_iblock_right
1521 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1522 ".(
$TYPE == CIBlockRights::GROUP_CODE?
1523 "AND GROUP_CODE = '".$DB->ForSQL(
$ID, 32).
"'":
1524 "AND ID = ".intval(
$ID)
1528 if($this->ELEMENT_ID > 0)
1531 DELETE FROM b_iblock_element_right
1532 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1533 AND ELEMENT_ID = ".$this->ELEMENT_ID.
"
1534 AND RIGHT_ID IN ($strRightSubQuery)
1540 DELETE FROM b_iblock_section_right
1541 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1542 AND SECTION_ID = ".$this->SECTION_ID.
"
1543 AND RIGHT_ID IN ($strRightSubQuery)
1555 $strRightSubQuery =
"
1556 SELECT ID FROM b_iblock_right
1557 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1558 ".(
$TYPE == CIBlockRights::GROUP_CODE?
1559 "AND GROUP_CODE = '".$DB->ForSQL(
$ID, 32).
"'":
1560 "AND ID = ".intval(
$ID)
1564 if($this->ELEMENT_ID > 0)
1569 if($DB->type ===
"MYSQL")
1572 DELETE b_iblock_section_right.*
1573 FROM b_iblock_section_right
1574 INNER JOIN b_iblock_section BS ON BS.ID = b_iblock_section_right.SECTION_ID
1575 WHERE b_iblock_section_right.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1576 AND BS.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1577 AND LEFT_MARGIN > ".$this->arSection[
"LEFT_MARGIN"].
"
1578 AND RIGHT_MARGIN < ".$this->arSection[
"RIGHT_MARGIN"].
"
1579 AND RIGHT_ID IN ($strRightSubQuery)
1582 DELETE b_iblock_element_right.*
1583 FROM b_iblock_element_right
1584 INNER JOIN b_iblock_section_element BSE ON BSE.IBLOCK_ELEMENT_ID = b_iblock_element_right.ELEMENT_ID
1585 INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID AND BSE.ADDITIONAL_PROPERTY_ID IS NULL
1586 WHERE b_iblock_element_right.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1587 AND BS.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1588 AND BS.LEFT_MARGIN <= ".$this->arSection[
"RIGHT_MARGIN"].
"
1589 AND BS.RIGHT_MARGIN >= ".$this->arSection[
"LEFT_MARGIN"].
"
1590 AND (SECTION_ID IN (
1591 SELECT ID FROM b_iblock_section
1592 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1593 AND LEFT_MARGIN >= ".$this->arSection[
"LEFT_MARGIN"].
"
1594 AND RIGHT_MARGIN <= ".$this->arSection[
"RIGHT_MARGIN"].
"
1595 ) OR SECTION_ID = 0)
1596 AND RIGHT_ID IN ($strRightSubQuery)
1602 DELETE FROM b_iblock_section_right
1603 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1605 SELECT ID FROM b_iblock_section
1606 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1607 AND LEFT_MARGIN > ".$this->arSection[
"LEFT_MARGIN"].
"
1608 AND RIGHT_MARGIN < ".$this->arSection[
"RIGHT_MARGIN"].
"
1610 AND RIGHT_ID IN ($strRightSubQuery)
1613 DELETE FROM b_iblock_element_right
1614 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1616 SELECT BSE.IBLOCK_ELEMENT_ID
1617 FROM b_iblock_section_element BSE
1618 INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID AND BSE.ADDITIONAL_PROPERTY_ID IS NULL
1619 WHERE BS.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1620 AND BS.LEFT_MARGIN <= ".$this->arSection[
"RIGHT_MARGIN"].
"
1621 AND BS.RIGHT_MARGIN >= ".$this->arSection[
"LEFT_MARGIN"].
"
1623 AND (SECTION_ID IN (
1624 SELECT ID FROM b_iblock_section
1625 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1626 AND LEFT_MARGIN >= ".$this->arSection[
"LEFT_MARGIN"].
"
1627 AND RIGHT_MARGIN <= ".$this->arSection[
"RIGHT_MARGIN"].
"
1628 ) OR SECTION_ID = 0)
1629 AND RIGHT_ID IN ($strRightSubQuery)
1636 DELETE FROM b_iblock_section_right
1637 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1638 AND RIGHT_ID IN ($strRightSubQuery)
1642 DELETE FROM b_iblock_element_right
1643 WHERE IBLOCK_ID = ".$this->IBLOCK_ID.
"
1644 AND RIGHT_ID IN ($strRightSubQuery)
1653 if($this->ELEMENT_ID > 0)
1656 INSERT INTO b_iblock_element_right (IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED)
1657 SELECT ".$this->IBLOCK_ID.
", ".$this->SECTION_ID.
", BE.ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1660 LEFT JOIN b_iblock_element_right ER ON ER.ELEMENT_ID = BE.ID AND ER.SECTION_ID = ".$this->SECTION_ID.
" AND ER.RIGHT_ID = ".intval($RIGHT_ID).
"
1662 BE.ID = ".$this->ELEMENT_ID.
"
1663 AND ER.SECTION_ID IS NULL
1669 INSERT INTO b_iblock_section_right (IBLOCK_ID, SECTION_ID, RIGHT_ID, IS_INHERITED)
1670 SELECT ".$this->IBLOCK_ID.
", BS.ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1673 LEFT JOIN b_iblock_section_right SR ON SR.SECTION_ID = BS.ID AND SR.RIGHT_ID = ".intval($RIGHT_ID).
"
1675 BS.ID = ".$this->SECTION_ID.
"
1676 AND SR.SECTION_ID IS NULL
1688 if($this->ELEMENT_ID > 0)
1694 INSERT INTO b_iblock_section_right (IBLOCK_ID, SECTION_ID, RIGHT_ID, IS_INHERITED)
1695 SELECT ".$this->IBLOCK_ID.
", BS.ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1699 BS.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1700 AND BS.LEFT_MARGIN > ".$this->arSection[
"LEFT_MARGIN"].
"
1701 AND BS.RIGHT_MARGIN < ".$this->arSection[
"RIGHT_MARGIN"].
"
1703 SELECT SR.SECTION_ID
1706 INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
1708 BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1709 AND BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1714 INSERT INTO b_iblock_element_right (IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED)
1715 SELECT ".$this->IBLOCK_ID.
", BSE.IBLOCK_SECTION_ID, BSE.IBLOCK_ELEMENT_ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1717 b_iblock_section_element BSE
1719 BSE.ADDITIONAL_PROPERTY_ID IS NULL
1720 AND BSE.IBLOCK_SECTION_ID IN (
1722 FROM b_iblock_section_right
1723 WHERE RIGHT_ID = ".intval($RIGHT_ID).
"
1725 AND BSE.IBLOCK_ELEMENT_ID NOT IN (
1726 SELECT ER.ELEMENT_ID
1729 INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
1731 BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1732 AND BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1733 AND (ER.SECTION_ID = BSE.IBLOCK_SECTION_ID OR ER.SECTION_ID = 0)
1740 INSERT INTO b_iblock_section_right (IBLOCK_ID, SECTION_ID, RIGHT_ID, IS_INHERITED)
1741 SELECT ".$this->IBLOCK_ID.
", BS.ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1745 BS.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1747 SELECT SR.SECTION_ID
1750 INNER JOIN b_iblock_section_right SR ON SR.RIGHT_ID = BR.ID
1752 BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1753 AND BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1758 INSERT INTO b_iblock_element_right (IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED)
1759 SELECT ".$this->IBLOCK_ID.
", 0, BE.ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1763 BE.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1764 AND BE.IN_SECTIONS = 'N'
1766 SELECT ER.ELEMENT_ID
1769 INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
1771 BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1772 AND BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1773 AND ER.SECTION_ID = 0
1778 INSERT INTO b_iblock_element_right (IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED)
1779 SELECT ".$this->IBLOCK_ID.
", BSE.IBLOCK_SECTION_ID, BSE.IBLOCK_ELEMENT_ID, ".intval($RIGHT_ID).
", '".($bInherited?
"Y":
"N").
"'
1781 b_iblock_section_element BSE
1783 BSE.ADDITIONAL_PROPERTY_ID IS NULL
1784 AND BSE.IBLOCK_SECTION_ID IN (
1786 FROM b_iblock_section_right
1787 WHERE RIGHT_ID = ".intval($RIGHT_ID).
"
1789 AND BSE.IBLOCK_ELEMENT_ID NOT IN (
1790 SELECT ER.ELEMENT_ID
1793 INNER JOIN b_iblock_element_right ER ON ER.RIGHT_ID = BR.ID
1795 BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE, 32).
"'
1796 AND BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1797 AND ER.SECTION_ID in (BSE.IBLOCK_SECTION_ID, 0)
1808 if($this->ELEMENT_ID > 0)
1811 SELECT SR.SECTION_ID, SR.RIGHT_ID
1813 b_iblock_section_element BSE
1814 INNER JOIN b_iblock_section_right SR ON SR.SECTION_ID = BSE.IBLOCK_SECTION_ID
1815 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
1817 BSE.IBLOCK_ELEMENT_ID = ".$this->ELEMENT_ID.
"
1818 AND BSE.ADDITIONAL_PROPERTY_ID IS NULL
1819 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE).
"'
1821 while(
$ar =
$rs->Fetch())
1827 SELECT BS.IBLOCK_SECTION_ID, SR.RIGHT_ID
1830 INNER JOIN b_iblock_section_right SR ON SR.SECTION_ID = BS.IBLOCK_SECTION_ID
1831 INNER JOIN b_iblock_right BR ON BR.ID = SR.RIGHT_ID
1833 BS.ID = ".$this->SECTION_ID.
"
1834 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE).
"'
1836 while(
$ar =
$rs->Fetch())
1852 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1853 AND BR.GROUP_CODE = '".
$DB->ForSQL($GROUP_CODE).
"'
1854 AND ENTITY_TYPE = 'iblock'
1856 while(
$ar =
$rs->Fetch())
1867 if($this->ELEMENT_ID > 0)
1869 $DB->Query(
"DELETE FROM b_iblock_element_right WHERE ELEMENT_ID = ".$this->ELEMENT_ID);
1873 $DB->Query(
"DELETE FROM b_iblock_section_right WHERE SECTION_ID = ".$this->SECTION_ID);
1883 $helper = $conn->getSqlHelper();
1885 $iblockRightsTable = $helper->quote(
'b_iblock_right');
1886 $sectionRightsTable = $helper->quote(
'b_iblock_section_right');
1887 $elementRightsTable = $helper->quote(
'b_iblock_element_right');
1889 $iblockField = $helper->quote(
'IBLOCK_ID');
1890 $entityField = $helper->quote(
'ENTITY_TYPE');
1891 $idField = $helper->quote(
'ID');
1892 $rightIdField = $helper->quote(
'RIGHT_ID');
1896 $conn->queryExecute(
1897 'delete from ' . $elementRightsTable .
' where ' . $iblockField .
' = ' . $this->IBLOCK_ID
1899 $conn->queryExecute(
1900 'delete from ' . $sectionRightsTable .
' where ' . $iblockField .
' = ' . $this->IBLOCK_ID
1902 $conn->queryExecute(
1903 'delete from ' . $iblockRightsTable .
' where ' . $iblockField .
' = ' . $this->IBLOCK_ID
1908 $entityExists = $conn->queryScalar(
1909 'select 1 from ' . $iblockRightsTable
1910 .
' where ' . $iblockField .
' = ' . $this->IBLOCK_ID
1911 .
' and ' . $entityField .
' != \'iblock\''
1913 if ($entityExists !==
null)
1916 'select ' . $rightIdField .
' from ' . $sectionRightsTable
1920 'select ' . $rightIdField .
' from ' . $elementRightsTable
1923 $conn->queryExecute(
1924 'delete from ' . $iblockRightsTable
1925 .
' where ' . $iblockField .
' = ' . $this->IBLOCK_ID
1926 .
' and ' . $entityField .
' != \'iblock\''
1927 .
' and ' . $idField .
' not in ('
1930 .
' and ' . $idField .
' not in ('
1942 $DB->Query(
"DELETE FROM b_iblock_element_right WHERE IBLOCK_ID = ".$this->IBLOCK_ID);
1943 $DB->Query(
"DELETE FROM b_iblock_section_right WHERE IBLOCK_ID = ".$this->IBLOCK_ID);
1946 INSERT INTO b_iblock_element_right (IBLOCK_ID, SECTION_ID, ELEMENT_ID, RIGHT_ID, IS_INHERITED)
1947 SELECT BE.IBLOCK_ID, 0, BE.ID, BR.ID, 'N'
1950 INNER JOIN b_iblock_element BE ON BE.ID = BR.ENTITY_ID and BE.IBLOCK_ID = BR.IBLOCK_ID
1952 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1953 AND BR.ENTITY_TYPE = 'element'
1955 SELECT ER0.ELEMENT_ID
1958 INNER JOIN b_iblock_element_right ER0 ON ER0.RIGHT_ID = BR0.ID
1960 BR0.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1961 AND BR0.ENTITY_TYPE = 'element'
1966 SELECT BR.ID RIGHT_ID, BS.ID SECTION_ID, BR.GROUP_CODE
1969 INNER JOIN b_iblock_section BS ON BS.ID = BR.ENTITY_ID and BS.IBLOCK_ID = BR.IBLOCK_ID
1971 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1972 AND BR.ENTITY_TYPE = 'section'
1976 while(
$ar =
$rs->Fetch())
1985 SELECT BR.ID RIGHT_ID, BR.GROUP_CODE
1989 BR.IBLOCK_ID = ".$this->IBLOCK_ID.
"
1990 AND BR.ENTITY_TYPE = 'iblock'
1992 while(
$ar =
$rs->Fetch())
2001 $TASK_ID = (int)$TASK_ID;
2003 if(!in_array(
"element_read", $arOld) && in_array(
"element_read", $arNew))
2004 $DB->Query(
"UPDATE b_iblock_right SET OP_EREAD = 'Y' WHERE TASK_ID = ".$TASK_ID);
2005 elseif(in_array(
"element_read", $arOld) && !in_array(
"element_read", $arNew))
2006 $DB->Query(
"UPDATE b_iblock_right SET OP_EREAD = 'N' WHERE TASK_ID = ".$TASK_ID);
2008 if(!in_array(
"section_read", $arOld) && in_array(
"section_read", $arNew))
2009 $DB->Query(
"UPDATE b_iblock_right SET OP_SREAD = 'Y' WHERE TASK_ID = ".$TASK_ID);
2010 elseif(in_array(
"section_read", $arOld) && !in_array(
"section_read", $arNew))
2011 $DB->Query(
"UPDATE b_iblock_right SET OP_SREAD = 'N' WHERE TASK_ID = ".$TASK_ID);
2016 $GROUP_ID = (int)$GROUP_ID;
2017 static::deleteRightsByOwner(
'G'.$GROUP_ID);
2022 $USER_ID = (int)$USER_ID;
2023 static::deleteRightsByOwner(
'U'.$USER_ID);
2028 $ownerId = trim($ownerId);
2029 if ($ownerId ===
'')
2034 if ($conn instanceof
Main\
DB\MysqlCommonConnection)
2036 $conn->queryExecute(
"
2037 delete r2 from b_iblock_right r
2038 inner join b_iblock_element_right r2 on r2.RIGHT_ID = r.ID and r2.IBLOCK_ID = r.IBLOCK_ID
2039 where r.GROUP_CODE = '" . $ownerId .
"'
2041 $conn->queryExecute(
"
2042 delete r2 from b_iblock_right r
2043 inner join b_iblock_section_right r2 on r2.RIGHT_ID = r.ID and r2.IBLOCK_ID = r.IBLOCK_ID
2044 where r.GROUP_CODE = '" . $ownerId .
"'
2049 $conn->queryExecute(
"
2050 delete from b_iblock_element_right r2
2051 using b_iblock_right r
2052 where r2.RIGHT_ID = r.ID and r2.IBLOCK_ID = r.IBLOCK_ID
2053 and r.GROUP_CODE = '" . $ownerId .
"'
2055 $conn->queryExecute(
"
2056 delete from b_iblock_section_right r2
2057 using b_iblock_right r
2058 where r2.RIGHT_ID = r.ID and r2.IBLOCK_ID = r.IBLOCK_ID
2059 and r.GROUP_CODE = '" . $ownerId .
"'
2063 $conn->queryExecute(
"
2064 delete from b_iblock_right where GROUP_CODE = '" . $ownerId .
"'
static getConnection($name="")
static getList(array $parameters=array())
static GetOperations($ID, $return_names=false)
static GetList($arOrder=['MODULE_ID'=> 'asc', 'LETTER'=> 'asc'], $arFilter=[])
static GetUserOperations($arID, $USER_ID=0)
static UserHasRightTo($IBLOCK_ID, $ID, $permission, $flags=0)
__construct($IBLOCK_ID, $ELEMENT_ID)
GetRights($arOptions=array())
const OPERATION_RIGHTS_EDIT
ChangeParents($arOldParents, $arNewParents)
static GetUserOperations($arID, $USER_ID=0)
GetGroups($arOperations=false, $opMode=false)
_update($RIGHT_ID, $GROUP_CODE, $bInherit, $TASK_ID)
static _check_if_user_has_right($obRights, $ID, $permission, $flags=0)
_add($GROUP_CODE, $bInherit, $TASK_ID, $XML_ID)
static LetterToOperations($letter='')
static UserHasRightTo($IBLOCK_ID, $ID, $permission, $flags=0)
static _mk_result($ID, $arOperations, $bAllow, $flags)
static TaskToLetter($task=0)
static LetterToTask($letter='')
static setGroupRight($groupId, $iblockType, $letter, $iblockId=0)
static $arLetterToOperations
GetRights($arOptions=array())
static GetRightsList($bTitle=true)
FindParentWithInherit($GROUP_CODE)
static OnUserDelete($USER_ID)
AddChildrenSet($RIGHT_ID, $GROUP_CODE, $bInherited)
CountOverWrited($GROUP_CODE)
static deleteRightsByOwner(string $ownerId)
__construct($IBLOCK_ID, $SECTION_ID, $ELEMENT_ID)
DeleteChildrenSet($ID, $TYPE)
AddSelfSet($RIGHT_ID, $bInherited=false)
DeleteSelfSet($ID, $TYPE)
static OnTaskOperationsChanged($TASK_ID, $arOld, $arNew)
_set_section($SECTION_ID)
static OnGroupDelete($GROUP_ID)
static GetUserOperations($arID, $USER_ID=0)
static UserHasRightTo($IBLOCK_ID, $ID, $permission, $flags=0)
__construct($IBLOCK_ID, $SECTION_ID)
GetRights($arOptions=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(! $catalogEdit->isSuccess()) $iblock
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"