• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_webdav_helper.php
  • Класс: CVoxImplantDiskHelper
  • Вызов: CVoxImplantDiskHelper::GetRootFolder
static function GetRootFolder($siteId = SITE_ID)
{
	if (!self::Enabled())
		return false;

	$storageModel = self::GetStorageModel($siteId);
	if (!$storageModel)
	{
		return false;
	}

	$folderModel = BitrixDiskFolder::load(array(
		'STORAGE_ID' => $storageModel->getId(),
		'PARENT_ID' => $storageModel->getRootObjectId(),
		'TYPE' => BitrixDiskInternalsObjectTable::TYPE_FOLDER,
		'=CODE' => 'VI_CALLS',
        ));
	if (!$folderModel)
	{
		// Access codes
		$rightsManager = BitrixDiskDriver::getInstance()->getRightsManager();
		$fullAccessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL);
		$rights = $rightsManager->getAllListNormalizeRights($storageModel->getRootObject());

		$accessCodes = array();
		foreach	($rights as $right)
		{
			$accessCodes[] = Array(
				'ACCESS_CODE' => $right['ACCESS_CODE'],
				'TASK_ID' => $right['TASK_ID'],
				'NEGATIVE' => 1
			);
		}
		$accessCodes[] = Array(
			'ACCESS_CODE' => 'G1',
			'TASK_ID' => $fullAccessTaskId,
		);

		// Folder name
		$dbSite = CSite::GetByID($siteId);
		$arSite = $dbSite->Fetch();
		IncludeModuleLangFile(__FILE__, $arSite && isset($arSite['LANGUAGE_ID']) ? $arSite['LANGUAGE_ID'] : false);

		$folderModel = $storageModel->addFolder(array(
			'NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'),
			'CODE' => 'VI_CALLS',
			'CREATED_BY' => BitrixDiskSystemUser::SYSTEM_USER_ID
		), $accessCodes);

		if (!$folderModel)
		{
			if ($storageModel->getErrorByCode(BitrixDiskFolder::ERROR_NON_UNIQUE_NAME))
			{
				$folderModel = BitrixDiskFolder::load(array(
					'STORAGE_ID' => $storageModel->getId(),
					'PARENT_ID' => $storageModel->getRootObjectId(),
					'TYPE' => BitrixDiskInternalsObjectTable::TYPE_FOLDER,
					'=NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'),
				));
				$folderModel->changeCode('VI_CALLS');
			}
			else
			{
				$folderModel = $storageModel->addFolder(array(
					'NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'),
					'CODE' => 'VI_CALLS',
					'CREATED_BY' => BitrixDiskSystemUser::SYSTEM_USER_ID
				), $accessCodes, true);
			}
		}
	}

	return $folderModel;
}