Your IP : 3.137.222.170
<?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;
}
}