| Server IP : 89.108.64.180 / Your IP : 216.73.217.92 Web Server : Apache/2.4.41 (Ubuntu) System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-root ( 1010) PHP Version : 8.0.30 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/fl-brief.agast.ru/wp-content/plugins/mailpoet/lib/Config/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Config;
if (!defined('ABSPATH')) exit;
use MailPoet\Twig;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Twig\Extension\DebugExtension;
use MailPoetVendor\Twig\Lexer as TwigLexer;
use MailPoetVendor\Twig\Loader\FilesystemLoader as TwigFileSystem;
class Renderer {
protected $cachePath;
protected $debuggingEnabled;
protected $renderer;
public $assetsManifestJs;
public $assetsManifestCss;
public function __construct(
bool $debuggingEnabled,
string $cachePath,
TwigFileSystem $fileSystem,
bool $autoReload = false
) {
$this->debuggingEnabled = $debuggingEnabled;
$this->cachePath = $cachePath;
$this->renderer = new TwigEnvironment(
$fileSystem,
[
'cache' => new TwigFileSystemCache($cachePath),
'debug' => $this->debuggingEnabled,
'auto_reload' => $autoReload,
]
);
$this->assetsManifestJs = $this->getAssetManifest(Env::$assetsPath . '/dist/js/manifest.json');
$this->assetsManifestCss = $this->getAssetManifest(Env::$assetsPath . '/dist/css/manifest.json');
$this->setupDebug();
$this->setupTranslations();
$this->setupFunctions();
$this->setupFilters();
$this->setupHandlebars();
$this->setupAnalytics();
$this->setupGlobalVariables();
$this->setupSyntax();
}
public function getTwig(): TwigEnvironment {
return $this->renderer;
}
public function setupTranslations() {
$this->renderer->addExtension(new Twig\I18n(Env::$pluginName));
}
public function setupFunctions() {
$this->renderer->addExtension(new Twig\Functions());
}
public function setupFilters() {
$this->renderer->addExtension(new Twig\Filters());
}
public function setupHandlebars() {
$this->renderer->addExtension(new Twig\Handlebars());
}
public function setupAnalytics() {
$this->renderer->addExtension(new Twig\Analytics());
}
public function setupGlobalVariables() {
$this->renderer->addExtension(
new Twig\Assets(
[
'version' => Env::$version,
'assets_url' => Env::$assetsUrl,
'assets_manifest_js' => $this->assetsManifestJs,
'assets_manifest_css' => $this->assetsManifestCss,
],
WPFunctions::get()
)
);
}
public function setupSyntax() {
$lexer = new TwigLexer($this->renderer, [
'tag_comment' => ['<#', '#>'],
'tag_block' => ['<%', '%>'],
'tag_variable' => ['<%=', '%>'],
'interpolation' => ['%{', '}'],
]);
$this->renderer->setLexer($lexer);
}
public function setupDebug() {
if ($this->debuggingEnabled) {
$this->renderer->addExtension(new DebugExtension());
}
}
public function render($template, $context = []) {
try {
$loaded = $this->renderer->load($template);
// schedule "after_javascript" block to be printed only after other scripts
if ($loaded->hasBlock('after_javascript')) {
$afterJs = $loaded->renderBlock('after_javascript', $context);
WPFunctions::get()->addAction('admin_print_footer_scripts', function () use ($afterJs): void {
// This is content is generated by Twig.
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, WordPressDotOrg.sniffs.OutputEscaping.UnescapedOutputParameter
echo $afterJs;
});
}
return $loaded->render($context);
} catch (\RuntimeException $e) {
throw new \Exception(sprintf(
// translators: %1$s is the name of the render, %2$s the folder path, %3$s the error message.
__('Failed to render template "%1$s". Please ensure the template cache folder "%2$s" exists and has write permissions. Terminated with error: "%3$s"', 'mailpoet'),
$template,
$this->cachePath,
$e->getMessage()
));
}
}
public function getAssetManifest($manifestFile) {
if (is_readable($manifestFile)) {
$contents = file_get_contents($manifestFile);
if (is_string($contents)) {
return json_decode($contents, true);
}
}
return false;
}
public function getJsAsset($asset) {
return (!empty($this->assetsManifestJs[$asset])) ?
$this->assetsManifestJs[$asset] :
$asset;
}
public function getCssAsset($asset) {
return (!empty($this->assetsManifestCss[$asset])) ?
$this->assetsManifestCss[$asset] :
$asset;
}
}