- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
- Класс: CCalendar
- Вызов: CCalendar::UpdateUFRights
static function UpdateUFRights($files, $rights, $ufEntity = [])
{
global $USER;
$arTasks = self::getTasksForUpdateUFRights();
if (!is_array($rights) || sizeof($rights) <= 0)
return false;
if ($files===null || $files===false)
return false;
if (!is_array($files))
$files = array($files);
if (sizeof($files) <= 0)
return false;
if (!Loader::includeModule('iblock') || !Loader::includeModule('webdav'))
return false;
$arFiles = [];
foreach($files as $id)
{
$id = (int)$id;
if ($id)
{
$arFiles[] = $id;
}
}
if (empty($arFiles))
{
return false;
}
$arCodes = [];
foreach($rights as $value)
{
if (mb_strpos($value, 'SG') === 0)
{
$arCodes[] = $value . '_K';
}
$arCodes[] = $value;
}
$arCodes = array_unique($arCodes);
$i = 0;
$arViewRights = $arEditRights = [];
$curUserID = 'U'.$USER->GetID();
foreach($arCodes as $right)
{
if ($curUserID == $right) // do not override owner's rights
continue;
$key = 'n' . $i++;
$arViewRights[$key] = array(
'GROUP_CODE' => $right,
'TASK_ID' => $arTasks['R'],
);
}
$ibe = new CIBlockElement();
$dbWDFile = $ibe->GetList([], array('ID' => $arFiles, 'SHOW_NEW' => 'Y'), false, false, array('ID', 'NAME', 'SECTION_ID', 'IBLOCK_ID', 'WF_NEW'));
$iblockIds = [];
if ($dbWDFile)
{
while ($arWDFile = $dbWDFile->Fetch())
{
$id = $arWDFile['ID'];
if ($arWDFile['WF_NEW'] === 'Y')
{
$ibe->Update($id, ['BP_PUBLISHED' => 'Y']);
}
if (CIBlock::GetArrayByID($arWDFile['IBLOCK_ID'], "RIGHTS_MODE") === "E")
{
$ibRights = CWebDavIblock::_get_ib_rights_object('ELEMENT', $id, $arWDFile['IBLOCK_ID']);
$ibRights->SetRights(CWebDavTools::appendRights($ibRights, $arViewRights, $arTasks));
if(empty($iblockIds[$arWDFile['IBLOCK_ID']]))
$iblockIds[$arWDFile['IBLOCK_ID']] = $arWDFile['IBLOCK_ID'];
}
}
global $CACHE_MANAGER;
foreach ($iblockIds as $iblockId)
{
$CACHE_MANAGER->ClearByTag('iblock_id_' . $iblockId);
}
unset($iblockId);
}
}