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