Пример #1
1
 /**
  * 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);
 }
Пример #2
0
 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;
 }
Пример #3
0
 /**
  * @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();
 }
Пример #4
0
	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;
	}
Пример #5
0
 /**
  * @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);
 }
Пример #6
0
//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()));
        }
    }
}
/********************************************************************
Пример #7
0
 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;
 }
Пример #8
0
 /**
  * @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();
 }