Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/socialservices/lib/integration/zoom/ |
Upload File : |
<?php namespace Bitrix\SocialServices\Integration\Zoom; use Bitrix\Disk\Storage; use Bitrix\Main\Error; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Result; use Bitrix\Main\Type\DateTime; class DiskHelper { const ROOT_FOLDER_CODE = "ZOOM_RECORDS"; public static function saveFile(array $arFile, int $userId, $siteId = SITE_ID): Result { $result = new Result(); if (!Loader::includeModule("disk")) { return $result->addError(new Error("Disk module is not installed")); } $subFolder = self::getRecordsFolder((new DateTime())->format("Y-m"), $siteId); if (!$subFolder) { return $result->addError(new Error("Could not create records folder")); } $accessCodes = []; $rightsManager = \Bitrix\Disk\Driver::getInstance()->getRightsManager(); $fullAccessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL); $accessCodes[] = [ 'ACCESS_CODE' => 'U' . $userId, 'TASK_ID' => $fullAccessTaskId, ]; $accessCodes[] = [ 'ACCESS_CODE' => 'G1', 'TASK_ID' => $fullAccessTaskId, ]; $fileModel = $subFolder->uploadFile( $arFile, ['CREATED_BY' => $userId,], $accessCodes, true ); if(!$fileModel) { if(count($subFolder->getErrors()) > 0) { return $result->addErrors($subFolder->getErrors()); } return $result->addError(new Error("Unknown error while saving file")); } return $result->setData([ 'fileId' => $fileModel->getId() ]); } public static function getRecordsFolder($folderName, $siteId = SITE_ID) { if(!\Bitrix\Main\Loader::includeModule('disk')) return false; $rootFolder = self::getRootFolder($siteId); if (!$rootFolder) { return false; } $subFolder = \Bitrix\Disk\Folder::load(array( '=NAME' => $folderName, 'PARENT_ID' => $rootFolder->getId(), )); if (!$subFolder) { $subFolder = $rootFolder->addSubFolder(array( 'NAME' => $folderName, 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID )); } return $subFolder; } public static function getRootFolder($siteId = SITE_ID) { $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, '=CODE' => static::ROOT_FOLDER_CODE, )); if ($folderModel) { return $folderModel; } // Creating root folder $folderModel = $storageModel->addFolder([ 'NAME' => static::getRootFolderName($siteId), 'CODE' => static::ROOT_FOLDER_CODE, 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID ], static::createRootFolderAccessCodes($storageModel)); return $folderModel; } /** * @param string $siteId * @return \Bitrix\Disk\Storage || null */ public static function getStorageModel($siteId = SITE_ID): ?Storage { if ($siteId === '') return null; $storageModel = \Bitrix\Disk\Driver::getInstance()->getStorageByCommonId("shared_files_{$siteId}"); return $storageModel ?: null; } public static function getRootFolderName($siteId): string { // Folder name $dbSite = \CSite::GetByID($siteId); $arSite = $dbSite->Fetch(); IncludeModuleLangFile(__FILE__, $arSite && isset($arSite['LANGUAGE_ID']) ? $arSite['LANGUAGE_ID'] : false); return Loc::getMessage("SOCSERV_ZOOM_RECORDS_ROOT_FOLDER"); } public static function createRootFolderAccessCodes(Storage $storageModel) { // 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, ); return $accessCodes; } }