- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
- Класс: CSocNetLogTools
- Вызов: CSocNetLogTools::SetUFRights
static function SetUFRights($files, $rights)
{
static $arTasks = null;
global $USER;
if (!CModule::IncludeModule('iblock') || !CModule::IncludeModule('webdav'))
return false;
if (!is_array($rights) || count($rights) <= 0)
return false;
if ($files === null || $files===false)
return false;
if (!is_array($files))
$files = array($files);
$arFiles = array();
foreach($files as $id)
{
$id = intval($id);
if (intval($id) > 0)
$arFiles[] = $id;
}
if (count($arFiles) <= 0)
return false;
if ($arTasks == null)
$arTasks = CWebDavIblock::GetTasks();
$arCodes = array();
foreach($rights as $value)
{
if (mb_substr($value, 0, 2) === 'SG')
$arCodes[] = $value.'_K';
$arCodes[] = $value;
}
$arCodes = array_unique($arCodes);
$i=0;
$arViewRights = array();
$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 = CIBlockElement::GetList(array(), array("ID" => $arFiles, "SHOW_NEW" => "Y"), false, false, array("ID", "NAME", "SECTION_ID", "IBLOCK_ID", "WF_NEW"));
$iblockIds = array();
if ($dbWDFile)
{
while ($arWDFile = $dbWDFile->Fetch())
{
$id = $arWDFile["ID"];
if ($arWDFile["WF_NEW"] === "Y")
{
$ibe->Update($id, array("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);
}
return false;
}