• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/iblocksocnet.php
  • Класс: CIBlockWebdavSocnet
  • Вызов: CIBlockWebdavSocnet::CreateSharedFolder
static function CreateSharedFolder($iblockID, $sectionID, $userID, $setRights = false)
{
	$_sharedGroup = 'AU';
	$_sharedTask = 'R';
	$_shareName = GetMessage("WD_SHARED_FILES");
	$_shareXMLID = 'SHARED_FOLDER';

	$arTasks = CWebDavIblock::GetTasks();
	$arFilter = array(
		"IBLOCK_ID" => $iblockID,
		"SECTION_ID" => $sectionID,
		"CHECK_PERMISSIONS" => "N"
	);
	$_shareRights = array("n0" => array("GROUP_CODE" => $_sharedGroup, "TASK_ID" => $arTasks[$_sharedTask]));

	$arShare = null;
	$se = new CIBlockSection();
	$arFilter['NAME'] = $_shareName;
	$dbShare = CIBlockSection::GetList(array(), $arFilter, false, array('ID', 'CREATED_BY', 'MODIFIED_BY', 'XML_ID'));
	if ($dbShare && ($arShare1 = $dbShare->Fetch()))
	{
		$arShare =& $arShare1;
	}
	else
	{
		unset($arFilter['NAME']); // search for renamed shared folder
		$arFilter['XML_ID'] = $_shareXMLID;
		$dbShare = CIBlockSection::GetList(array(), $arFilter, false, array('ID', 'CREATED_BY', 'XML_ID'));
		if ($dbShare && ($arShare2 = $dbShare->Fetch()))
		{
			$arShare =& $arShare2;
		}
	}
	if ($arShare)
	{
		if ($setRights)
		{
			$sRight      = new CIBlockSectionRights($iblockID, $arShare['ID']);
			$arRights    = $sRight->GetRights($arShare['ID']);
			$validRights = false;
			foreach ($arRights as $right)
			{
				if (($right['GROUP_CODE'] == $_sharedGroup) && ($right['TASK_ID'] == $arTasks[$_sharedTask]))
				{
					$validRights = true;
					break;
				}
			}
			if (!$validRights)
			{
				$sRight->SetRights($_shareRights);
			}
		}
		$recoverData = array();
		if ($arShare['XML_ID'] != $_shareXMLID)
		{
			$recoverData['XML_ID'] = $_shareXMLID;
		}
		if ($arShare['CREATED_BY'] != $userID)
		{
			$recoverData['CREATED_BY'] = $userID;
		}
		if ($arShare['MODIFIED_BY'] != $userID)
		{
			$recoverData['MODIFIED_BY'] = $userID;
		}

		if(!empty($recoverData))
		{
			$se->Update($arShare['ID'], $recoverData);
		}
	}
	else
	{
		$arFilter['NAME'] = $_shareName;
		$arFilter["RIGHTS"] = $_shareRights;
		$arFilter['IBLOCK_SECTION_ID'] = $arFilter['SECTION_ID'];
		$arFilter["CREATED_BY"] = $userID;
		$arFilter["MODIFIED_BY"] = $userID;
		$arFilter['XML_ID'] = $_shareXMLID;
		$newSecID = $se->Add($arFilter);

		$obSectionRights = new CIBlockSectionRights($iblockID, $newSecID);
		$obSectionRights->SetRights($arFilter["RIGHTS"]);
	}
}