- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/iblocksocnet.php
- Класс: CIBlockWebdavSocnet
- Вызов: CIBlockWebdavSocnet::CopyCommentRights
static function CopyCommentRights($ID, $arFields)
{
if(empty($arFields['LOG_ID']))
{
return false;
}
if(empty(self::$storedFileIdsByComment[$arFields['SOURCE_ID']]))
{
return false;
}
$arRights0 = array();
$rConst = 0;
$rs = CTask::GetList(
array("LETTER"=>"asc"),
array(
"MODULE_ID" => "iblock",
"LETTER" => "R",
)
);
if($ar = $rs->Fetch())
{
$rConst = $ar["ID"];
}
else
{
return false;
}
$dbRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["LOG_ID"]));
$i = 1;
while($arRight = $dbRight->Fetch())
{
/*$arRights0["n" .$i] = Array(
"GROUP_CODE" => $arRight["GROUP_CODE"],
"TASK_ID" => $rConst,
);*/
$gc = $arRight["GROUP_CODE"];
if(array_key_exists($gc, $arRights0) && $arRights0[$gc]["TASK_ID"] >= $rConst)
{
continue;
}
$arRights0[$gc] = Array(
"KEY" => "n" .$i,
"GROUP_CODE" => $gc,
"TASK_ID" => $rConst,
);
$i++;
}
$arFilesID = self::$storedFileIdsByComment[$arFields['SOURCE_ID']];
$arFiles = array();
foreach($arFilesID as $id)
{
$id = intval($id);
if (intval($id) > 0)
$arFiles[] = $id;
}
if(!$arFiles)
{
return;
}
$ibe = new CIBlockElement();
$dbWDFile = $ibe->GetList(array(), array('ID' => $arFiles, 'SHOW_NEW' => 'Y'), false, false, array('ID', 'NAME', 'SECTION_ID', 'IBLOCK_ID', 'WF_NEW'));
while($dbWDFile && $arWDFile = $dbWDFile->Fetch())
{
$arRights1 = $arRights0;
$ob = new CIBlockElementRights($arWDFile['IBLOCK_ID'], $arWDFile['ID']);
$ar = $ob->GetRights();
foreach($ar as $k=>$v)
{
$gc = $v["GROUP_CODE"];
if(array_key_exists($gc, $arRights1) && $arRights1[$gc]["TASK_ID"] >= $v["TASK_ID"])
{
continue;
}
$arRights1[$gc] = Array(
"KEY" => $k,
"GROUP_CODE" => $gc,
"TASK_ID" => $v["TASK_ID"],
);
}
$arRights2 = array();
foreach($arRights1 as $v)
{
$arRights2[$v["KEY"]] = Array(
"GROUP_CODE" => $v["GROUP_CODE"],
"TASK_ID" => $v["TASK_ID"]
);
}
$ob->SetRights($arRights2);
}
}