Your IP : 18.117.158.174


Current Path : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/recyclebin/install/
Upload File :
Current File : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/recyclebin/install/index.php

<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}

use Bitrix\Main\Localization\Loc;

Loc::loadMessages(__FILE__);

/**
 * Class recyclebin
 */
class recyclebin extends CModule
{
	public $MODULE_ID = 'recyclebin';
	public $MODULE_VERSION;
	public $MODULE_VERSION_DATE;
	public $MODULE_NAME;
	public $MODULE_DESCRIPTION;
	private $errors;

	/**
	 * recyclebin constructor.
	 */
	function __construct()
	{
		$arModuleVersion = array();
		include __DIR__.'/version.php';

		$this->MODULE_VERSION = $arModuleVersion['VERSION'];
		$this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE'];

		$this->MODULE_NAME = Loc::getMessage('RECYCLEBIN_MODULE_NAME');
		$this->MODULE_DESCRIPTION = Loc::getMessage('RECYCLEBIN_MODULE_DESC');
	}

	/**
	 * Install
	 */
	function DoInstall()
	{
		$this->InstallDB();
		$this->InstallFiles();

		return true;
	}

	/**
	 * Install module into system
	 */
	function InstallDB()
	{
		global $DB, $DBType, $APPLICATION;

		if (!$DB->Query("SELECT 'x' FROM b_recyclebin WHERE 1=0", true))
		{
			$dbFilePath = '/bitrix/modules/'.$this->MODULE_ID.'/install/db/'.ToLower($DBType).'/install.sql';
			$errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'].$dbFilePath);

			if ($errors !== false)
			{
				$APPLICATION->ResetException();
				$APPLICATION->ThrowException(implode('', $errors));

				return false;
			}
		}

		$this->InstallUserFields();

		RegisterModule($this->MODULE_ID);

		return true;
	}

	private function installUserFields()
	{
		$oUserTypeEntity = new \CUserTypeEntity();
		$aUserFields = array(
			'ENTITY_ID'     => 'RECYCLEBIN_DISK',
			'FIELD_NAME'    => 'UF_RECYCLEBIN_FILES',
			'USER_TYPE_ID'  => 'disk_file',
			'XML_ID'        => 'XML_ID_RECYCLEBIN_FILES',
			'SORT'          => 500,
			'MULTIPLE'      => 'Y',
			'MANDATORY'     => 'N',
			'SHOW_FILTER'   => 'S',
			'SHOW_IN_LIST'  => '',
			'EDIT_IN_LIST'  => '',
			'IS_SEARCHABLE' => 'N'
		);
		$oUserTypeEntity->Add($aUserFields);
	}

	/**
	 * Compy admin files, components and images
	 *
	 * @param array $arParams
	 *
	 * @return bool
	 */
	function InstallFiles($arParams = array())
	{
		CopyDirFiles(
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/recyclebin/install/admin',
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/admin',
			true,
			true
		);
		CopyDirFiles(
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/recyclebin/install/components/bitrix',
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/components/bitrix',
			true,
			true
		);
		CopyDirFiles(
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/recyclebin/install/images',
			$_SERVER['DOCUMENT_ROOT'].'/bitrix/images',
			true,
			true
		);

		return true;
	}

	function InstallEvents()
	{
		parent::InstallEvents(); // TODO: Change the autogenerated stub
	}

	function UnInstallEvents()
	{
		parent::UnInstallEvents(); // TODO: Change the autogenerated stub
	}

	/**
	 * Remove module from system
	 *
	 * @return bool
	 */
	function DoUninstall()
	{
		global $DB, $DOCUMENT_ROOT, $APPLICATION, $step;
		$step = intval($step);
		if($step < 2)
		{
			$APPLICATION->IncludeAdminFile(GetMessage("RECYCLEBIN_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/recyclebin/install/unstep1.php");
		}
		elseif($step == 2)
		{
			$GLOBALS["CACHE_MANAGER"]->CleanAll();
			$this->UnInstallDB(array(
								   "savedata" => $_REQUEST["savedata"],
							   ));
			$this->UnInstallFiles();
			$this->UnInstallEvents();
			$GLOBALS["errors"] = $this->errors;
			$APPLICATION->IncludeAdminFile(GetMessage("RECYCLEBIN_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/recyclebin/install/unstep2.php");
		}
	}

	/**
	 * Uninstall module from system
	 *
	 * @param array $arParams
	 *
	 * @return bool
	 */
	function UnInstallDB($arParams = array())
	{
		global $DB, $DBType, $APPLICATION, $USER_FIELD_MANAGER;

		if(!array_key_exists("savedata", $arParams) || $arParams["savedata"] != "Y")
		{
			$dbFilePath = '/bitrix/modules/' . $this->MODULE_ID . '/install/db/' . ToLower($DBType) . '/uninstall.sql';
			$errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . $dbFilePath);

			if (!empty($errors))
			{
				$APPLICATION->ResetException();
				$APPLICATION->ThrowException(implode('', $errors));

				return false;
			}
		}

		$userFields = $USER_FIELD_MANAGER->GetUserFields('RECYCLEBIN_DISK');
		$oUserTypeEntity = new \CUserTypeEntity();
		$oUserTypeEntity->Delete($userFields['UF_RECYCLEBIN_FILES']['ID']);

		UnRegisterModule($this->MODULE_ID);

		$GLOBALS["CACHE_MANAGER"]->CleanAll();

		return true;
	}

	/**
	 * Remove admin files, components and images
	 *
	 * @return bool
	 */
	function UnInstallFiles()
	{
		$root = $_SERVER['DOCUMENT_ROOT'];

		DeleteDirFiles($root.'/bitrix/modules/recyclebin/install/admin', $root.'/bitrix/admin');
		DeleteDirFiles($root.'/bitrix/modules/recyclebin/install/components', $root.'/bitrix/components/bitrix');
		DeleteDirFiles($root.'/bitrix/modules/recyclebin/install/images', $root.'/bitrix/images/recyclebin');

		return true;
	}
}