Your IP : 216.73.216.86


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

<?php
#################################################
#        Company developer: IPOL
#        Developer: Nikta Egorov
#        Site: http://www.ipol.com
#        E-mail: om-sv2@mail.ru
#        Copyright (c) 2006-2012 IPOL
#################################################
?>
<?php
IncludeModuleLangFile(__FILE__); 

if(class_exists("ipol_sdek")) 
    return;
	
Class ipol_sdek extends CModule{
    var $MODULE_ID = "ipol.sdek";
    var $MODULE_NAME;
	var $MODULE_VERSION;
	var $MODULE_VERSION_DATE;
	var $MODULE_DESCRIPTION;
	var $MODULE_CSS;
	var $MODULE_GROUP_RIGHTS = "N";
        var $errors;

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

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

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

		$this->MODULE_NAME = GetMessage("IPOLSDEK_INSTALL_NAME");
		$this->MODULE_DESCRIPTION = GetMessage("IPOLSDEK_INSTALL_DESCRIPTION");
        
        $this->PARTNER_NAME = "Ipol";
        $this->PARTNER_URI = "http://www.ipolh.com";
	}

    /**
     * Returns mapping 'DB table name' <> 'file suffix'
     * @return string[]
     */
	protected function getDB()
    {
		return array(
            'ipol_sdek'               => 'Orders',
            'ipol_sdekcities'         => 'Cities',
            'ipol_sdeklogs'           => 'Auth',
            'ipol_sdek_courier_calls' => 'CourierCalls',
            'ipol_sdek_stores'        => 'Stores',
        );
	}
	
	function InstallDB(){
		global $DB, $DBType, $APPLICATION;
		$this->errors = false;

		$arDB = $this->getDB();

		foreach($arDB as $name => $path)
			if(!$DB->Query("SELECT 'x' FROM ".$name, true)){
				$this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/".$this->MODULE_ID."/install/db/mysql/install".$path.".sql");
				if($this->errors !== false){
					$APPLICATION->ThrowException(implode("", $this->errors));
					return false;
				}
			}

		return true;
	}

	function UnInstallDB($preserveOrders = false){
		global $DB, $DBType, $APPLICATION;
		$this->errors = false;

		$arDB = $this->getDB();

		foreach($arDB as $name => $path){
			if($name != 'ipol_sdek' || !$preserveOrders){
				$this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/".$this->MODULE_ID."/install/db/mysql/unInstall".$path.".sql");
				if(!empty($this->errors)){
					$APPLICATION->ThrowException(implode("", $this->errors));
					return false;
				}
			}
		}

		return true;
	}

	function InstallEvents(){
		//all events sets in /classes/general/sdekhelper.php ������� auth
		return true;
	}
	function UnInstallEvents() {
		UnRegisterModuleDependences("main", "OnEpilog", $this->MODULE_ID, "sdekdriver", "onEpilog");
		UnRegisterModuleDependences("main", "OnEndBufferContent", $this->MODULE_ID, "CDeliverySDEK", "onBufferContent");
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepDelivery", $this->MODULE_ID, "CDeliverySDEK", "pickupLoader");
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepProcess", $this->MODULE_ID, "CDeliverySDEK", "loadComponent");
		UnRegisterModuleDependences("main", "OnAdminListDisplay", $this->MODULE_ID, "sdekdriver", "displayActPrint"); // ������
		UnRegisterModuleDependences("main", "OnBeforeProlog", $this->MODULE_ID, "sdekdriver", "OnBeforePrologHandler");
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepComplete", $this->MODULE_ID, "sdekdriver", "orderCreate"); // �������� ������
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepPaySystem", $this->MODULE_ID, "CDeliverySDEK", "checkNalD2P");
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepDelivery", $this->MODULE_ID, "CDeliverySDEK", "checkNalP2D");
		return true;
	}

	function InstallFiles(){
		CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/images/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/".$this->MODULE_ID, true, true);
		CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/js/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/js/".$this->MODULE_ID, true, true);
        CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/admin/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin", true, true);
        CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/themes/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes", true, true);
		CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/components/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components/", true, true);
		return true;
	}

	function UnInstallFiles(){
		DeleteDirFilesEx("/bitrix/js/".$this->MODULE_ID);
		if(file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/tools/'.$this->MODULE_ID))
			DeleteDirFilesEx("/bitrix/tools/".$this->MODULE_ID);
		DeleteDirFilesEx("/bitrix/images/".$this->MODULE_ID);

        if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/admin/")) {
            $adminFiles = scandir($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/admin/");
            foreach ($adminFiles as $file) {
                if (strlen($file) > 2 && strpos($file, '.')) {
                    unlink($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/".$file);
                }
            }
        }

        if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/themes/")) {
            $adminFiles = scandir($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/themes/.default/");
            foreach ($adminFiles as $file) {
                if (strlen($file) > 2 && strpos($file, '.')) {
                    unlink($_SERVER["DOCUMENT_ROOT"]."/bitrix/themes/.default/".$file);
                }
            }
        }

		DeleteDirFilesEx("/bitrix/php_interface/include/sale_delivery/delivery_sdek.php");
		DeleteDirFilesEx("/bitrix/components/ipol/ipol.sdekPickup");
		DeleteDirFilesEx("/upload/".$this->MODULE_ID);
		$arrayOfFiles=scandir($_SERVER['DOCUMENT_ROOT'].'/bitrix/components/ipol');
		$flagForDelete=true;
		foreach($arrayOfFiles as $element){
			if(strlen($element)>2)
				$flagForDelete=false;
		}
		if($flagForDelete)
			DeleteDirFilesEx("/bitrix/components/ipol");
		return true;
	}
	
    function DoInstall(){
        global $DB, $APPLICATION, $step;
		$this->errors = false;

        if(!function_exists('curl_init'))
        {
            $GLOBALS['IPOL_SDEK_LBL_INSTALL_ERROR'] = GetMessage('IPOLSDEK_NOCURL');
        }elseif(!cmodule::includeModule('sale')){
            $GLOBALS['IPOL_SDEK_LBL_INSTALL_ERROR'] = GetMessage('IPOLSDEK_NOSALE');
        }

        if($GLOBALS['IPOL_SDEK_LBL_INSTALL_ERROR'])
        {
            $GLOBALS['APPLICATION']->IncludeAdminFile(GetMessage('IPOL_SDEK_INSTALL_ERROR_TITLE'), __DIR__ .'/error.php');

            return;
        }
		
		$this->InstallDB();
		$this->InstallEvents();
		$this->InstallFiles();
		
		RegisterModule($this->MODULE_ID);
		
        $APPLICATION->IncludeAdminFile(GetMessage("IPOLSDEK_INSTALL"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/step1.php");
    }

    function DoUninstall(){
        global $DB, $APPLICATION, $step;
		$this->errors = false;
		
		if($_REQUEST['step'] < 2){
			$this->ShowDataSaveForm();
		}elseif($_REQUEST['step'] == 2){
			COption::SetOptionString($this->MODULE_ID,'logged',false);
			 
			$this->UnInstallDB($_REQUEST['savedata']);
			$this->UnInstallFiles();
			$this->UnInstallEvents();
			
			CAgent::RemoveModuleAgents('ipol.sdek');
			
			UnRegisterModule($this->MODULE_ID);
			$APPLICATION->IncludeAdminFile(GetMessage("IPOLSDEK_DEL"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/unstep1.php");
		}
    }
	
	private function ShowDataSaveForm() {
		$keys = array_keys($GLOBALS);
		for ($i = 0; $i < count($keys); $i++) {
			if ($keys[$i] != 'i' && $keys[$i] != 'GLOBALS' && $keys[$i] != 'strTitle' && $keys[$i] != 'filepath') {
				global ${$keys[$i]};
			}
		}

		$APPLICATION->SetTitle(GetMessage('IPOLSDEK_DEL'));
		include($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php');
		?>
		<form action="<?= $APPLICATION->GetCurPage() ?>" method="get">
			<?= bitrix_sessid_post();?>
			<input type="hidden" name="lang" value="<?= LANG ?>" />
			<input type="hidden" name="id" value="<?= $this->MODULE_ID ?>" />
			<input type="hidden" name="uninstall" value="Y" />
			<input type="hidden" name="step" value="2" />
        <?php CAdminMessage::ShowMessage(GetMessage('IPOLSDEK_PRESERVE_TABLES')) ?>
			<p><?php echo GetMessage('MOD_UNINST_SAVE')?></p>
			 <p><input type="checkbox" name="savedata" id="savedata" value="Y" checked="checked" /><label for="savedata"><?php echo GetMessage('MOD_UNINST_SAVE_TABLES')?></label><br /></p>
			<input type="submit" name="inst" value="<?php echo GetMessage('MOD_UNINST_DEL');?>" />
		</form>
      <?php
		include($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');
		die();
	}
}
?>