FEAT: Add checks to prevent re-registering Smarty plugins

This commit is contained in:
2025-11-19 13:43:08 +01:00
parent 5d80babd5a
commit 3a0468879f
2 changed files with 44 additions and 8 deletions

View File

@ -8,14 +8,48 @@ class Smarty extends AbstractHook
'actionDispatcherBefore',
];
public function hookActionDispatcherBefore(): void
public function hookActionDispatcherBefore(): void
{
$this->context->smarty->registerPlugin('function', 'generateImagesSources', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImagesSources']);
$this->context->smarty->registerPlugin('function', 'generateImageSvgPlaceholder', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImageSvgPlaceholder']);
$this->context->smarty->registerPlugin('function', 'appendParamToUrl', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'appendParamToUrl']);
$this->context->smarty->registerPlugin('block', 'images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'imagesBlock']);
$this->context->smarty->registerPlugin('block', 'cms_images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'cmsImagesBlock']);
$this->context->smarty->registerPlugin('block', 'display_mobile', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayMobileBlock']);
$this->context->smarty->registerPlugin('block', 'display_desktop', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayDesktopBlock']);
if (!isset($this->context->smarty->registered_plugins['function']['generateImagesSources'])) {
$this->context->smarty->registerPlugin('function', 'generateImagesSources', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImagesSources']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['function']['generateImageSvgPlaceholder'])) {
$this->context->smarty->registerPlugin('function', 'generateImageSvgPlaceholder', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImageSvgPlaceholder']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['function']['appendParamToUrl'])) {
$this->context->smarty->registerPlugin('function', 'appendParamToUrl', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'appendParamToUrl']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['block']['images_block'])) {
$this->context->smarty->registerPlugin('block', 'images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'imagesBlock']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['block']['cms_images_block'])) {
$this->context->smarty->registerPlugin('block', 'cms_images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'cmsImagesBlock']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['block']['display_mobile'])) {
$this->context->smarty->registerPlugin('block', 'display_mobile', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayMobileBlock']);
} else {
return;
}
if (!isset($this->context->smarty->registered_plugins['block']['display_desktop'])) {
$this->context->smarty->registerPlugin('block', 'display_desktop', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayDesktopBlock']);
} else {
return;
}
}
}