• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_webdav_helper.php
  • Класс: CVoxImplantWebDavHelper
  • Вызов: CVoxImplantWebDavHelper::EnsureSharedFileSectionCreated
static function EnsureSharedFileSectionCreated($blockID, $siteID = SITE_ID)
{
	$siteID = strval($siteID);
	$blockID = intval($blockID);
	if($blockID <= 0 || $siteID === '')
	{
		return 0;
	}

	$blockSection = new CIBlockSection();
	$dbSections = $blockSection->GetList(array(), array('XML_ID' => 'VI_CALLS', 'IBLOCK_ID'=> $blockID, 'CHECK_PERMISSIONS' => 'N'), false, array('ID'));
	$arSection = $dbSections->Fetch();
	if(is_array($arSection))
	{
		$blockSectionID = intval($arSection['ID']);
	}

	if($blockSectionID <= 0)
	{
		$dbSite = CSite::GetByID($siteID);
		$arSite = $dbSite->Fetch();
		IncludeModuleLangFile(__FILE__, $arSite && isset($arSite['LANGUAGE_ID']) ? $arSite['LANGUAGE_ID'] : false);

		$blockSectionID = $blockSection->Add(
			array(
				'IBLOCK_ID' => $blockID,
				'ACTIVE' => 'Y',
				'NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'),
				'IBLOCK_SECTION_ID' => 0,
				'CHECK_PERMISSIONS' => 'N',
				'XML_ID' => 'VI_CALLS'
			)
		);

		if (CIBlock::GetArrayByID($blockID, "RIGHTS_MODE") === "E")
		{
			$rightObject = CWebDavIblock::_get_ib_rights_object('IBLOCK', 0, $blockID);
			$existsRights = $rightObject->GetRights();

			$rs = CTask::GetList(
				array("LETTER"=>"asc"),
				array(
					"MODULE_ID" => "iblock",
					"BINDING" => "iblock",
					"SYS" => "Y",
				)
			);
			$arTasks = array();
			while($ar = $rs->Fetch())
				$arTasks[$ar["NAME"]] = $ar["ID"];

			$newRights = array();
			$i = 0;
			foreach ($existsRights as $existsRight)
			{
				$newRights['n'.$i] = array(
					'GROUP_CODE' => $existsRight['GROUP_CODE'],
					'TASK_ID' => $arTasks['iblock_deny'],
				);
				$i++;
			}
			$rightObject = CWebDavIblock::_get_ib_rights_object('SECTION', $blockSectionID, $blockID);
			$rightObject->SetRights($newRights);

			$rights['n'.$i] = array(
				'GROUP_CODE' => '',
				'TASK_ID' => $arTasks['iblock_deny'],
			);
			CWebDavIblock::appendRightsOnSections(Array(Array(
				'ID' => $blockSectionID,
				'IBLOCK_ID' => $blockID,
			)), Array(
				'W' => Array('G1'),
			));
		}
	}

	return $blockSectionID;
}