vendor/ezsystems/ezplatform-page-fieldtype/src/lib/FieldType/LandingPage/Model/BlockValue.php line 15

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 DateTime;
  9. use DateTimeInterface;
  10. use eZ\Publish\Core\Base\Exceptions\InvalidArgumentException;
  11. class BlockValue
  12. {
  13.     /** @var string */
  14.     private $id;
  15.     /** @var string */
  16.     private $type;
  17.     /** @var string|null */
  18.     private $name;
  19.     /** @var string */
  20.     private $view;
  21.     /** @var string|null */
  22.     private $class;
  23.     /** @var string|null */
  24.     private $style;
  25.     /** @var string|null */
  26.     private $compiled;
  27.     /** @var \DateTime|null */
  28.     private $since;
  29.     /** @var \DateTime|null */
  30.     private $till;
  31.     /** @var \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Attribute[] */
  32.     private $attributes;
  33.     /**
  34.      * @param string $id
  35.      * @param string $type
  36.      * @param string|null $name
  37.      * @param string $view
  38.      * @param string|null $class
  39.      * @param string|null $style
  40.      * @param string|null $compiled
  41.      * @param \DateTime|null $since
  42.      * @param \DateTime|null $till
  43.      * @param \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Attribute[] $attributes
  44.      */
  45.     public function __construct(
  46.         string $id,
  47.         string $type,
  48.         ?string $name,
  49.         string $view,
  50.         ?string $class,
  51.         ?string $style,
  52.         ?string $compiled,
  53.         ?DateTime $since,
  54.         ?DateTime $till,
  55.         array $attributes
  56.     ) {
  57.         $this->id $id;
  58.         $this->type $type;
  59.         $this->name $name;
  60.         $this->view $view;
  61.         $this->class $class;
  62.         $this->style $style;
  63.         $this->compiled $compiled;
  64.         $this->since $since;
  65.         $this->till $till;
  66.         $this->attributes $attributes;
  67.     }
  68.     /**
  69.      * @return string
  70.      */
  71.     public function getId(): string
  72.     {
  73.         return $this->id;
  74.     }
  75.     /**
  76.      * @param string $id
  77.      */
  78.     public function setId(string $id): void
  79.     {
  80.         $this->id $id;
  81.     }
  82.     /**
  83.      * @return string
  84.      */
  85.     public function getType(): string
  86.     {
  87.         return $this->type;
  88.     }
  89.     /**
  90.      * @param string $type
  91.      */
  92.     public function setType(string $type): void
  93.     {
  94.         $this->type $type;
  95.     }
  96.     /**
  97.      * @return string|null
  98.      */
  99.     public function getName(): ?string
  100.     {
  101.         return $this->name;
  102.     }
  103.     /**
  104.      * @param string|null $name
  105.      */
  106.     public function setName(?string $name): void
  107.     {
  108.         $this->name $name;
  109.     }
  110.     /**
  111.      * @return string
  112.      */
  113.     public function getView(): string
  114.     {
  115.         return $this->view;
  116.     }
  117.     /**
  118.      * @param string $view
  119.      */
  120.     public function setView(string $view): void
  121.     {
  122.         $this->view $view;
  123.     }
  124.     /**
  125.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Attribute[]
  126.      */
  127.     public function getAttributes(): array
  128.     {
  129.         return $this->attributes;
  130.     }
  131.     /**
  132.      * @param \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Attribute[] $attributes
  133.      */
  134.     public function setAttributes(array $attributes): void
  135.     {
  136.         $this->attributes $attributes;
  137.     }
  138.     /**
  139.      * @param string $name
  140.      *
  141.      * @return \EzSystems\EzPlatformPageFieldType\FieldType\LandingPage\Model\Attribute
  142.      */
  143.     public function getAttribute(string $name): ?Attribute
  144.     {
  145.         foreach ($this->attributes as $attribute) {
  146.             if ($attribute->getName() === $name) {
  147.                 return $attribute;
  148.             }
  149.         }
  150.         return null;
  151.     }
  152.     /**
  153.      * @todo fix
  154.      *
  155.      * @param string $name
  156.      * @param mixed $value
  157.      *
  158.      * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentException
  159.      */
  160.     public function setAttribute($name$value): void
  161.     {
  162.         if (!isset($this->attributes[$name])) {
  163.             throw new InvalidArgumentException('name''attribute "' $name '" does not exist');
  164.         }
  165.         $this->attributes[$name] = $value;
  166.     }
  167.     /**
  168.      * @return string|null
  169.      */
  170.     public function getClass(): ?string
  171.     {
  172.         return $this->class;
  173.     }
  174.     /**
  175.      * @param string|null $class
  176.      */
  177.     public function setClass(?string $class): void
  178.     {
  179.         $this->class $class;
  180.     }
  181.     /**
  182.      * @return string|null
  183.      */
  184.     public function getStyle(): ?string
  185.     {
  186.         return $this->style;
  187.     }
  188.     /**
  189.      * @param string|null $style
  190.      */
  191.     public function setStyle(?string $style): void
  192.     {
  193.         $this->style $style;
  194.     }
  195.     /**
  196.      * @return string|null
  197.      */
  198.     public function getCompiled(): ?string
  199.     {
  200.         return $this->compiled;
  201.     }
  202.     /**
  203.      * @param string|null $compiled
  204.      */
  205.     public function setCompiled(?string $compiled): void
  206.     {
  207.         $this->compiled $compiled;
  208.     }
  209.     /**
  210.      * @return \DateTime|null
  211.      */
  212.     public function getSince(): ?DateTime
  213.     {
  214.         return $this->since;
  215.     }
  216.     /**
  217.      * @param \DateTime|null $since
  218.      */
  219.     public function setSince(?DateTime $since): void
  220.     {
  221.         $this->since $since;
  222.     }
  223.     /**
  224.      * @return \DateTime|null
  225.      */
  226.     public function getTill(): ?DateTime
  227.     {
  228.         return $this->till;
  229.     }
  230.     /**
  231.      * @param \DateTime|null $till
  232.      */
  233.     public function setTill(?DateTime $till): void
  234.     {
  235.         $this->till $till;
  236.     }
  237.     /**
  238.      * @param \DateTimeInterface|null $dateTime
  239.      *
  240.      * @return bool
  241.      *
  242.      * @throws \Exception
  243.      */
  244.     public function isVisible(DateTimeInterface $dateTime null): bool
  245.     {
  246.         $dateTime $dateTime ?? new DateTime();
  247.         return (null === $this->getSince() || $this->getSince() <= $dateTime) &&
  248.                (null === $this->getTill() || $this->getTill() > $dateTime);
  249.     }
  250. }