local/modules/ShortCode/EventListener/ResponseListener.php line 48
<?php/** This file is part of the Thelia package.* http://www.thelia.net** (c) OpenStudio <info@thelia.net>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace ShortCode\EventListener;use Maiorano\Shortcodes\Library\SimpleShortcode;use Maiorano\Shortcodes\Manager\ShortcodeManager;use ShortCode\Event\ShortCodeEvent;use ShortCode\Model\ShortCode;use ShortCode\Model\ShortCodeQuery;use Symfony\Component\EventDispatcher\EventDispatcherInterface;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\BinaryFileResponse;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\StreamedResponse;use Symfony\Component\HttpKernel\Event\ResponseEvent;use Symfony\Component\HttpKernel\KernelEvents;use Thelia\Log\Tlog;class ResponseListener implements EventSubscriberInterface{/** @var EventDispatcherInterface */protected $eventDispatcher;public function __construct(EventDispatcherInterface $eventDispatcher) {$this->eventDispatcher = $eventDispatcher;}public static function getSubscribedEvents(){return [KernelEvents::RESPONSE => [['dispatchShortCodeEvents', 64]],];}public function dispatchShortCodeEvents(ResponseEvent $event): void{if ($event->getRequest()->get('disable_shortcode', 0) == 1) {return;}$response = $event->getResponse();if ($response instanceof BinaryFileResponse|| $response instanceof StreamedResponse|| $response instanceof RedirectResponse|| $response instanceof JsonResponse) {return;}$dispatcher = $this->eventDispatcher;$simpleShortCodes = [];$shortCodes = ShortCodeQuery::create()->filterByActive(1)->find();/** @var ShortCode $shortCode */foreach ($shortCodes as $shortCode) {$simpleShortCodes[$shortCode->getTag()] = new SimpleShortcode($shortCode->getTag(), null, function ($content, $attributes) use ($shortCode, $dispatcher) {$shortCodeEvent = new ShortCodeEvent($content, $attributes);$dispatcher->dispatch($shortCodeEvent, $shortCode->getEvent());return $shortCodeEvent->getResult();});}$manager = new ShortcodeManager($simpleShortCodes);$content = $response->getContent();try {$content = $manager->doShortCode($content, null, true);} catch (\Exception $exception) {Tlog::getInstance()->error($exception->getMessage());}$response->setContent($content);}}