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',
]
],
],
];
}
}