src/Entity/Partner.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\TimestampableTrait;
  4. use App\Repository\PartnerRepository;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Gedmo\Mapping\Annotation as Gedmo;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  9. use Symfony\Component\HttpFoundation\File\UploadedFile;
  10. /**
  11.  * @ORM\Entity(repositoryClass=PartnerRepository::class)
  12.  * @UniqueEntity(fields="name")
  13.  */
  14. class Partner
  15. {
  16.     use TimestampableTrait;
  17.     /**
  18.      * @ORM\Id
  19.      * @ORM\GeneratedValue
  20.      * @ORM\Column(type="integer")
  21.      */
  22.     private $id;
  23.     /**
  24.      * @ORM\Column(type="string", length=255, unique=true)
  25.      */
  26.     private $name;
  27.     /** 
  28.      * @Gedmo\Slug(fields={"name"})
  29.      * @ORM\Column(length=100, unique=true)
  30.      */
  31.     private $slug;
  32.     /**
  33.      * @ORM\Column(type="text", nullable=true)
  34.      */
  35.     private $description;
  36.     /**
  37.      * @ORM\Column(type="string", length=255, nullable=true)
  38.      */
  39.     private $src;
  40.     /**
  41.      * @Assert\Image(maxSize="2M")
  42.      */
  43.     private $file;
  44.     private $temp;
  45.     /**
  46.      * @ORM\Column(type="string", length=255, nullable=true)
  47.      */
  48.     private $link;
  49.     public function getId(): ?int
  50.     {
  51.         return $this->id;
  52.     }
  53.     public function getName(): ?string
  54.     {
  55.         return $this->name;
  56.     }
  57.     public function setName(string $name): self
  58.     {
  59.         $this->name $name;
  60.         return $this;
  61.     }
  62.     public function getSlug(): ?string
  63.     {
  64.         return $this->slug;
  65.     }
  66.     public function setSlug(string $slug): self
  67.     {
  68.         $this->slug $slug;
  69.         return $this;
  70.     }
  71.     public function getDescription(): ?string
  72.     {
  73.         return $this->description;
  74.     }
  75.     public function setDescription(?string $description): self
  76.     {
  77.         $this->description $description;
  78.         return $this;
  79.     }
  80.     public function getSrc(): ?string
  81.     {
  82.         return $this->src;
  83.     }
  84.     public function setSrc(string $src): self
  85.     {
  86.         $this->src $src;
  87.         return $this;
  88.     }
  89.     public function setTemp($temp)
  90.     {
  91.         $this->temp $temp;
  92.         return $this;
  93.     }
  94.     public function getTemp()
  95.     {
  96.         return $this->temp;
  97.     }
  98.     public function setFile(UploadedFile $file)
  99.     {
  100.         $this->file $file;
  101.         if (!is_null($this->src)) {
  102.             $this->temp $this->src;
  103.             $this->src null;
  104.         }
  105.         return $this;
  106.     }
  107.     public function getFile()
  108.     {
  109.         return $this->file;
  110.     }
  111.     /**
  112.      * @ORM\PrePersist()
  113.      * @ORM\PreUpdate()
  114.      */
  115.     public function preUpload()
  116.     {
  117.         if (is_null($this->file)) {
  118.             return;
  119.         }
  120.         
  121.         $this->src md5(uniqid()).'.'.$this->file->guessExtension();
  122.     }
  123.     
  124.     /**
  125.      * @ORM\PostPersist()
  126.      * @ORM\PostUpdate()
  127.      */
  128.     public function upload()
  129.     {
  130.         if (is_null($this->file)) {
  131.             return;
  132.         }
  133.         
  134.         if (!is_null($this->temp)) {
  135.             $oldFile $this->getUploadRootDir().'/'.$this->temp;
  136.             if (file_exists($oldFile)) {
  137.                 @unlink($oldFile);
  138.             }
  139.         }
  140.         $this->file->move(
  141.             $this->getUploadRootDir(),$this->src
  142.         );
  143.     }
  144.     
  145.     /**
  146.      * @ORM\PreRemove()
  147.      */
  148.     public function preRemoveUpload()
  149.     {
  150.         $this->temp $this->getUploadRootDir().'/'.$this->src;
  151.     }
  152.     
  153.     /**
  154.      * @ORM\PostRemove()
  155.      */
  156.     public function removeUpload()
  157.     {
  158.         if (file_exists($this->temp)) {
  159.             @unlink($this->temp);
  160.         }
  161.     }
  162.     
  163.     public function getUploadDir()
  164.     {
  165.         return 'uploads/files/partner';
  166.     }
  167.     
  168.     protected function getUploadRootDir()
  169.     {
  170.         return __DIR__.'/../../../../public/'.$this->getUploadDir();
  171.     }
  172.     protected function removeThumb()
  173.     {
  174.         $tab = ['117x74''117x117''160x100''180x92''214x214''300x200','720x480','900x300''1033x276'];
  175.         foreach ($tab as $type) {
  176.             $url __DIR__.'/../../../../public/media/cache/'.$type.'/'.$this->getUploadDir().'/'.$this->temp;
  177.             if (file_exists($url)) {
  178.                 @unlink($url);
  179.             }
  180.         }
  181.     }
  182.     
  183.     public function getWebPath()
  184.     {
  185.         return $this->getUploadDir().'/'.$this->getSrc();
  186.     }
  187.     public function getLink(): ?string
  188.     {
  189.         return $this->link;
  190.     }
  191.     public function setLink(?string $link): self
  192.     {
  193.         $this->link $link;
  194.         return $this;
  195.     }
  196. }