vendor/ezsystems/ezplatform-page-fieldtype/src/lib/FieldType/LandingPage/Model/Page.php line 19

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) eZ Systems AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model;
  8. use EzSystems\EzPlatformPageFieldType\Exception\BlockNotFoundException;
  9. use EzSystems\EzPlatformPageFieldType\Exception\ZoneNotFoundException;
  10. /**
  11.  * Represents page.
  12.  *
  13.  * Page contains collection of zones
  14.  */
  15. class Page
  16. {
  17.     /** @var string */
  18.     private $layout;
  19.     /** @var \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Zone[] */
  20.     private $zones;
  21.     /**
  22.      * @param string $layout
  23.      * @param \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Zone[] $zones
  24.      */
  25.     public function __construct(string $layout '', array $zones = [])
  26.     {
  27.         $this->layout $layout;
  28.         $this->zones $zones;
  29.     }
  30.     /**
  31.      * @return string
  32.      */
  33.     public function getLayout(): string
  34.     {
  35.         return $this->layout;
  36.     }
  37.     /**
  38.      * @param string $layout
  39.      */
  40.     public function setLayout(string $layout): void
  41.     {
  42.         $this->layout $layout;
  43.     }
  44.     /**
  45.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Zone[]
  46.      */
  47.     public function getZones(): array
  48.     {
  49.         return $this->zones;
  50.     }
  51.     /**
  52.      * @param \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Zone[] $zones
  53.      */
  54.     public function setZones(array $zones): void
  55.     {
  56.         $this->zones $zones;
  57.     }
  58.     /**
  59.      * @param $id
  60.      *
  61.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Zone
  62.      *
  63.      * @throws \EzSystems\EzPlatformPageFieldType\Exception\ZoneNotFoundException
  64.      */
  65.     public function getZoneByIdentifier($id): Zone
  66.     {
  67.         foreach ($this->zones as $zone) {
  68.             if ($id === $zone->getId()) {
  69.                 return $zone;
  70.             }
  71.         }
  72.         throw new ZoneNotFoundException('Zone not found (id: ' $id ')');
  73.     }
  74.     /**
  75.      * Returns block by its ID.
  76.      *
  77.      * @param $id
  78.      *
  79.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\BlockValue
  80.      *
  81.      * @throws \EzSystems\EzPlatformPageFieldType\Exception\BlockNotFoundException
  82.      */
  83.     public function getBlockById($id): BlockValue
  84.     {
  85.         foreach ($this->getZones() as $zone) {
  86.             foreach ($zone->getBlocks() as $block) {
  87.                 if ($block->getId() === $id) {
  88.                     return $block;
  89.                 }
  90.             }
  91.         }
  92.         throw new BlockNotFoundException('Block not found (id: ' $id ')');
  93.     }
  94.     /**
  95.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\BlockValue[]
  96.      */
  97.     public function getBlockIterator(): iterable
  98.     {
  99.         foreach ($this->getZones() as $zone) {
  100.             foreach ($zone->getBlocks() as $block) {
  101.                 yield $block;
  102.             }
  103.         }
  104.     }
  105. }