vendor/sulu/article-bundle/EventListener/TargetWebspaceListener.php line 36

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\ArticleBundle\EventListener;
  11. use Sulu\Bundle\ArticleBundle\Document\ArticleViewDocumentInterface;
  12. use Sulu\Bundle\ArticleBundle\Elasticsearch\PostConvertToDocumentEvent;
  13. use Sulu\Component\Webspace\Analyzer\RequestAnalyzer;
  14. /**
  15.  * This event-listener extends the view-document with the target webspace.
  16.  */
  17. class TargetWebspaceListener
  18. {
  19.     /**
  20.      * @var RequestAnalyzer
  21.      */
  22.     private $requestAnalyzer;
  23.     public function __construct(RequestAnalyzer $requestAnalyzer)
  24.     {
  25.         $this->requestAnalyzer $requestAnalyzer;
  26.     }
  27.     /**
  28.      * Add the proxies for content and view to view-documents.
  29.      */
  30.     public function onPostConvertToDocument(PostConvertToDocumentEvent $event): void
  31.     {
  32.         $document $event->getDocument();
  33.         if (!$document instanceof ArticleViewDocumentInterface) {
  34.             return;
  35.         }
  36.         $document->setTargetWebspace($this->getTargetWebspace($document));
  37.     }
  38.     private function getTargetWebspace(ArticleViewDocumentInterface $document): ?string
  39.     {
  40.         if (!$this->requestAnalyzer->getWebspace()) {
  41.             return null;
  42.         }
  43.         $webspaceKey $this->requestAnalyzer->getWebspace()->getKey();
  44.         if ($document->getMainWebspace() === $webspaceKey
  45.             || ($document->getAdditionalWebspaces() && \in_array($webspaceKey$document->getAdditionalWebspaces()))
  46.         ) {
  47.             return $webspaceKey;
  48.         }
  49.         return $document->getMainWebspace();
  50.     }
  51. }