vendor/heimrichhannot/contao-google-maps-bundle/src/EventSubscriber/EntityFinderSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. /*
  3.  * Copyright (c) 2022 Heimrich & Hannot GmbH
  4.  *
  5.  * @license LGPL-3.0-or-later
  6.  */
  7. namespace HeimrichHannot\GoogleMapsBundle\EventSubscriber;
  8. use Contao\ContentModel;
  9. use Contao\ModuleModel;
  10. use HeimrichHannot\GoogleMapsBundle\Model\GoogleMapModel;
  11. use HeimrichHannot\GoogleMapsBundle\Model\OverlayModel;
  12. use HeimrichHannot\UtilsBundle\Event\ExtendEntityFinderEvent;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class EntityFinderSubscriber implements EventSubscriberInterface
  15. {
  16.     public static function getSubscribedEvents()
  17.     {
  18.         return [
  19.             ExtendEntityFinderEvent::class => 'onExtendEntityFinderEvent',
  20.         ];
  21.     }
  22.     public function onExtendEntityFinderEvent(ExtendEntityFinderEvent $event): void
  23.     {
  24.         switch ($event->getTable()) {
  25.             case GoogleMapModel::getTable():
  26.                 $map GoogleMapModel::findByPk($event->getId());
  27.                 if ($map) {
  28.                     if (!$event->isOnlyText()) {
  29.                         $contentElements ContentModel::findBy(['googlemaps_map=?'], [$map->id]);
  30.                         if ($contentElements) {
  31.                             foreach ($contentElements as $contentElement) {
  32.                                 $event->addParent(ContentModel::getTable(), $contentElement->id);
  33.                             }
  34.                         }
  35.                         $frontendModules ModuleModel::findBy(['googlemaps_map=?'], [$map->id]);
  36.                         if ($frontendModules) {
  37.                             foreach ($frontendModules as $frontendModule) {
  38.                                 $event->addParent(ModuleModel::getTable(), $frontendModule->id);
  39.                             }
  40.                         }
  41.                     }
  42.                     $event->setOutput('Google Maps: '.$map->title.' (ID: '.$map->id.')');
  43.                     $event->addInserttag('{{google_map::'.$map->id.'}}');
  44.                     $event->addInserttag('{{google_map_html::'.$map->id.'}}');
  45.                     $event->addInserttag('{{google_map_css::'.$map->id.'}}');
  46.                     $event->addInserttag('{{google_map_js::'.$map->id.'}}');
  47.                 }
  48.                 break;
  49.             case OverlayModel::getTable():
  50.                 $overlay OverlayModel::findByPk($event->getId());
  51.                 if ($overlay) {
  52.                     $event->addParent(GoogleMapModel::getTable(), $overlay->pid);
  53.                     $event->setOutput('Google Maps Overlay: '.$overlay->title.' (ID: '.$overlay->id.')');
  54.                 }
  55.         }
  56.     }
  57. }