Your IP : 3.137.222.170


Current Path : /home/bitrix/ext_www/easy-comfort.com.ua/local/modules/rusklimat.exchange/install/
Upload File :
Current File : /home/bitrix/ext_www/easy-comfort.com.ua/local/modules/rusklimat.exchange/install/index.php

<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

/**
 * Module Exchange
 * Installation
 *
 * @author  Alex
 * @since   13/11/2017
 *
 */

use Bitrix\Main\Localization\Loc;
use Bitrix\Main\ModuleManager;
use Bitrix\Main\Localization\LanguageTable;
use Bitrix\Main\SiteTable;

Loc::loadMessages(__FILE__);

class rusklimat_exchange extends CModule
{
    var $MODULE_ID           = "rusklimat.exchange";//
    var $MODULE_VERSION      = '';
    var $MODULE_VERSION_DATE = '';
    var $MODULE_NAME;
    var $MODULE_DESCRIPTION;
    var $MODULE_CSS;
	var $MODULE_GROUP_RIGHTS = "Y";
	

	function rusklimat_exchange(){
		$arModuleVersion = array();

		$path = str_replace("\\", "/", __FILE__);
		$path = substr($path, 0, strlen($path) - strlen("/index.php"));
		include($path."/version.php");

		if (is_array($arModuleVersion) && isset($arModuleVersion["VERSION"]))
		{
			$this->MODULE_VERSION = $arModuleVersion["VERSION"];
			$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
		}
		$this->PARTNER_NAME = GetMessage("ASD_PARTNER_NAME");
		
		$this->MODULE_NAME = Loc::getMessage("RK_EXCHANGE_MODULE_NAME");
		$this->MODULE_DESCRIPTION = Loc::getMessage("RK_EXCHANGE_MODULE_DESCRIPTION");
	}	

    /**
     * Устанавливаем модуль.
     */
    public function DoInstall()
    {
        global $APPLICATION, $DOCUMENT_ROOT, $DB;
		
		//CJSCore::Init(array("jquery2"));
		
        //Модуль Sale не установлен
        if (!IsModuleInstalled('sale') || !IsModuleInstalled('iblock') || !IsModuleInstalled('currency')) {
           $APPLICATION->ThrowException('Modules missing (iblock, currency, sale)');
           return false;
        }

        /*
         * Модуль уже установлен
         */
        if (IsModuleInstalled('rusklimat.exchange')) {
            return false;
        }

        /*
         * Сессия неправильная
         */
        if (!check_bitrix_sessid()) {
            return false;
        }
		// устанавливаем файлы
		$this->InstallFiles();
		
		// нужные таблицы
		$this->InstallDB();
		
		RegisterModule("rusklimat.exchange");
		
		// добавим агент проверки работы других агентов :)
		$plus_fifteen_min  = mktime(date("H"), date("i")+15, date("s"), date("m"), date("d"), date("Y"));
		$date_agent = FormatDate("d.m.Y H:i:s", $plus_fifteen_min);
		CAgent::AddAgent(
			"RusklimatAgents::checkWorkAgents();",          // имя функции
			"rusklimat.exchange",                           // идентификатор модуля
			"Y",                                            // агент не критичен к кол-ву запусков
			"86400",                                        // интервал запуска 
			$date_agent,                                    // дата первой проверки на запуск
			"Y",                                            // агент активен
			$date_agent                                     // дата первого запуска
		);
		
		// свойвта по умолчанию
		COption::SetOptionString( $this->MODULE_ID, 'RK_EXCHANGE_MAIN_SERVER_API_URL', 'http://api.rusklimat.ru/v0/');
		COption::SetOptionString( $this->MODULE_ID, 'RK_EXCHANGE_MAIN_SERVER_API_FILE_FOLDER', '/upload/gateway_cache/');
		COption::SetOptionString( $this->MODULE_ID, 'RK_EXCHANGE_MAIN_BASE_CITY', '54c02fc8-7441-11e6-9430-9cb654954508');
		COption::SetOptionInt( $this->MODULE_ID, 'RK_EXCHANGE_MAIN_FILE_LIMIT', '100');
		COption::SetOptionInt( $this->MODULE_ID, 'RK_EXCHANGE_ACTIONS_MAX_ACTION', '4');
		COption::SetOptionInt( $this->MODULE_ID, 'RK_EXCHANGE_CATALOG_MEASURE', '5');
		COption::SetOptionString( $this->MODULE_ID, 'RK_EXCHANGE_MAIN_SITE', 'brands');
		
		echo CAdminMessage::ShowNote(GetMessage("RK_EXCHANGE_MODULE_INSTALL_FINISH"));
		
    }

