MODULE_VERSION = $arModuleVersion["VERSION"]; $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"]; } else { $this->MODULE_VERSION = SUBSCRIBE_VERSION; $this->MODULE_VERSION_DATE = SUBSCRIBE_VERSION_DATE; } $this->MODULE_NAME = GetMessage("inst_module_name"); $this->MODULE_DESCRIPTION = GetMessage("inst_module_desc"); $this->MODULE_CSS = "/bitrix/modules/subscribe/styles.css"; } function InstallDB($arParams = array()) { global $DB, $DBType, $APPLICATION; $this->errors = false; // Database tables creation if(!$DB->Query("SELECT 'x' FROM b_list_rubric WHERE 1=0", true)) { $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/db/".$DBType."/install.sql"); } if($this->errors !== false) { $APPLICATION->ThrowException(implode("
", $this->errors)); return false; } else { RegisterModule("subscribe"); CModule::IncludeModule("subscribe"); RegisterModuleDependences("main", "OnBeforeLangDelete", "subscribe", "CRubric", "OnBeforeLangDelete"); RegisterModuleDependences("main", "OnUserDelete", "subscribe", "CSubscription", "OnUserDelete"); RegisterModuleDependences("main", "OnUserLogout", "subscribe", "CSubscription", "OnUserLogout"); RegisterModuleDependences("main", "OnGroupDelete", "subscribe", "CPosting", "OnGroupDelete"); RegisterModuleDependences("sender", "OnConnectorList", "subscribe", "Bitrix\\Subscribe\\SenderEventHandler", "onConnectorListSubscriber"); RegisterModuleDependences("perfmon", "OnGetTableSchema", "subscribe", "subscribe", "OnGetTableSchema"); //agents CAgent::RemoveAgent("CSubscription::CleanUp();", "subscribe"); CTimeZone::Disable(); CAgent::Add(array( "NAME"=>"CSubscription::CleanUp();", "MODULE_ID"=>"subscribe", "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" )); CTimeZone::Enable(); 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/subscribe/install/db/".$DBType."/uninstall.sql"); $strSql = "SELECT ID FROM b_file WHERE MODULE_ID='subscribe'"; $rsFile = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); while($arFile = $rsFile->Fetch()) CFile::Delete($arFile["ID"]); } UnRegisterModuleDependences("main", "OnBeforeLangDelete", "subscribe", "CRubric", "OnBeforeLangDelete"); UnRegisterModuleDependences("main", "OnUserDelete", "subscribe", "CSubscription", "OnUserDelete"); UnRegisterModuleDependences("main", "OnGroupDelete", "subscribe", "CPosting", "OnGroupDelete"); UnRegisterModuleDependences("main", "OnUserLogout", "subscribe", "CSubscription", "OnUserLogout"); UnRegisterModuleDependences("sender", "OnConnectorList", "subscribe", "Bitrix\\Subscribe\\SenderEventHandler", "onConnectorListSubscriber"); UnRegisterModuleDependences("perfmon", "OnGetTableSchema", "subscribe", "subscribe", "OnGetTableSchema"); UnRegisterModule("subscribe"); if($this->errors !== false) { $APPLICATION->ThrowException(implode("
", $this->errors)); return false; } return true; } function InstallEvents() { global $DB; $sIn = "'LIST_MESSAGE','SUBSCRIBE_CONFIRM'"; $rs = $DB->Query("SELECT count(*) C FROM b_event_type WHERE EVENT_NAME IN (".$sIn.") ", false, "File: ".__FILE__."
Line: ".__LINE__); $ar = $rs->Fetch(); if($ar["C"] <= 0) { include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/events.php"); } return true; } function UnInstallEvents() { global $DB; $sIn = "'LIST_MESSAGE','SUBSCRIBE_CONFIRM'"; $DB->Query("DELETE FROM b_event_message WHERE EVENT_NAME IN (".$sIn.") ", false, "File: ".__FILE__."
Line: ".__LINE__); $DB->Query("DELETE FROM b_event_type WHERE EVENT_NAME IN (".$sIn.") ", false, "File: ".__FILE__."
Line: ".__LINE__); return true; } function InstallFiles($arParams = array()) { if($_ENV["COMPUTERNAME"]!='BX') { CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin"); CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/themes", $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes", false, true); CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/components", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", True, True); } if(array_key_exists("install_auto_templates", $arParams) && $arParams["install_auto_templates"] == "Y") { CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/php_interface", $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface", false, true); } $bReWriteAdditionalFiles = ($arParams["public_rewrite"] == "Y"); if( array_key_exists("install_public", $arParams) && ($arParams["install_public"] == "Y") && array_key_exists("public_dir", $arParams) && mb_strlen($arParams["public_dir"]) ) { $rsSite = CSite::GetList(); while ($site = $rsSite->Fetch()) { $source = $_SERVER['DOCUMENT_ROOT']."/bitrix/modules/subscribe/public/"; $target = $site['ABS_DOC_ROOT'].$site["DIR"].$arParams["public_dir"]."/"; if(file_exists($source)) { CheckDirPath($target); $dh = opendir($source); while($file = readdir($dh)) { if($file == "." || $file == "..") continue; if($bReWriteAdditionalFiles || !file_exists($target.$file)) { $fh = fopen($source.$file, "rb"); $php_source = fread($fh, filesize($source.$file)); fclose($fh); if(preg_match_all('/GetMessage\("(.*?)"\)/', $php_source, $matches)) { IncludeModuleLangFile($source.$file, $site["LANGUAGE_ID"]); foreach($matches[0] as $i => $text) { $php_source = str_replace( $text, '"'.GetMessage($matches[1][$i]).'"', $php_source ); } } $fh = fopen($target.$file, "wb"); fwrite($fh, $php_source); fclose($fh); } } } } } return true; } function UnInstallFiles() { if($_ENV["COMPUTERNAME"]!='BX') { //admin files DeleteDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin"); //css DeleteDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/themes/.default/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes/.default"); } return true; } function DoInstall() { global $DB, $DOCUMENT_ROOT, $APPLICATION, $step; $POST_RIGHT = $APPLICATION->GetGroupRight("subscribe"); if($POST_RIGHT == "W") { $step = intval($step); if($step < 2) { $APPLICATION->IncludeAdminFile(GetMessage("inst_inst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/inst1.php"); } elseif($step==2) { if($this->InstallDB()) { $this->InstallEvents(); $this->InstallFiles(array( "install_auto_templates" => $_REQUEST["install_auto_templates"], "install_public" => $_REQUEST["install_public"], "public_dir" => $_REQUEST["public_dir"], "public_rewrite" => $_REQUEST["public_rewrite"], )); } $GLOBALS["errors"] = $this->errors; $APPLICATION->IncludeAdminFile(GetMessage("inst_inst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/inst2.php"); } } } function DoUninstall() { global $DB, $DOCUMENT_ROOT, $APPLICATION, $step; $POST_RIGHT = $APPLICATION->GetGroupRight("subscribe"); if($POST_RIGHT == "W") { $step = intval($step); if($step < 2) { $APPLICATION->IncludeAdminFile(GetMessage("inst_uninst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/uninst1.php"); } elseif($step == 2) { $this->UnInstallDB(array( "save_tables" => $_REQUEST["save_tables"], )); //message types and templates if($_REQUEST["save_templates"] != "Y") { $this->UnInstallEvents(); } $this->UnInstallFiles(); $GLOBALS["errors"] = $this->errors; $APPLICATION->IncludeAdminFile(GetMessage("inst_uninst_title"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/install/uninst2.php"); } } } public function migrateToBox() { COption::SetOptionString('subscribe', 'mail_additional_parameters', ''); } public static function OnGetTableSchema() { return array( "subscribe" => array( "b_list_rubric" => array( "ID" => array( "b_subscription_rubric" => "LIST_RUBRIC_ID", "b_posting_rubric" => "LIST_RUBRIC_ID", ) ), "b_subscription" => array( "ID" => array( "b_subscription_rubric" => "SUBSCRIPTION_ID", "b_posting_email" => "SUBSCRIPTION_ID", ) ), "b_posting" => array( "ID" => array( "b_posting_email" => "POSTING_ID", "b_posting_rubric" => "POSTING_ID", "b_posting_group" => "POSTING_ID", "b_posting_file" => "POSTING_ID", ) ), ), "main" => array( "b_file" => array( "ID" => array( "b_posting_file" => "FILE_ID", ) ), "b_lang" => array( "LID" => array( "b_list_rubric" => "LID", ) ), "b_user" => array( "ID" => array( "b_subscription" => "USER_ID", "b_posting_email" => "USER_ID", ) ), "b_group" => array( "ID" => array( "b_posting_group" => "GROUP_ID", ) ), ), ); } }