vendor/pimcore/pimcore/lib/Document/Editable/DelegatingEditableHandler.php line 153

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  * @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  * @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace Pimcore\Document\Editable;
  15. use Pimcore\Document\Editable\Exception\NotFoundException;
  16. use Pimcore\Model\Document\Editable;
  17. use Pimcore\Model\Document\Editable\Area\Info;
  18. use Pimcore\Model\Document\Tag;
  19. use Pimcore\Templating\Model\ViewModelInterface;
  20. /**
  21.  * @deprecated will be removed in v7, use EditableHandler directly instead
  22.  */
  23. class DelegatingEditableHandler implements EditableHandlerInterface
  24. {
  25.     /**
  26.      * @var EditableHandlerInterface[]
  27.      */
  28.     protected $handlers = [];
  29.     /**
  30.      * Register a handler
  31.      *
  32.      * @param EditableHandlerInterface $handler
  33.      *
  34.      * @return $this
  35.      */
  36.     public function addHandler(EditableHandlerInterface $handler)
  37.     {
  38.         $this->handlers[] = $handler;
  39.         return $this;
  40.     }
  41.     /**
  42.      * Get the matching handler for a view
  43.      *
  44.      * @param ViewModelInterface $view
  45.      *
  46.      * @return EditableHandlerInterface
  47.      */
  48.     public function getHandlerForView($view)
  49.     {
  50.         foreach ($this->handlers as $handler) {
  51.             if ($handler->supports($view)) {
  52.                 return $handler;
  53.             }
  54.         }
  55.         throw new NotFoundException(sprintf(
  56.             'No handler found for view type %s',
  57.             $view get_class($view) : 'null'
  58.         ));
  59.     }
  60.     /**
  61.      * Get the matching handler for a Tag
  62.      *
  63.      * @param Tag|Tag\Area|Tag\Areablock $tag
  64.      *
  65.      * @return EditableHandlerInterface
  66.      *
  67.      * @deprecated
  68.      */
  69.     public function getHandlerForTag(Tag $tag)
  70.     {
  71.         return $this->getHandlerForEditable($tag);
  72.     }
  73.     /**
  74.      * Get the matching handler for a Tag
  75.      *
  76.      * @param Editable|Editable\Area|Editable\Areablock $editable
  77.      *
  78.      * @return EditableHandlerInterface
  79.      */
  80.     public function getHandlerForEditable(Editable $editable)
  81.     {
  82.         $view $editable->getView();
  83.         try {
  84.             return $this->getHandlerForView($view);
  85.         } catch (NotFoundException $e) {
  86.             throw new NotFoundException(sprintf(
  87.                 'No handler found for tag %s and view type %s',
  88.                 $editable->getName(),
  89.                 $view get_class($view) : 'null'
  90.             ), 0$e);
  91.         }
  92.     }
  93.     /**
  94.      * {@inheritdoc}
  95.      */
  96.     public function supports($view)
  97.     {
  98.         try {
  99.             $this->getHandlerForView($view);
  100.             return true;
  101.         } catch (NotFoundException $e) {
  102.             // noop
  103.         }
  104.         return false;
  105.     }
  106.     /**
  107.      * @inheritDoc
  108.      */
  109.     public function isBrickEnabled(Editable $editable$brick)
  110.     {
  111.         $handler $this->getHandlerForEditable($editable);
  112.         return $handler->isBrickEnabled($editable$brick);
  113.     }
  114.     /**
  115.      * {@inheritdoc}
  116.      */
  117.     public function getAvailableAreablockAreas(Editable\Areablock $editable, array $options)
  118.     {
  119.         $handler $this->getHandlerForEditable($editable);
  120.         return $handler->getAvailableAreablockAreas($editable$options);
  121.     }
  122.     /**
  123.      * {@inheritdoc}
  124.      */
  125.     public function renderAreaFrontend(Info $info)
  126.     {
  127.         $handler $this->getHandlerForEditable($info->getEditable());
  128.         return $handler->renderAreaFrontend($info);
  129.     }
  130.     /**
  131.      * {@inheritdoc}
  132.      */
  133.     public function renderAction($view$controller$action$parent null, array $attributes = [], array $query = [], array $options = [])
  134.     {
  135.         $handler $this->getHandlerForView($view);
  136.         return $handler->renderAction($view$controller$action$parent$attributes$query$options);
  137.     }
  138. }
  139. class_alias(DelegatingEditableHandler::class, 'Pimcore\Document\Tag\DelegatingTagHandler');