* Date: 05/03/2016 18:11 */ namespace SliderRevolution\Hook; use Propel\Runtime\ActiveQuery\Criteria; use Propel\Runtime\Propel; use SliderRevolution\Model\SliderAssociationQuery; use SliderRevolution\SliderRevolution; use Thelia\Core\Event\Hook\HookRenderEvent; use Thelia\Core\Hook\BaseHook; require_once __DIR__ . "/../../../../web/revslider/embed_thelia.php"; class FrontHookManager extends BaseHook { private $jsCode = ''; public function onMainStylesheet(HookRenderEvent $event) { if (null !== SliderRevolution::getConfigValue(SliderRevolution::SLIDER_ID)) { $event->add( \RevSliderEmbedder::cssIncludes(false) ); } } public function onMainJavascriptInitialization(HookRenderEvent $event) { if (null !== SliderRevolution::getConfigValue(SliderRevolution::SLIDER_ID)) { $event->add( \RevSliderEmbedder::jsIncludes(false, false) . $this->jsCode ); } } public function onMainContentTop(HookRenderEvent $event) { $view = $this->getView(); if ($this->isAcceptedView($view)) { if ($view === "index") { if (null !== $slider = SliderRevolution::getConfigValue(SliderRevolution::SLIDER_ID)) { if ($this->getRequest()->getSession()->getLang()->getLocale() === "en_US") { $event->add( \RevSliderEmbedder::putRevSlider($slider . "_en", '', $this->jsCode) ); } else { $event->add( \RevSliderEmbedder::putRevSlider($slider, '', $this->jsCode) ); } } } else { if (null !== $sliderAssoc = SliderAssociationQuery::create() ->filterByObjectType($view) ->filterByObjectId( $this->getRequest()->get($view . '_id')) ->filterBySliderAlias('', Criteria::NOT_EQUAL) ->findOne()) { $alias = $sliderAssoc->getSliderAlias(); /* TheCoreDev le 26/02/2020 : Si on est en langue anglaise, on recherche s'il existe un slider avec le même alias, mais suffixé par "_en" */ if ($this->getRequest()->getSession()->getLang()->getLocale() === "en_US") { $conn = Propel::getConnection('thelia'); $aliasEn = $sliderAssoc->getSliderAlias() . '_en'; $sql = str_replace('%', $aliasEn, "SELECT ID FROM revslider_sliders WHERE alias = '%'"); $statement = $conn->query($sql); if (($statement && $row = $statement->fetch(\PDO::FETCH_ASSOC))) { $alias = $aliasEn; } $event->add( \RevSliderEmbedder::putRevSlider($alias, '', $this->jsCode) ); } else { $event->add( \RevSliderEmbedder::putRevSlider($alias, '', $this->jsCode) ); } } } } } protected function isAcceptedView($view) { $acceptedViews = [ 'category', 'product', 'folder', 'content', 'brand', 'index' ]; return in_array($view, $acceptedViews); } }