diff --git a/extensions/modules/site/mod_redslider/helper.php b/extensions/modules/site/mod_redslider/helper.php index f4bb053..ef51e04 100644 --- a/extensions/modules/site/mod_redslider/helper.php +++ b/extensions/modules/site/mod_redslider/helper.php @@ -67,6 +67,11 @@ public static function getSlides($galleryId) $dispatcher = RFactory::getDispatcher(); JPluginHelper::importPlugin('redslider_sections'); + $dispatcher->trigger( + 'onBeforePrepareRedSliderTemplateContent', + [$slides] + ); + foreach ($slides as $slide) { $params = new Registry($slide->params); @@ -91,7 +96,7 @@ public static function getSlides($galleryId) $slide->class = $class; } - $results = $dispatcher->trigger('onPrepareTemplateContent', array($slide->template_content, &$slide)); + $results = $dispatcher->trigger('onPrepareTemplateContent', array($slide->template_content, $slide)); $results = array_values(array_filter($results)); $templateContent = ''; diff --git a/extensions/plugins/redslider_addons/aesir_dam/aesir_dam.php b/extensions/plugins/redslider_addons/aesir_dam/aesir_dam.php index e5ad1d3..1a960a9 100644 --- a/extensions/plugins/redslider_addons/aesir_dam/aesir_dam.php +++ b/extensions/plugins/redslider_addons/aesir_dam/aesir_dam.php @@ -29,6 +29,68 @@ class PlgRedslider_AddonsAesir_Dam extends CMSPlugin */ protected $autoloadLanguage = true; + /** + * @var Registry + */ + protected $blankRegistry; + + /** + * @param object $subject Subject + * @param array $config Config + */ + public function __construct(&$subject, $config = []) + { + parent::__construct($subject, $config); + $this->blankRegistry = new Registry; + } + + /** + * @param array $sliders Sliders + * + * @return void + * @since __DEPLOY_VERSION__ + */ + public function onBeforePrepareRedSliderTemplateContent(array $sliders): void + { + $dams = []; + + foreach ($sliders as $slide) + { + $params = (clone $this->blankRegistry) + ->loadString($slide->params); + + if ($params->get('file_source') !== 'dam' + || empty($params->get('dam'))) + { + continue; + } + + $dam = json_decode($params->get('dam'), true); + + if (empty($dam[0]['id'])) + { + return; + } + + $dams[] = $dam[0]['id']; + } + + if (empty($dams)) + { + return; + } + + RModel::getAdminInstance('assets', [], 'com_aesir_dam') + ->searchCollection( + [ + 'filter.id' => $dams, + ], + [ + 'viewports', + ] + ); + } + /** * @param string $content Content * @param object $slide Slide @@ -38,7 +100,8 @@ class PlgRedslider_AddonsAesir_Dam extends CMSPlugin */ public function onPrepareTemplateContent($content, $slide) { - $params = new Registry($slide->params); + $params = (clone $this->blankRegistry) + ->loadString($slide->params); if (!empty($slide->background)) {