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