src/Entity/Picture.php line 14
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use OlaSoft\Common;
use App\Entity\OSFile;
/**
* @ORM\Entity(repositoryClass="App\Repository\PictureRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Picture extends OSFile
{
public function __construct(?string $path = null)
{
parent::__construct($path);
$this->hasThumbnail = true;
$this->thumbnailDir = 'upload/thumbnails/';
$this->validsMimetypes = ["image/png", "image/jpeg", "image/jpg", "image/svg+xml", "image/vnd.sealedmedia.softseal.jpg", "image/vnd.sealed.png"];
if(!$path) $this->dir = 'upload/images/';
}
/**
* @ORM\Column(name="target", type="string", length=255, nullable=true)
* Assert\Image(
* mimeTypes = "image/*",
* mimeTypesMessage = "Veuillez choisir des images valides s'il vous plaît : .png, .jpeg, .jpg, .svg et .gif. Vérifiez également le MimeType."
* )
*/
protected $target;
/**
* @ORM\Column(name="thumbnailDir", type="string", length=255, nullable=true)
*/
protected $thumbnailDir;
/**
* @ORM\Column(name="hasThumbnail", type="boolean", nullable=true)
*/
protected $hasThumbnail;
private $width;
private $height;
public function setHasThumbnail(?bool $hasThumbnail = true){
$this->hasThumbnail = $hasThumbnail;
return $this;
}
public function getThumbnailDir(): ?string
{
return $this->thumbnailDir;
}
public function setThumbnailDir(?string $dir){
$this->thumbnailDir = $dir;
return $this;
}
protected function getThumbnailRootDir(): ?string
{
return $this->getRoot().$this->getThumbnailDir();
}
public function getThumbnail(){
return $this->getThumbnailDir().'/'.$this->target;
}
public function getWidth(): ?int
{
return $this->file ? getimagesize($file)[0] : null;
}
public function getHeight(): ?int
{
return $this->file ? getimagesize($file)[1] : null;
}
/**
* @ORM\PrePersist()
*/
public function persistFile()
{
parent::persistFile();
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function postPersistFile()
{
if($this->file){
if ($this->autoResize)
Common::resizeImage($this->getRootFile());
if($this->hasThumbnail){
Common::thumbnailImage($this->getRootFile(),$this->getThumbnailRootDir());
if($this->getPrevThumbnail() && $this->getThumbnail() != $this->getPrevThumbnail() && is_file($this->getPrevThumbnail()))
unlink($this->getPrevThumbnail());
}
}
}
protected function getPrevThumbnail(){
return $this->getThumbnailRootDir().'/'.$this->previousTarget;
}
/**
* @ORM\PreRemove()
*/
public function deleteFile()
{
if(is_file($this->getRoot().$this->getThumbnail()))
unlink($this->getRoot().$this->getThumbnail());
parent::deleteFile();
}
public function getHasThumbnail(): ?bool
{
return $this->hasThumbnail;
}
public function setTarget($target)
{
return parent::setTarget($target);
}
}