1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
diskhelper.php
См. документацию.
1<?php
2
3namespace Bitrix\SocialServices\Integration\Zoom;
4
5use Bitrix\Disk\Storage;
6use Bitrix\Main\Error;
7use Bitrix\Main\Loader;
8use Bitrix\Main\Localization\Loc;
9use Bitrix\Main\Result;
10use Bitrix\Main\Type\DateTime;
11
13{
14 const ROOT_FOLDER_CODE = "ZOOM_RECORDS";
15
16 public static function saveFile(array $arFile, int $userId, $siteId = SITE_ID): Result
17 {
18 $result = new Result();
19 if (!Loader::includeModule("disk"))
20 {
21 return $result->addError(new Error("Disk module is not installed"));
22 }
23
24 $subFolder = self::getRecordsFolder((new DateTime())->format("Y-m"), $siteId);
25 if (!$subFolder)
26 {
27 return $result->addError(new Error("Could not create records folder"));
28 }
29
30 $accessCodes = [];
31 $rightsManager = \Bitrix\Disk\Driver::getInstance()->getRightsManager();
32 $fullAccessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL);
33
34 $accessCodes[] = [
35 'ACCESS_CODE' => 'U' . $userId,
36 'TASK_ID' => $fullAccessTaskId,
37 ];
38 $accessCodes[] = [
39 'ACCESS_CODE' => 'G1',
40 'TASK_ID' => $fullAccessTaskId,
41 ];
42
43 $fileModel = $subFolder->uploadFile(
44 $arFile,
45 ['CREATED_BY' => $userId,],
46 $accessCodes,
47 true
48 );
49
50 if(!$fileModel)
51 {
52 if(count($subFolder->getErrors()) > 0)
53 {
54 return $result->addErrors($subFolder->getErrors());
55 }
56 return $result->addError(new Error("Unknown error while saving file"));
57 }
58 return $result->setData([
59 'fileId' => $fileModel->getId()
60 ]);
61 }
62
63 public static function getRecordsFolder($folderName, $siteId = SITE_ID)
64 {
65 if(!\Bitrix\Main\Loader::includeModule('disk'))
66 return false;
67
68 $rootFolder = self::getRootFolder($siteId);
69 if (!$rootFolder)
70 {
71 return false;
72 }
73
74 $subFolder = \Bitrix\Disk\Folder::load(array(
75 '=NAME' => $folderName,
76 'PARENT_ID' => $rootFolder->getId(),
77 ));
78
79 if (!$subFolder)
80 {
81 $subFolder = $rootFolder->addSubFolder(array(
82 'NAME' => $folderName,
83 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID
84 ));
85 }
86
87 return $subFolder;
88 }
89
90 public static function getRootFolder($siteId = SITE_ID)
91 {
92 $storageModel = self::getStorageModel($siteId);
93 if (!$storageModel)
94 {
95 return false;
96 }
97
98 $folderModel = \Bitrix\Disk\Folder::load(array(
99 'STORAGE_ID' => $storageModel->getId(),
100 'PARENT_ID' => $storageModel->getRootObjectId(),
101 'TYPE' => \Bitrix\Disk\Internals\ObjectTable::TYPE_FOLDER,
102 '=CODE' => static::ROOT_FOLDER_CODE,
103 ));
104 if ($folderModel)
105 {
106 return $folderModel;
107 }
108
109 // Creating root folder
110 $folderModel = $storageModel->addFolder([
111 'NAME' => static::getRootFolderName($siteId),
112 'CODE' => static::ROOT_FOLDER_CODE,
113 'CREATED_BY' => \Bitrix\Disk\SystemUser::SYSTEM_USER_ID
114 ], static::createRootFolderAccessCodes($storageModel));
115
116 return $folderModel;
117 }
118
123 public static function getStorageModel($siteId = SITE_ID): ?Storage
124 {
125 if ($siteId === '')
126 return null;
127
128 $storageModel = \Bitrix\Disk\Driver::getInstance()->getStorageByCommonId("shared_files_{$siteId}");
129 return $storageModel ?: null;
130 }
131
132 public static function getRootFolderName($siteId): string
133 {
134 // Folder name
135 $dbSite = \CSite::GetByID($siteId);
136 $arSite = $dbSite->Fetch();
137 IncludeModuleLangFile(__FILE__, $arSite && isset($arSite['LANGUAGE_ID']) ? $arSite['LANGUAGE_ID'] : false);
138
139 return Loc::getMessage("SOCSERV_ZOOM_RECORDS_ROOT_FOLDER");
140 }
141
142 public static function createRootFolderAccessCodes(Storage $storageModel)
143 {
144 // Access codes
145 $rightsManager = \Bitrix\Disk\Driver::getInstance()->getRightsManager();
146 $fullAccessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL);
147 $rights = $rightsManager->getAllListNormalizeRights($storageModel->getRootObject());
148
149 $accessCodes = array();
150 foreach ($rights as $right)
151 {
152 $accessCodes[] = Array(
153 'ACCESS_CODE' => $right['ACCESS_CODE'],
154 'TASK_ID' => $right['TASK_ID'],
155 'NEGATIVE' => 1
156 );
157 }
158 $accessCodes[] = Array(
159 'ACCESS_CODE' => 'G1',
160 'TASK_ID' => $fullAccessTaskId,
161 );
162
163 return $accessCodes;
164 }
165}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения error.php:15
static getStorageModel($siteId=SITE_ID)
Определения diskhelper.php:123
static getRootFolder($siteId=SITE_ID)
Определения diskhelper.php:90
static saveFile(array $arFile, int $userId, $siteId=SITE_ID)
Определения diskhelper.php:16
static getRecordsFolder($folderName, $siteId=SITE_ID)
Определения diskhelper.php:63
static createRootFolderAccessCodes(Storage $storageModel)
Определения diskhelper.php:142
$right
Определения options.php:8
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$siteId
Определения ajax.php:8
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
const SITE_ID
Определения sonet_set_content_view.php:12
$rights
Определения options.php:4