vendor/ezsystems/ezplatform-kernel/eZ/Publish/Core/FieldType/Image/Value.php line 22

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. namespace eZ\Publish\Core\FieldType\Image;
  7. use eZ\Publish\API\Repository\Exceptions\PropertyNotFoundException;
  8. use eZ\Publish\Core\Base\Exceptions\InvalidArgumentType;
  9. use eZ\Publish\Core\FieldType\Value as BaseValue;
  10. /**
  11.  * Value for Image field type.
  12.  *
  13.  * @property string $path @deprecated BC with 5.0 (EZP-20948). Equivalent to $id or $inputUri, depending on which one is set
  14.  * .
  15.  *
  16.  * @todo Mime type?
  17.  * @todo Dimensions?
  18.  */
  19. class Value extends BaseValue
  20. {
  21.     /**
  22.      * Image id.
  23.      *
  24.      * Required.
  25.      *
  26.      * @var mixed|null
  27.      */
  28.     public $id;
  29.     /**
  30.      * The alternative image text (for example "Picture of an apple.").
  31.      *
  32.      * @var string|null
  33.      */
  34.     public $alternativeText;
  35.     /**
  36.      * Display file name of the image.
  37.      *
  38.      * Required.
  39.      *
  40.      * @var string|null
  41.      */
  42.     public $fileName;
  43.     /**
  44.      * Size of the image file.
  45.      *
  46.      * Required.
  47.      *
  48.      * @var int|null
  49.      */
  50.     public $fileSize;
  51.     /**
  52.      * The image's HTTP URI.
  53.      *
  54.      * @var string|null
  55.      */
  56.     public $uri;
  57.     /**
  58.      * External image ID (required by REST for now, see https://jira.ez.no/browse/EZP-20831).
  59.      *
  60.      * @var mixed|null
  61.      */
  62.     public $imageId;
  63.     /**
  64.      * Input image file URI.
  65.      *
  66.      * @var string|null
  67.      */
  68.     public $inputUri;
  69.     /**
  70.      * Original image width.
  71.      *
  72.      * @var int|null
  73.      */
  74.     public $width;
  75.     /**
  76.      * Original image height.
  77.      *
  78.      * @var int|null
  79.      */
  80.     public $height;
  81.     /** @var string[] */
  82.     public $additionalData = [];
  83.     /**
  84.      * Construct a new Value object.
  85.      */
  86.     public function __construct(array $imageData = [])
  87.     {
  88.         foreach ($imageData as $key => $value) {
  89.             try {
  90.                 $this->$key $value;
  91.             } catch (PropertyNotFoundException $e) {
  92.                 throw new InvalidArgumentType(
  93.                     sprintf('Image\Value::$%s'$key),
  94.                     'Existing property',
  95.                     $value
  96.                 );
  97.             }
  98.         }
  99.     }
  100.     public function isAlternativeTextEmpty(): bool
  101.     {
  102.         return $this->alternativeText === null || trim($this->alternativeText) === '';
  103.     }
  104.     /**
  105.      * Creates a value only from a file path.
  106.      *
  107.      * @param string $path
  108.      *
  109.      * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentType
  110.      *
  111.      * @return Value
  112.      *
  113.      * @deprecated Starting with 5.3.3, handled by Image\Type::acceptValue()
  114.      */
  115.     public static function fromString($path)
  116.     {
  117.         if (!file_exists($path)) {
  118.             throw new InvalidArgumentType(
  119.                 '$path',
  120.                 'existing file',
  121.                 $path
  122.             );
  123.         }
  124.         return new static(
  125.             [
  126.                 'inputUri' => $path,
  127.                 'fileName' => basename($path),
  128.                 'fileSize' => filesize($path),
  129.             ]
  130.         );
  131.     }
  132.     /**
  133.      * Returns the image file size in byte.
  134.      *
  135.      * @return int
  136.      */
  137.     public function getFileSize()
  138.     {
  139.         return $this->fileSize;
  140.     }
  141.     /**
  142.      * @see \eZ\Publish\Core\FieldType\Value
  143.      */
  144.     public function __toString()
  145.     {
  146.         return (string)$this->fileName;
  147.     }
  148.     public function __get($propertyName)
  149.     {
  150.         if ($propertyName === 'path') {
  151.             return $this->inputUri ?: $this->id;
  152.         }
  153.         throw new PropertyNotFoundException($propertyName, static::class);
  154.     }
  155.     public function __set($propertyName$propertyValue)
  156.     {
  157.         if ($propertyName === 'path') {
  158.             $this->inputUri $propertyValue;
  159.             return;
  160.         }
  161.         throw new PropertyNotFoundException($propertyName, static::class);
  162.     }
  163. }