![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/plugins/MauticFocusBundle/EventListener/ |
<?php namespace MauticPlugin\MauticFocusBundle\EventListener; use Mautic\CoreBundle\Helper\BuilderTokenHelperFactory; use Mautic\CoreBundle\Security\Permissions\CorePermissions; use Mautic\PageBundle\Event\PageBuilderEvent; use Mautic\PageBundle\Event\PageDisplayEvent; use Mautic\PageBundle\PageEvents; use MauticPlugin\MauticFocusBundle\Model\FocusModel; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Routing\RouterInterface; class PageSubscriber implements EventSubscriberInterface { private string $regex = '{focus=(.*?)}'; public function __construct( private CorePermissions $security, private FocusModel $model, private RouterInterface $router, private BuilderTokenHelperFactory $builderTokenHelperFactory ) { } public static function getSubscribedEvents(): array { return [ PageEvents::PAGE_ON_DISPLAY => ['onPageDisplay', 0], PageEvents::PAGE_ON_BUILD => ['onPageBuild', 0], ]; } /** * Add forms to available page tokens. */ public function onPageBuild(PageBuilderEvent $event): void { if ($event->tokensRequested($this->regex)) { $tokenHelper = $this->builderTokenHelperFactory->getBuilderTokenHelper('focus', $this->model->getPermissionBase(), 'MauticFocusBundle', 'mautic.focus'); $event->addTokensFromHelper($tokenHelper, $this->regex, 'name'); } } public function onPageDisplay(PageDisplayEvent $event): void { $content = $event->getContent(); $regex = '/'.$this->regex.'/i'; preg_match_all($regex, $content, $matches); if (count($matches[0])) { foreach ($matches[1] as $id) { $focus = $this->model->getEntity($id); if (null !== $focus && ( $focus->isPublished() || $this->security->hasEntityAccess( 'focus:items:viewown', 'focus:items:viewother', $focus->getCreatedBy() ) ) ) { $script = '<script src="'.$this->router->generate('mautic_focus_generate', ['id' => $id], \Symfony\Component\Routing\Generator\UrlGeneratorInterface::ABSOLUTE_URL) .'" type="text/javascript" charset="utf-8" async="async"></script>'; $content = preg_replace('#{focus='.$id.'}#', $script, $content); } else { $content = preg_replace('#{focus='.$id.'}#', '', $content); } } } $event->setContent($content); } }