Git Hub
коротко

Как прописать права для инфоблока

2 ноября 2015, 15:42

Задача:

Изменить права информационных блоков

Дано:

1 пользовательская группа
3 информационных блока

Решение:

//Подключаем API битрикса
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use \Bitrix\Main\Loader;

if(Loader::includeModule('iblock')){

    $groupCode = 'weeks_editors'; // символьный код группы редакторов
    $groupID = CGroup::GetIDByCode($groupCode); // получаем ID группы

    // список символьных кодов инфоблоков для которых нам требуется изменить права
    $arIBlockCodes = array(
        'candles',
        'holidays',
        'weekly_parts'
    );

    $actionPermission = "W"; // права для группы на изменение / запись

    foreach($arIBlockCodes as $codeIBlock){
        $arIBlockID[] = CIBlockWrapper::GetIdByCode($codeIBlock,SITE_ID); // конвертим символьный код инфоблока в его ID
    }

    foreach($arIBlockID as $iblockID) {
        $arPermissions = CIBlock::GetGroupPermissions($iblockID); // поллучаем уже существующие 
                                                                  // права чтбы не затереть их при записи новых прав
        $arPermissions[$groupID]= $actionPermission; // права для группы на изменение / запись
        CIBlock::SetPermission($iblockID, $arPermissions); //  выставляем права на инфоблок
    }

    $info[] = 'Успешно: [3] Права '.$actionPermission.' прописаны для инфоблоков('.implode(', ',$arIBlockID).')';
}else{
    $errors[] = 'Ошибка: [1] Модуль информационных блоков не подключен';
}
Поделиться
Популярное