bundles/DasKrebsportalBundle/Controller/AdController.php line 63

Open in your IDE?
  1. <?php
  2. namespace DasKrebsportalBundle\Controller;
  3. use Pimcore\Model\Document;
  4. use Pimcore\Model\Document\Page;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Pimcore\Http\RequestHelper;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  11. use Pimcore\Http\Request\Resolver\DocumentResolver;
  12. use Pimcore\Controller\FrontendController;
  13. use Pimcore\Db;
  14. use Pimcore\Model\DataObject\Tag;
  15. use Pimcore\Model\DataObject\AdZone;
  16. final class AdController extends FrontendController
  17. {
  18.     public function __construct()
  19.     {
  20.     }
  21.     private function getTagsFromDocument(Document $document): array
  22.     {
  23.         $rawTags Db::get()->fetchFirstColumn(
  24.             "SELECT data FROM documents_editables WHERE name = 'tags' AND documentId = :documentId",
  25.             ['documentId' => $document->getId()]
  26.         );
  27.         if (count($rawTags) === 0) {
  28.             return [];
  29.         }
  30.         $serializedTags $rawTags[0];
  31.         if (empty($serializedTags)) {
  32.             return [];
  33.         }
  34.         $dRawTags unserialize($serializedTags);
  35.         $tags = [];
  36.         foreach ($dRawTags as $tagRelation) {
  37.             if ($tagRelation['subtype'] !== 'Tag') {
  38.                 continue;
  39.             }
  40.             $tag Tag::getById($tagRelation['id']);
  41.             if ($tag !== null) {
  42.                 $tags[] = $tag->getKey();
  43.             }
  44.         }
  45.         return $tags;
  46.     }
  47.     /**
  48.      * @Template("@DasKrebsportal/ads/_head.html.twig")
  49.      * @param RequestHelper $request
  50.      * @return   array
  51.      * @throws   Exception
  52.      */
  53.     public function headAction(RequestHelper $request): array
  54.     {
  55.         $document $this->document;
  56.         if ($document instanceof Page) {
  57.             $zone $document->getProperty('AdZone');
  58.             $kvKrebsArt $document->getProperty('Artikel-Krebsart');
  59.             $kvPhase $document->getProperty('Artikel-Phase');
  60.             if ($kvKrebsArt) {
  61.                 $kvKrebsArt $kvKrebsArt->getKey();
  62.             }
  63.             if ($kvPhase) {
  64.                 $kvPhase $kvPhase->getKey();
  65.             }
  66.             $tags $this->getTagsFromDocument($document);
  67.         } else {
  68.             $tags = [];
  69.         }
  70.         if (empty($zone)) {
  71.             $zone AdZone::getByPath('/dasKrebsportal.de/Ads/Zones/rest');
  72.         }
  73.         $slotItems $zone->getSlots();
  74.         $slots = [];
  75.         foreach ($slotItems as $slotItem) {
  76.             $slots[] = $slotItem['slot']->getData();
  77.         }
  78.         return [
  79.             'zone' => $zone,
  80.             'kvKrebsArt' => $kvKrebsArt,
  81.             'kvPhase' => $kvPhase,
  82.             'tags' => json_encode($tags),
  83.             'slots' => $slots,
  84.         ];
  85.     }
  86. }