/** * Gets specific folder in storage by code. If folder does not exist, creates it. * @param Storage $storage Target storage. * @param string $code Code of specific folder. * @return Folder|null|static */ public static function getFolder(Storage $storage, $code) { $folder = Folder::load(array('=CODE' => $code, 'STORAGE_ID' => $storage->getId())); if ($folder) { return $folder; } return static::createFolder($storage, $code); }
public static function GetLocalDiskMolel() { if (!self::Enabled()) { return false; } $storageModel = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(self::GetUserId()); if (!$storageModel) { return false; } $folderModel = \Bitrix\Disk\Folder::load(array('STORAGE_ID' => $storageModel->getId(), 'PARENT_ID' => $storageModel->getRootObjectId(), 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FOLDER, 'CODE' => 'IM_SAVED')); if (!$folderModel) { $folderName = GetMessage(IsModuleInstalled('intranet') ? 'IM_DISK_LOCAL_FOLDER_B24_TITLE' : 'IM_DISK_LOCAL_FOLDER_TITLE'); $folderModel = $storageModel->addFolder(array('NAME' => $folderName, 'CREATED_BY' => self::GetUserId(), 'CODE' => 'IM_SAVED')); if (!$folderModel) { if ($storageModel->getErrorByCode(\Bitrix\Disk\Folder::ERROR_NON_UNIQUE_NAME)) { $badFileModel = \Bitrix\Disk\File::load(array('STORAGE_ID' => $storageModel->getId(), 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FILE, 'NAME' => $folderName)); if ($badFileModel) { $badFileModel->delete(\Bitrix\Disk\SystemUser::SYSTEM_USER_ID); $folderModel = $storageModel->addFolder(array('NAME' => $folderName, 'CREATED_BY' => self::GetUserId(), 'CODE' => 'IM_SAVED')); } else { $folderModel = \Bitrix\Disk\Folder::load(array('STORAGE_ID' => $storageModel->getId(), 'PARENT_ID' => $storageModel->getRootObjectId(), 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FOLDER, 'NAME' => $folderName)); $folderModel->changeCode('IM_SAVED'); } } else { $folderModel = $storageModel->addFolder(array('NAME' => $folderName, 'CREATED_BY' => self::GetUserId(), 'CODE' => 'IM_SAVED'), array(), true); } } } return $folderModel; }
/** * @param $name * @param $parentDirectoryId * @return array|boolean */ public function addDirectory($name, $parentDirectoryId) { if (!$parentDirectoryId) { $folder = $this->storage->getRootObject(); } else { $folder = Folder::loadById($parentDirectoryId); } if (!$folder) { $this->errorCollection->add(array(new Error("Could not find folder " . __METHOD__ . " by {$name}, {$parentDirectoryId}", 189146))); return array(); } if (!$folder->canAdd($this->storage->getCurrentUserSecurityContext())) { throw new CWebDavAccessDeniedException(); } $sub = $folder->addSubFolder(array('NAME' => $name, 'CREATED_BY' => $this->getUser()->getId())); if ($sub) { $this->loadFormattedFolderTreeAndBreadcrumbs(); return $this->formatFolderToResponse($sub); } $this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " , addSubFolder by name {$name}, parentId {$folder->getId()}", 199147))); $this->errorCollection->add($folder->getErrors()); /** @var Folder $folder */ $parentId = $folder->getRealObject()->getId(); $folder = Folder::load(array('NAME' => $name, 'PARENT_ID' => $parentId)); if ($folder) { $this->loadFormattedFolderTreeAndBreadcrumbs(); return $this->formatFolderToResponse($folder); } $this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " , load Folder by name {$name}, parentId {$parentId}", 11147))); return array(); }
public function Execute() { if (!CModule::IncludeModule("disk")) return CBPActivityExecutionStatus::Closed; $groupId = (int)$this->GroupId; $files = $this->Files; $folderName = \Bitrix\Disk\Ui\Text::correctFolderName($this->FolderName); $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($groupId); if (!$storage) { $storage = \Bitrix\Disk\Driver::getInstance()->addGroupStorage($groupId); } if (!$storage) { return CBPActivityExecutionStatus::Closed; } $folder = null; if (strlen($folderName) > 0) { $targetFolder = \Bitrix\Disk\Folder::load(array('=NAME' => $folderName, 'STORAGE_ID' => $storage->getId(), 'PARENT_ID' => $storage->getRootObjectId() )); if ($targetFolder) { $folder = $targetFolder; } else { $folder = $storage->addFolder(array( 'NAME' => $folderName, 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID ), array(), true); } } if (!$folder) { $folder = $storage->getRootObject(); } foreach ($files as $file) { if (!(int)$file) continue; $fileArray = CFile::MakeFileArray($file); if (!is_array($fileArray)) continue; $folder->uploadFile($fileArray, array( 'NAME' => $fileArray['name'], 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID, ), array(), true ); } return CBPActivityExecutionStatus::Closed; }
/** * @param int $typeID * @param string $siteID * @return \Bitrix\Disk\Folder|null */ public static function ensureFolderCreated($typeID, $siteID = '') { if (!Loader::includeModule('disk')) { return null; } if (!StorageFileType::isDefined($typeID)) { return null; } if ($siteID === '') { $siteID = self::getDefaultSiteID(); } $xmlID = StorageFileType::getFolderXmlID($typeID); $name = StorageFileType::getFolderName($typeID); $storage = self::getStorage($siteID); if (!$storage) { return null; } $folderModel = Folder::load(array('STORAGE_ID' => $storage->getId(), 'PARENT_ID' => $storage->getRootObjectId(), '=XML_ID' => $xmlID)); if ($folderModel) { return $folderModel; } return $storage->addFolder(array('NAME' => $name, 'XML_ID' => $xmlID, 'CREATED_BY' => SystemUser::SYSTEM_USER_ID), array(), true); }
//Turn off by default /******************************************************************** /Input params ********************************************************************/ $bDialog = isset($_REQUEST['dialog']) || isset($_REQUEST['dialog2']); if ($arParams["PERMISSION"] < "R") { ShowError(GetMessage("WD_ACCESS_DENIED")); return 0; } elseif (isset($ob->meta_state) && $arParams["PERMISSION"] < $ob->meta_names[$ob->meta_state]['rights']) { ShowError(GetMessage("WD_ACCESS_DENIED")); return 0; } if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk') && !empty($arParams['OBJECT'])) { if (!empty($arParams['OBJECT']->arParams['dir_array'])) { /** @var \Bitrix\Disk\File $diskFolder */ $diskFolder = \Bitrix\Disk\Folder::load(array('XML_ID' => $arParams['OBJECT']->arParams['dir_array']['ID']), array('STORAGE')); if ($diskFolder) { LocalRedirect(\Bitrix\Disk\Driver::getInstance()->getUrlManager()->getPathInListing($diskFolder) . '/' . $diskFolder->getName()); } } elseif ($arParams['OBJECT']->_path == '/') { if (!empty($arParams['OBJECT']->attributes['user_id'])) { $diskStorage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($arParams['OBJECT']->attributes['user_id']); } elseif (!empty($arParams['OBJECT']->attributes['group_id'])) { $diskStorage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($arParams['OBJECT']->attributes['group_id']); } if ($diskStorage) { LocalRedirect(\Bitrix\Disk\Driver::getInstance()->getUrlManager()->getPathInListing($diskStorage->getRootObject())); } } } /********************************************************************
public static function GetFolderModel($siteId = SITE_ID) { if (!self::Enabled()) { return false; } $storageModel = self::GetStorageModel($siteId); if (!$storageModel) { return false; } $folderModel = \Bitrix\Disk\Folder::load(array('STORAGE_ID' => $storageModel->getId(), 'PARENT_ID' => $storageModel->getRootObjectId(), 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FOLDER, '=XML_ID' => 'VI_CALLS')); if (!$folderModel) { // Access codes $rightsManager = \Bitrix\Disk\Driver::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'), 'XML_ID' => 'VI_CALLS', 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID), $accessCodes); if (!$folderModel) { if ($storageModel->getErrorByCode(\Bitrix\Disk\Folder::ERROR_NON_UNIQUE_NAME)) { $folderModel = \Bitrix\Disk\Folder::load(array('STORAGE_ID' => $storageModel->getId(), 'PARENT_ID' => $storageModel->getRootObjectId(), 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FOLDER, 'NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'))); $folderModel->changeXmlId('VI_CALLS'); } else { $folderModel = $storageModel->addFolder(array('NAME' => GetMessage('VI_DISK_CALL_RECORD_SECTION'), 'XML_ID' => 'VI_CALLS', 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID), $accessCodes, true); } } } return $folderModel; }
/** * @param $name * @param $parentDirectoryId * @param array $data * @return array|bool * @throws AccessDeniedException */ public function addDirectory($name, $parentDirectoryId, array $data = array()) { if (!$parentDirectoryId) { $folder = $this->storage->getRootObject(); } else { $folder = Folder::loadById($parentDirectoryId); } if (!$folder) { $this->errorCollection->add(array(new Error("Could not find folder " . __METHOD__ . " by {$name}, {$parentDirectoryId}", 189146))); return array(); } if (!$folder->canAdd($this->storage->getCurrentUserSecurityContext())) { throw new AccessDeniedException(); } $folderData = array('NAME' => $name, 'CREATED_BY' => $this->getUser()->getId()); if (!empty($data['originalTimestamp'])) { $folderData['UPDATE_TIME'] = DateTime::createFromTimestamp($this->convertFromExternalVersion($data['originalTimestamp'])); } $sub = $folder->addSubFolder($folderData); if ($sub) { $this->loadFormattedFolderTreeAndBreadcrumbs(); return $this->formatFolderToResponse($sub); } $this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " , addSubFolder by name {$name}, parentId {$folder->getId()}", 199147))); $this->errorCollection->add($folder->getErrors()); /** @var Folder $folder */ $parentId = $folder->getRealObject()->getId(); $folder = Folder::load(array('=NAME' => $name, 'PARENT_ID' => $parentId)); if ($folder) { $this->loadFormattedFolderTreeAndBreadcrumbs(); return $this->formatFolderToResponse($folder); } $this->errorCollection->add(array(new Error("Could not " . __METHOD__ . " , load Folder by name {$name}, parentId {$parentId}", 11147))); return array(); }