MODULE_VERSION = $arModuleVersion['VERSION']; $this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE']; $this->MODULE_NAME = GetMessage('CLO_MODULE_NAME'); $this->MODULE_DESCRIPTION = GetMessage('CLO_MODULE_DESCRIPTION'); } public function GetModuleTasks() { return [ 'clouds_denied' => [ 'LETTER' => 'D', 'BINDING' => 'module', 'OPERATIONS' => [ ], ], 'clouds_browse' => [ 'LETTER' => 'F', 'BINDING' => 'module', 'OPERATIONS' => [ 'clouds_browse', ], ], 'clouds_upload' => [ 'LETTER' => 'U', 'BINDING' => 'module', 'OPERATIONS' => [ 'clouds_browse', 'clouds_upload', ], ], 'clouds_full_access' => [ 'LETTER' => 'W', 'BINDING' => 'module', 'OPERATIONS' => [ 'clouds_browse', 'clouds_upload', 'clouds_config', ], ], ]; } public function InstallDB($arParams = []) { global $DB, $APPLICATION; $connection = \Bitrix\Main\Application::getConnection(); $this->errors = false; // Database tables creation if (!$DB->TableExists('b_clouds_file_bucket')) { $this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/db/' . $connection->getType() . '/install.sql'); } if ($this->errors !== false) { $APPLICATION->ThrowException(implode('
', $this->errors)); return false; } else { $this->InstallTasks(); RegisterModule('clouds'); CModule::IncludeModule('clouds'); RegisterModuleDependences('main', 'OnEventLogGetAuditTypes', 'clouds', 'CCloudStorage', 'GetAuditTypes'); RegisterModuleDependences('main', 'OnBeforeProlog', 'clouds', 'CCloudStorage', 'OnBeforeProlog', 90); RegisterModuleDependences('main', 'OnAdminListDisplay', 'clouds', 'CCloudStorage', 'OnAdminListDisplay'); RegisterModuleDependences('main', 'OnBuildGlobalMenu', 'clouds', 'CCloudStorage', 'OnBuildGlobalMenu'); RegisterModuleDependences('main', 'OnFileSave', 'clouds', 'CCloudStorage', 'OnFileSave'); RegisterModuleDependences('main', 'OnAfterFileSave', 'clouds', 'CCloudStorage', 'OnAfterFileSave'); RegisterModuleDependences('main', 'OnGetFileSRC', 'clouds', 'CCloudStorage', 'OnGetFileSRC'); RegisterModuleDependences('main', 'OnFileCopy', 'clouds', 'CCloudStorage', 'OnFileCopy'); RegisterModuleDependences('main', 'OnPhysicalFileDelete', 'clouds', 'CCloudStorage', 'OnFileDelete'); RegisterModuleDependences('main', 'OnMakeFileArray', 'clouds', 'CCloudStorage', 'OnMakeFileArray'); RegisterModuleDependences('main', 'OnBeforeResizeImage', 'clouds', 'CCloudStorage', 'OnBeforeResizeImage'); RegisterModuleDependences('main', 'OnAfterResizeImage', 'clouds', 'CCloudStorage', 'OnAfterResizeImage'); RegisterModuleDependences('main', 'OnAfterFileDeleteDuplicate', 'clouds', 'CCloudStorage', 'OnAfterFileDeleteDuplicate'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_AmazonS3', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_GoogleStorage', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_OpenStackStorage', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_RackSpaceCloudFiles', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_ClodoRU', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Selectel', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Selectel_S3', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_HotBox', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Yandex', 'GetObjectInstance'); RegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_S3', 'GetObjectInstance'); RegisterModuleDependences('perfmon', 'OnGetTableSchema', 'clouds', 'clouds', 'OnGetTableSchema'); //agents CAgent::RemoveAgent('CCloudStorage::CleanUp();', 'clouds'); CAgent::Add([ 'NAME' => 'CCloudStorage::CleanUp();', 'MODULE_ID' => 'clouds', 'ACTIVE' => 'Y', 'AGENT_INTERVAL' => 86400, 'IS_PERIOD' => 'N', ]); return true; } } public function UnInstallDB($arParams = []) { global $DB, $APPLICATION; $connection = \Bitrix\Main\Application::getConnection(); $this->errors = false; if (!array_key_exists('save_tables', $arParams) || $arParams['save_tables'] != 'Y') { $this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/db/' . $connection->getType() . '/uninstall.sql'); $this->UnInstallTasks(); } UnRegisterModuleDependences('main', 'OnEventLogGetAuditTypes', 'clouds', 'CCloudStorage', 'GetAuditTypes'); UnRegisterModuleDependences('main', 'OnBeforeProlog', 'clouds', 'CCloudStorage', 'OnBeforeProlog'); UnRegisterModuleDependences('main', 'OnAdminListDisplay', 'clouds', 'CCloudStorage', 'OnAdminListDisplay'); UnRegisterModuleDependences('main', 'OnBuildGlobalMenu', 'clouds', 'CCloudStorage', 'OnBuildGlobalMenu'); UnRegisterModuleDependences('main', 'OnFileSave', 'clouds', 'CCloudStorage', 'OnFileSave'); UnRegisterModuleDependences('main', 'OnAfterFileSave', 'clouds', 'CCloudStorage', 'OnAfterFileSave'); UnRegisterModuleDependences('main', 'OnGetFileSRC', 'clouds', 'CCloudStorage', 'OnGetFileSRC'); UnRegisterModuleDependences('main', 'OnFileCopy', 'clouds', 'CCloudStorage', 'OnFileCopy'); UnRegisterModuleDependences('main', 'OnPhysicalFileDelete', 'clouds', 'CCloudStorage', 'OnFileDelete'); UnRegisterModuleDependences('main', 'OnMakeFileArray', 'clouds', 'CCloudStorage', 'OnMakeFileArray'); UnRegisterModuleDependences('main', 'OnBeforeResizeImage', 'clouds', 'CCloudStorage', 'OnBeforeResizeImage'); UnRegisterModuleDependences('main', 'OnAfterResizeImage', 'clouds', 'CCloudStorage', 'OnAfterResizeImage'); UnRegisterModuleDependences('main', 'OnAfterFileDeleteDuplicate', 'clouds', 'CCloudStorage', 'OnAfterFileDeleteDuplicate'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_AmazonS3', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_GoogleStorage', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_OpenStackStorage', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_RackSpaceCloudFiles', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_ClodoRU', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Selectel', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Selectel_S3', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_HotBox', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_Yandex', 'GetObjectInstance'); UnRegisterModuleDependences('clouds', 'OnGetStorageService', 'clouds', 'CCloudStorageService_S3', 'GetObjectInstance'); UnRegisterModuleDependences('perfmon', 'OnGetTableSchema', 'clouds', 'clouds', 'OnGetTableSchema'); //agents CAgent::RemoveAgent('CCloudStorage::CleanUp();', 'clouds'); UnRegisterModule('clouds'); if (!defined('BX_CLOUDS_UNINSTALLED')) { define('BX_CLOUDS_UNINSTALLED', true); } if ($this->errors !== false) { $APPLICATION->ThrowException(implode('
', $this->errors)); return false; } return true; } public function InstallEvents() { return true; } public function UnInstallEvents() { return true; } public function InstallFiles($arParams = []) { CopyDirFiles($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/admin', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin'); CopyDirFiles($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/themes', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/themes', true, true); return true; } public function UnInstallFiles() { DeleteDirFiles($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/admin/', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin'); DeleteDirFiles($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/themes/.default/', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/themes/.default'); return true; } public function DoInstall() { global $APPLICATION, $step, $USER, $errors; if ($USER->IsAdmin()) { $step = intval($step); if ($step < 2) { $APPLICATION->IncludeAdminFile(GetMessage('CLO_INSTALL_TITLE'), $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/step1.php'); } elseif ($step == 2) { if ($this->InstallDB()) { $this->InstallFiles(); } $errors = $this->errors; $APPLICATION->IncludeAdminFile(GetMessage('CLO_INSTALL_TITLE'), $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/step2.php'); } } } public function DoUninstall() { global $APPLICATION, $step, $USER, $errors; if ($USER->IsAdmin()) { $step = intval($step); if ($step < 2) { $APPLICATION->IncludeAdminFile(GetMessage('CLO_UNINSTALL_TITLE'), $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/unstep1.php'); } elseif ($step == 2) { $this->UnInstallDB([ 'save_tables' => $_REQUEST['save_tables'], ]); $this->UnInstallFiles(); $errors = $this->errors; $APPLICATION->IncludeAdminFile(GetMessage('CLO_UNINSTALL_TITLE'), $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/clouds/install/unstep2.php'); } } } public static function OnGetTableSchema() { return [ 'clouds' => [ 'b_clouds_file_bucket' => [ 'ID' => [ 'b_clouds_file_bucket' => 'FAILOVER_BUCKET_ID', 'b_clouds_file_upload' => 'BUCKET_ID', 'b_clouds_copy_queue' => 'SOURCE_BUCKET_ID', 'b_clouds_copy_queue^' => 'TARGET_BUCKET_ID', 'b_clouds_delete_queue' => 'BUCKET_ID', 'b_clouds_rename_queue' => 'BUCKET_ID', 'b_clouds_file_save' => 'BUCKET_ID', ] ], ], 'main' => [ 'b_file' => [ 'ID' => [ 'b_clouds_file_resize' => 'FILE_ID', ] ], ], ]; } }