Your IP : 3.143.239.86


Current Path : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/imaginweb.sms/install/
Upload File :
Current File : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/imaginweb.sms/install/index.php

<?
IncludeModuleLangFile(__FILE__);

Class imaginweb_sms extends CModule{
	
	const MODULE_ID = "imaginweb.sms";
	var $MODULE_ID = "imaginweb.sms";
	var $MODULE_VERSION;
	var $MODULE_VERSION_DATE;
	var $MODULE_NAME;
	var $MODULE_DESCRIPTION;
	var $MODULE_CSS;
	var $strError = '';
	var $MODULE_GROUP_RIGHTS = "Y";
	
	function __construct(){
		
		$arModuleVersion = array();
		include(dirname(__FILE__)."/version.php");
		$this->MODULE_VERSION = $arModuleVersion["VERSION"];
		$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
		$this->MODULE_NAME = GetMessage("imaginweb.sms_MODULE_NAME");
		$this->MODULE_DESCRIPTION = GetMessage("imaginweb.sms_MODULE_DESC");
		$this->PARTNER_NAME = GetMessage("imaginweb.sms_PARTNER_NAME");
		$this->PARTNER_URI = GetMessage("imaginweb.sms_PARTNER_URI");
	}
	
	function InstallDB($arParams = array()){
		
		global $DB, $DBType, $APPLICATION;
		$this->errors = false;
		
		// Database tables creation
		if(!$DB->Query("SELECT 'x' FROM iwebsms_list_rubric WHERE 1=0", true)){
			$this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/db/".$DBType."/install.sql");
		}

		if($this->errors !== false){
			$APPLICATION->ThrowException(implode("<br>", $this->errors));
			return false;
		}
		else{
			RegisterModule(self::MODULE_ID);
			CModule::IncludeModule(self::MODULE_ID);
			
			RegisterModuleDependences("sale", "OnSaleComponentOrderOneStepComplete", self::MODULE_ID, "CImaginwebSms", "OnSaleComponentOrderOneStepCompleteHandler");
			RegisterModuleDependences("sale", "OnSaleComponentOrderComplete", self::MODULE_ID, "CImaginwebSms", "OnSaleComponentOrderCompleteHandler");
			RegisterModuleDependences("sale", "OnSalePayOrder", self::MODULE_ID, "CImaginwebSms", "OnSalePayOrderHandler");
			RegisterModuleDependences("sale", "OnSaleDeliveryOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleDeliveryOrderHandler");
			RegisterModuleDependences("sale", "OnSaleCancelOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleCancelOrderHandler");
			RegisterModuleDependences("sale", "OnSaleStatusOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleStatusOrderHandler");
			
			RegisterModuleDependences("main", "OnBeforeUserRegister", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserRegisterHandler");
			RegisterModuleDependences("main", "OnBeforeUserSimpleRegister", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserSimpleRegisterHandler");
			RegisterModuleDependences("main", "OnBeforeUserUpdate", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserUpdateHandler");
			RegisterModuleDependences("main", "OnBeforeUserAdd", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserAddHandler");
			
			RegisterModuleDependences("main", "OnBeforeLangDelete", self::MODULE_ID, "SMSCRubric", "OnBeforeLangDelete");
			RegisterModuleDependences("main", "OnUserDelete", self::MODULE_ID, "SMSCSubscription", "OnUserDelete");
			RegisterModuleDependences("main", "OnUserLogout", self::MODULE_ID, "SMSCSubscription", "OnUserLogout");
			RegisterModuleDependences("main", "OnGroupDelete", self::MODULE_ID, "SMSCPosting", "OnGroupDelete");
			
			CAgent::RemoveAgent("SMSCSubscription::CleanUp();", self::MODULE_ID);
            if(class_exists("CTimeZone")){
				CTimeZone::Disable();
            }
			CAgent::Add(
				array(
					"NAME" => "SMSCSubscription::CleanUp();",
					"MODULE_ID" => self::MODULE_ID,
					"ACTIVE" => "Y",
					"NEXT_EXEC" => date("d.m.Y H:i:s", mktime(3, 0, 0, date("m"), date("j") + 1, date("Y"))),
					"AGENT_INTERVAL" => 86400,
					"IS_PERIOD" => "Y"
				)
			);
            if(class_exists("CTimeZone")){
				CTimeZone::Enable();
            }
			
			$dbUserField = CUserTypeEntity::GetList(
				array(
					"SORT" => "ASC"
				),
				array(
					"FIELD_NAME" => "UF_IWEB_SMS_PASSWORD"
				)
			);
			if(!$dbUserField->Fetch()){
				$ob = new CUserTypeEntity();
				$arFields = array(
					"ENTITY_ID" => "USER",
					"FIELD_NAME" => "UF_IWEB_SMS_PASSWORD",
					"USER_TYPE_ID" => "string",
					"XML_ID" => "",
					"SORT" => 100,
					"MULTIPLE" => "N",
					"MANDATORY" => "N",
					"SHOW_FILTER" => "N",
					"SHOW_IN_LIST" => "Y",
					"EDIT_IN_LIST" => "Y",
					"IS_SEARCHABLE" => "N"
				);
				$FIELD_ID = $ob->Add($arFields);
			}
			
			return true;
		}
	}
	
	function UnInstallDB($arParams = array()){
		global $DB, $DBType, $APPLICATION;
		$this->errors = false;

		if(!array_key_exists("save_tables", $arParams) || ($arParams["save_tables"] != "Y")){
			$this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/db/".$DBType."/uninstall.sql");
			$strSql = "SELECT ID FROM b_file WHERE MODULE_ID='".self::MODULE_ID."'";
			$rsFile = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			while($arFile = $rsFile->Fetch()){
				CFile::Delete($arFile["ID"]);
			}
		}
		
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderOneStepComplete", self::MODULE_ID, "CImaginwebSms", "OnSaleComponentOrderOneStepCompleteHandler");
		UnRegisterModuleDependences("sale", "OnSaleComponentOrderComplete", self::MODULE_ID, "CImaginwebSms", "OnSaleComponentOrderCompleteHandler");
		UnRegisterModuleDependences("sale", "OnSalePayOrder", self::MODULE_ID, "CImaginwebSms", "OnSalePayOrderHandler");
		UnRegisterModuleDependences("sale", "OnSaleDeliveryOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleDeliveryOrderHandler");
		UnRegisterModuleDependences("sale", "OnSaleCancelOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleCancelOrderHandler");
		UnRegisterModuleDependences("sale", "OnSaleStatusOrder", self::MODULE_ID, "CImaginwebSms", "OnSaleStatusOrderHandler");
		
		UnRegisterModuleDependences("main", "OnBeforeUserRegister", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserRegisterHandler");
		UnRegisterModuleDependences("main", "OnBeforeUserSimpleRegister", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserSimpleRegisterHandler");
		UnRegisterModuleDependences("main", "OnBeforeUserUpdate", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserUpdateHandler");
		UnRegisterModuleDependences("main", "OnBeforeUserAdd", self::MODULE_ID, "CImaginwebSms", "OnBeforeUserAddHandler");

		UnRegisterModuleDependences("main", "OnBeforeLangDelete", self::MODULE_ID, "SMSCRubric", "OnBeforeLangDelete");
		UnRegisterModuleDependences("main", "OnUserDelete", self::MODULE_ID, "SMSCSubscription", "OnUserDelete");
		UnRegisterModuleDependences("main", "OnGroupDelete", self::MODULE_ID, "SMSCPosting", "OnGroupDelete");
		UnRegisterModuleDependences("main", "OnUserLogout", self::MODULE_ID, "SMSCSubscription", "OnUserLogout");
		
		UnRegisterModule(self::MODULE_ID);

		if($this->errors !== false){
			$APPLICATION->ThrowException(implode("<br>", $this->errors));
			return false;
		}
		return true;
	}
	
	function InstallEvents(){
		
		return true;
	}
	
	function UnInstallEvents(){
		
		return true;
	}
	
	function InstallFiles($arParams = array()){
		
		if($_ENV["COMPUTERNAME"] != "BX"){
			if(is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/admin")){
				if($dir = opendir($p)){
					while(false !== $item = readdir($dir)){
						if($item == '..' || $item == '.' || $item == 'menu.php'){
							continue;
						}
						file_put_contents($file = $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/".self::MODULE_ID."_".$item, '<'.'? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/'.self::MODULE_ID.'/admin/'.$item.'");?'.'>');
					}
					closedir($dir);
				}
			}
			if(is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/components")){
				if($dir = opendir($p)){
					while(false !== $item = readdir($dir)){
						if($item == '..' || $item == '.'){
							continue;
						}
						CopyDirFiles($p."/".$item, $_SERVER["DOCUMENT_ROOT"]."/bitrix/components/".$item, $ReWrite = true, $Recursive = true);
					}
					closedir($dir);
				}
			}
			
			//CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin");
			CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/images/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/".self::MODULE_ID, false, true);
			CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/themes/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes", false, true);
			//CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/components", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", true, true);
			CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/js/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/js/".self::MODULE_ID."/js/", true, true);
		}
		return true;
	}

	function UnInstallFiles(){
		
		if($_ENV["COMPUTERNAME"] != "BX"){
			if(is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/admin")){
				if($dir = opendir($p)){
					while(false !== $item = readdir($dir)){
						if($item == '..' || $item == '.' || $item == 'menu.php'){
							continue;
						}
						unlink($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/".self::MODULE_ID.'_'.$item);
					}
					closedir($dir);
				}
			}
			if(is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/components")){
				if($dir = opendir($p)){
					while(false !== $item = readdir($dir)){
						if($item == '..' || $item == '.' || !is_dir($p0 = $p.'/'.$item)){
							continue;
						}
						$dir0 = opendir($p0);
						while(false !== $item0 = readdir($dir0)){
							if($item0 == '..' || $item0 == '.'){
								continue;
							}	
							DeleteDirFilesEx("/bitrix/components/".$item."/".$item0);
						}
						closedir($dir0);
					}
					closedir($dir);
				}
			}
			
			//admin files
			//DeleteDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin");
			//css
			DeleteDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/themes/.default/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes/.default");
			//icons
			DeleteDirFilesEx("/bitrix/themes/.default/icons/".self::MODULE_ID."/");
			//images
			DeleteDirFilesEx("/bitrix/images/".self::MODULE_ID."/");
			
		}
		return true;
	}

	function DoInstall(){
		
		global $DB, $DOCUMENT_ROOT, $APPLICATION, $step;
		$POST_RIGHT = $APPLICATION->GetGroupRight(self::MODULE_ID);
		if($POST_RIGHT == "W"){
			
			$step = IntVal($step);
			if($step < 2){
				$APPLICATION->IncludeAdminFile(GetMessage("imaginweb.sms_inst_inst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/inst1.php");
			}
			elseif($step == 2){
				if($this->InstallDB()){
					$this->InstallEvents();
					$this->InstallFiles();
				}
				$GLOBALS["errors"] = $this->errors;
				$APPLICATION->IncludeAdminFile(GetMessage("imaginweb.sms_inst_inst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/inst2.php");
			}
		}
	}

	function DoUninstall(){
		
		global $DB, $DOCUMENT_ROOT, $APPLICATION, $step;
		$POST_RIGHT = $APPLICATION->GetGroupRight(self::MODULE_ID);
		if($POST_RIGHT == "W"){
			$step = IntVal($step);
			if($step < 2){
				$APPLICATION->IncludeAdminFile(GetMessage("imaginweb.sms_inst_uninst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/uninst1.php");
			}
			elseif($step == 2){
				$this->UnInstallDB(array(
					"save_tables" => $_REQUEST["save_tables"],
				));
				$this->UnInstallEvents();
				$this->UnInstallFiles();
				$GLOBALS["errors"] = $this->errors;
				$APPLICATION->IncludeAdminFile(GetMessage("imaginweb.sms_inst_uninst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".self::MODULE_ID."/install/uninst2.php");
			}
		}
	}
	
}
?>