- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
- Класс: CIBlockRights
- Вызов: CIBlockRights::setGroupRight
static function setGroupRight($groupId, $iblockType, $letter, $iblockId = 0)
{
$groupId = (int)$groupId;
if ($groupId <= 0)
return;
$iblockId = (int)$iblockId;
if ($iblockId < 0)
return;
$groupCode = "G".$groupId;
$availableLetters = ["E", "R", "S", "T", "U", "W", "X"];
if (!in_array($letter, $availableLetters))
return;
unset($availableLetters);
$task = MainTaskTable::getList([
"select" => ["ID"],
"filter" => ["=LETTER" => $letter, "=MODULE_ID" => "iblock", "=SYS" => "Y"]
])->fetch();
$rightId = (!empty($task) ? $task["ID"] : null);
unset($task);
$filter = ["=IBLOCK_TYPE_ID" => $iblockType, "=ACTIVE"=>"Y"];
if ($iblockId > 0)
$filter["=ID"] = $iblockId;
$queryObject = IblockIblockTable::getList([
'select' => ['ID'],
'filter' => $filter
]);
while ($iblock = $queryObject->fetch())
{
$iblockId = $iblock["ID"];
$rightsMode = CIBlock::getArrayByID($iblockId, "RIGHTS_MODE");
if ($rightsMode == BitrixIblockIblockTable::RIGHTS_SIMPLE)
{
$rights = CIBlock::getGroupPermissions($iblockId);
$rights[$groupId] = $letter;
CIBlock::SetPermission($iblockId, $rights);
unset($rights);
}
elseif ($rightsMode == BitrixIblockIblockTable::RIGHTS_EXTENDED && $rightId !== null)
{
$rightsObject = new CIBlockRights($iblockId);
$rights = $rightsObject->GetRights();
$rights["n0"] = [
"GROUP_CODE" => $groupCode,
"DO_INHERIT" => "Y",
"IS_INHERITED" => "N",
"OVERWRITED" => 0,
"TASK_ID" => $rightId,
"XML_ID" => null,
"ENTITY_TYPE" => "iblock",
"ENTITY_ID" => $iblockId
];
$rightsObject->SetRights($rights);
unset($rights, $rightsObject);
}
}
unset($rightsMode, $iblockId, $iblock, $queryObject);
}