src/Entity/Image.php line 15

  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ImageRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\HttpFoundation\File\File;
  6. use Symfony\Component\HttpFoundation\File\UploadedFile;
  7. use Symfony\Component\Uid\Uuid;
  8. use Gedmo\Timestampable\Traits\TimestampableEntity;
  9. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  10. #[ORM\Entity(repositoryClassImageRepository::class)]
  11. #[Vich\Uploadable]
  12. class Image
  13. {
  14.     use TimestampableEntity;
  15.     
  16.     #[ORM\Id]
  17.     #[ORM\GeneratedValue(strategy'CUSTOM')]
  18.     #[ORM\Column(type'uuid'uniquetrue)]
  19.     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
  20.     private ?Uuid $id null;
  21.     
  22.     #[Vich\UploadableField(mapping'images'fileNameProperty'name'size'size'mimeType'mimeType'originalName'originalName'dimensions'dimensions')]
  23.     private ?File $file null;
  24.     
  25.     #[ORM\Column(length255)]
  26.     private ?string $name null;
  27.     
  28.     #[ORM\Column]
  29.     private ?int $size null;
  30.     
  31.     #[ORM\Column(length255)]
  32.     private ?string $mimeType null;
  33.     
  34.     #[ORM\Column(length255)]
  35.     private ?string $originalName null;
  36.     
  37.     #[ORM\Column]
  38.     private ?array $dimensions = [];
  39.     
  40.     private ?string $publicUrl null;
  41.     
  42.     public function getId(): ?Uuid
  43.     {
  44.         return $this->id;
  45.     }
  46.     
  47.     /**
  48.      * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
  49.      * of 'UploadedFile' is injected into this setter to trigger the update. If this
  50.      * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
  51.      * must be able to accept an instance of 'File' as the bundle will inject one here
  52.      * during Doctrine hydration.
  53.      *
  54.      * @param File|UploadedFile|null $file
  55.      */
  56.     public function setFile(?File $file null): void
  57.     {
  58.         $this->file $file;
  59.         
  60.         if (null !== $file) {
  61.             // It is required that at least one field changes if you are using doctrine
  62.             // otherwise the event listeners won't be called and the file is lost
  63.             $this->updatedAt = new \DateTimeImmutable();
  64.         }
  65.     }
  66.     
  67.     public function getFile(): ?File
  68.     {
  69.         return $this->file;
  70.     }
  71.     
  72.     
  73.     public function getName(): ?string
  74.     {
  75.         return $this->name;
  76.     }
  77.     
  78.     public function setName(?string $name): self
  79.     {
  80.         $this->name $name;
  81.         
  82.         return $this;
  83.     }
  84.     
  85.     public function getSize(): ?int
  86.     {
  87.         return $this->size;
  88.     }
  89.     
  90.     public function setSize(?int $size): self
  91.     {
  92.         $this->size $size;
  93.         
  94.         return $this;
  95.     }
  96.     
  97.     public function getMimeType(): ?string
  98.     {
  99.         return $this->mimeType;
  100.     }
  101.     
  102.     public function setMimeType(?string $mimeType): self
  103.     {
  104.         $this->mimeType $mimeType;
  105.         
  106.         return $this;
  107.     }
  108.     
  109.     public function getOriginalName(): ?string
  110.     {
  111.         return $this->originalName;
  112.     }
  113.     
  114.     public function setOriginalName(?string $originalName): self
  115.     {
  116.         $this->originalName $originalName;
  117.         
  118.         return $this;
  119.     }
  120.     
  121.     public function getDimensions(): array
  122.     {
  123.         if (empty($this->dimensions)) {
  124.             return [];
  125.         }
  126.         
  127.         return [
  128.             'width' => $this->dimensions[0],
  129.             'height' => $this->dimensions[1],
  130.         ];
  131.     }
  132.     
  133.     public function setDimensions(?array $dimensions): self
  134.     {
  135.         if (!is_array($dimensions)) {
  136.             $dimensions = [];
  137.         }
  138.         
  139.         if (key_exists('width'$dimensions) && key_exists('height'$dimensions)) {
  140.             $this->dimensions = [$dimensions['width'], $dimensions['height']];
  141.             return $this;
  142.         }
  143.         
  144.         $this->dimensions $dimensions;
  145.         
  146.         return $this;
  147.     }
  148.     
  149.     /**
  150.      * @return string|null
  151.      */
  152.     public function getPublicUrl(): ?string
  153.     {
  154.         return $this->publicUrl;
  155.     }
  156.     
  157.     /**
  158.      * @param string|null $publicUrl
  159.      */
  160.     public function setPublicUrl(?string $publicUrl): void
  161.     {
  162.         $this->publicUrl $publicUrl;
  163.     }
  164. }