    /**
     * Удаляем модуль
     */
    public function DoUninstall()
    {
        global $APPLICATION, $DOCUMENT_ROOT;
		CJSCore::Init(array("jquery2"));
		
        /*
         * Сессия неправильная
         */
        if (!check_bitrix_sessid()) {
            return false;
        }
		
		// удаляем файлы
		$this->UnInstallFiles();
		
		// удаляем таблицы
		$this->UnInstallDB();
		
		// удалим все агенты модуля
		$resAgents = CAgent::GetList(Array("ID" => "DESC"), array("MODULE_ID" => "rusklimat.exchange"));
		while($obAgents = $resAgents->Fetch()){
			CAgent::Delete($obAgents["ID"]);
		}
		
		ModuleManager::unregisterModule($this->MODULE_ID);
		
		echo CAdminMessage::ShowNote(GetMessage("RK_EXCHANGE_MODULE_UNINSTALL_FINISH"));

    }

    /**
     * Копируем файлы административной части
     *
     * @return bool
     */
    public function InstallFiles()
    {
        global $APPLICATION;

/*
        CopyDirFiles(
            $_SERVER["DOCUMENT_ROOT"]."/local/modules/rusklimat.exchange/install/public/ru/files/cron_events.php",
            $_SERVER["DOCUMENT_ROOT"]."/local/php_interface/cron_events.php", true
        );
*/
        CopyDirFiles(
            $_SERVER["DOCUMENT_ROOT"]."/local/modules/rusklimat.exchange/install/admin",
            $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/", $this->rewrite_module_files
        );


        /*
         * Административные иконки
         */
        CopyDirFiles(
            $_SERVER["DOCUMENT_ROOT"]."/local/modules/rusklimat.exchange/install/themes/",
            $_SERVER["DOCUMENT_ROOT"]."/local/themes/", true, true
        );


        // Папка модуля.
        mkdir($_SERVER['DOCUMENT_ROOT'].'/upload/rusklimat.exchange/');
        // Папка дял логов.
        mkdir($_SERVER['DOCUMENT_ROOT'].'/upload/rusklimat.exchange/logs/');

        return true;
    }


    /**
     * Удаляем файлы
     *
     * @return bool
     */
    public function UnInstallFiles()
    {
        DeleteDirFiles(
            $_SERVER['DOCUMENT_ROOT'].'/local/modules/rusklimat.exchange/install/admin',
            $_SERVER['DOCUMENT_ROOT'].'/bitrix/admin'
        );
        return true;
    }


    /**
     * Добавляем таблицы в БД
     *
     * @return bool
     */
    public function InstallDB()
    {
		global $DB;
		
		$sqlFileStack = 'CREATE TABLE IF NOT EXISTS `a_gateway_file_stack`(
			`HASH` varchar(255) NOT NULL,
			`DATE` datetime,
			`UPDATED` varchar(255) NOT NULL,
			`PATH` varchar(255),
			`DATE_UPDATE` datetime,
			`VERSION` varchar(255),
			`COUNT_ERROR` int(11),
			PRIMARY KEY(`HASH`)
		);';
		
		$sqlFileElement = 'CREATE TABLE IF NOT EXISTS `a_gateway_file_element`(
			`HASH`	varchar(255),
			`FILE_ID`	varchar(255),
			`ELEMENT_ID`	varchar(255),
			`DATE`	datetime,
			`SECTION_ID`	varchar(255),
			`PROPERTY_KEY`	varchar(255),
			`UPDATED`	varchar(255),
			`COUNT_ERROR`	int(11),
			PRIMARY KEY(`HASH`)
		);';
		
		$resultFileStack = $DB->Query($sqlFileStack);
		$resultFileElement = $DB->Query($sqlFileElement);
		
        return true;
    }


    /**
     * Удаляем таблицы из БД
     *
     * @return bool
     */
    public function UnInstallDB()
    {
		global $DB;
		
		$sqlFileStack = 'DROP TABLE IF EXISTS `a_gateway_file_stack`;';
		$sqlFileElement = 'DROP TABLE IF EXISTS `a_gateway_file_element`;';
		
		$resultFileStack = $DB->Query($sqlFileStack);
		$resultFileElement = $DB->Query($sqlFileElement);
		
        return true;
    }


    /**
     * Добавляем агентов
     *
     * @return bool
     */
    public function InstallAgents()
    {
        // http://dev.1c-bitrix.ru/api_help/main/reference/cagent/addagent.php

        $success = CAgent::AddAgent(
            "rusklimat.TEST::run();",
            "rusklimat.exchange",
            "N",
            86400
        );
        if (!$success) {
            return false;
        }

        return true;
    }


    /**
     * Удаляем агентов
     *
     * @return bool
     */
    public function UninstallAgents()
    {
        CAgent::RemoveModuleAgents("rusklimat.exchange");
        return true;
    }
}