- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
- Класс: \CAllCrmInvoice
- Вызов: CAllCrmInvoice::setCatalogAdminRights
static function setCatalogAdminRights()
{
if (!Loader::includeModule('iblock'))
return false;
if (!Loader::includeModule('catalog'))
return true;
$groupId = 1; // admin group
$catalogs = [];
$iterator = Catalog\CatalogIblockTable::getList([
'select' => ['IBLOCK_ID', 'PRODUCT_IBLOCK_ID']
]);
while ($row = $iterator->fetch())
{
$row['IBLOCK_ID'] = (int)$row['IBLOCK_ID'];
$catalogs[$row['IBLOCK_ID']] = $row['IBLOCK_ID'];
$row['PRODUCT_IBLOCK_ID'] = (int)$row['PRODUCT_IBLOCK_ID'];
if ($row['PRODUCT_IBLOCK_ID'] > 0)
$catalogs[$row['PRODUCT_IBLOCK_ID']] = $row['PRODUCT_IBLOCK_ID'];
}
unset($row, $iterator);
if (!empty($catalogs))
{
$iblockObject = new \CIBlock();
$rightsId = null;
$row = Main\TaskTable::getList(array(
'select' => array('ID'),
'filter' => array('=LETTER' => 'X', '=MODULE_ID' => 'iblock', '=SYS' => 'Y')
))->fetch();
if (!empty($row))
$rightsId = $row['ID'];
unset($row);
$groupCode = 'G'.$groupId;
foreach ($catalogs as $id)
{
$rightsMode = \CIBlock::GetArrayByID($id, 'RIGHTS_MODE');
if ($rightsMode == Iblock\IblockTable::RIGHTS_SIMPLE)
{
$rights = \CIBlock::GetGroupPermissions($id);
$rights[$groupId] = 'X';
\CIBlock::SetPermission($id, $rights);
}
elseif ($rightsMode == Iblock\IblockTable::RIGHTS_EXTENDED && $rightsId !== null)
{
$rightsObject = new \CIBlockRights($id);
$rights = $rightsObject->GetRights();
$rights['n0'] = array(
'GROUP_CODE' => $groupCode,
'DO_INHERIT' => 'Y',
'IS_INHERITED' => 'N',
'OVERWRITED' => 0,
'TASK_ID' => $rightsId,
'XML_ID' => null,
'ENTITY_TYPE' => 'iblock',
'ENTITY_ID' => $id
);
$rightsObject->SetRights($rights);
}
}
unset($rights, $id, $groupCode);
unset($iblockObject);
}
unset($catalogs);
unset($groupId);
return true;
}