%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.216.182.53 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/install/components/bitrix/sale.crm.site.master/tools/ |
Upload File : |
<?php namespace Bitrix\Sale\CrmSiteMaster\Tools; if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } use Bitrix\Main, Bitrix\Main\Config\Option, Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); /** * Class ModuleChecker * @package Bitrix\Sale\CrmSiteMaster\Tools */ class ModuleChecker { const IS_MODULE_INSTALL = "~IS_MODULE_INSTALL"; private $modulesRequired = []; /** * ModuleChecker constructor. * @param array $modulesRequired */ public function setRequiredModules(array $modulesRequired) { $this->modulesRequired = $modulesRequired; } /** * @return array */ public function getRequiredModules() { return $this->modulesRequired; } /** * Check existence of required modules * * @return array */ public function getNotExistModules() { $notExistModule = []; foreach ($this->modulesRequired as $moduleName => $moduleData) { if (!Main\IO\Directory::isDirectoryExists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$moduleName)) { $notExistModule[$moduleName] = $moduleData; } } return $notExistModule; } /** * Check availability of required modules * * @param array $notExistModule * @return array */ public function checkAvailableModules($notExistModule) { $result = [ "MODULES" => [], "ERROR" => [] ]; $moduleList = $this->getUpdatesList(); $result["MODULES"] = array_diff(array_keys($notExistModule), $moduleList["MODULES"]); $result["ERROR"] = $moduleList["ERROR"]; return $result; } /** * Checks required modules */ public function checkInstalledModules() { $result = [ "NOT_INSTALL" => [], "MIN_VERSION" => [] ]; foreach ($this->modulesRequired as $moduleName => $moduleData) { if (Main\ModuleManager::getVersion($moduleName) === false) { $result["NOT_INSTALL"][$moduleName] = $moduleData; } $version = $this->getModuleVersion($moduleName); if ($version !== false && !empty($moduleData["version"]) && (version_compare($version, $moduleData["version"]) === -1)) { $result["MIN_VERSION"][$moduleName] = [ "NAME" => $moduleData["name"], "REQUIRED_VERSION" => $moduleData["version"], "CURRENT_VERSION" => $version, ]; } } return $result; } /** * @param $moduleName * @return bool|mixed|string */ private function getModuleVersion($moduleName) { $moduleName = preg_replace("/[^a-zA-Z0-9_.]+/i", "", trim($moduleName)); if ($moduleName == '') return false; if ($moduleName === "main") { if (!defined("SM_VERSION")) { include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/version.php"); } $version = SM_VERSION; } else { $modulePath = getLocalPath("modules/".$moduleName."/install/version.php"); if ($modulePath === false) return false; $arModuleVersion = array(); include($_SERVER["DOCUMENT_ROOT"].$modulePath); $version = (array_key_exists("VERSION", $arModuleVersion)? $arModuleVersion["VERSION"] : false); } return $version; } /** * Get modules for update * * @return array */ private function getUpdatesList() { $result = [ "MODULES" => [], "ERROR" => [] ]; try { $stableVersionsOnly = Option::get("main", "stable_versions_only", "N"); } catch (\Exception $ex) { $stableVersionsOnly = "N"; } $errorMessage = ""; if ($arUpdateList = \CUpdateClient::GetUpdatesList($errorMessage, LANGUAGE_ID, $stableVersionsOnly)) { if (isset($arUpdateList["ERROR"])) { /** @noinspection PhpVariableNamingConventionInspection */ for ($i = 0, $cnt = count($arUpdateList["ERROR"]); $i < $cnt; $i++) { if ( ($arUpdateList["ERROR"][$i]["@"]["TYPE"] != "RESERVED_KEY") && ($arUpdateList["ERROR"][$i]["@"]["TYPE"] != "NEW_UPDATE_SYSTEM") ) { $errorMessage .= "[".$arUpdateList["ERROR"][$i]["@"]["TYPE"]."] ".$arUpdateList["ERROR"][$i]["#"]; } elseif ($arUpdateList["ERROR"][$i]["@"]["TYPE"] == "NEW_UPDATE_SYSTEM") { $errorMessage .= Loc::getMessage("SALE_CSM_WIZARD_MODULECHECKER_UPDATE_SYSTEM_HINT"); } else { $errorMessage .= Loc::getMessage("SALE_CSM_WIZARD_MODULECHECKER_RESERVED_KEY_HINT"); } } } elseif (isset($arUpdateList["MODULES"][0]["#"]["MODULE"])) { /** @noinspection PhpVariableNamingConventionInspection */ for ($i = 0, $cnt = count($arUpdateList["MODULES"][0]["#"]["MODULE"]); $i < $cnt; $i++) { $arModuleTmp = $arUpdateList["MODULES"][0]["#"]["MODULE"][$i]; $moduleId = $arModuleTmp["@"]["ID"]; $result["MODULES"][] = $moduleId; } } } if ($errorMessage) { $result["ERROR"] = $errorMessage; } return $result; } /** * @throws Main\ArgumentOutOfRangeException */ public function setInstallStatus() { Option::set("sale", self::IS_MODULE_INSTALL, "Y"); } /** * @return bool * @throws Main\ArgumentNullException * @throws Main\ArgumentOutOfRangeException */ public function isModuleInstall() { return Option::get("sale", self::IS_MODULE_INSTALL, "N") === "Y"; } /** * @throws Main\ArgumentNullException */ public function deleteInstallStatus() { Option::delete("sale", ["name" => self::IS_MODULE_INSTALL]); } }