• Модуль: 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);
	}
}