Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/clouds/install/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/clouds/install/index.php

<?php
IncludeModuleLangFile(__FILE__);

if (class_exists('clouds'))
{
	return;
}
class clouds extends CModule
{
	public $MODULE_ID = 'clouds';
	public $MODULE_VERSION;
	public $MODULE_VERSION_DATE;
	public $MODULE_NAME;
	public $MODULE_DESCRIPTION;
	public $MODULE_CSS;
	public $MODULE_GROUP_RIGHTS = 'Y';

	public function __construct()
	{
		$arModuleVersion = [];

		include __DIR__ . '/version.php';

		$this->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('<br>', $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('<br>', $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',
					]
				],
			],
		];
	}
}