<?php
/**
* Created by PhpStorm.
* User: antho
* Date: 21/08/2017
* Time: 12:02
*/
namespace App\Doctrine;
use App\Entity\Client;
use App\Service\ImageHelper\ImageResizerInterface;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\HttpKernel\Kernel;
class AddLogoListener
{
private $kernel;
/**
* @var ImageResizerInterface
*/
private $imageResizer;
public function __construct(Kernel $kernel, ImageResizerInterface $imageResizer) {
$this->kernel = $kernel;
$this->imageResizer = $imageResizer;
}
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if(is_a($entity, '\App\Entity\Logo')){
if($args->getObject()->getIdClient() != null){
$em = $args->getEntityManager();
/** @var Client $client */
$client = $em->getRepository('App\Entity\Client')
->find($args->getObject()->getIdClient());
$client->setLogo($args->getObject());
$em->persist($client);
$file =$this->kernel->getRootDir() . '/../public/logoClients/'.$args->getObject()->getUrl();
$fileResized =$this->kernel->getRootDir() . '/../public/logoClients/resized/';
if(!file_exists($file)) {
file_put_contents($file, base64_decode($args->getObject()->getValue()));
}
$result = $this->imageResizer->resizeImage($file,$fileResized,0,300);
if( $result === false){
$fileResized = $fileResized . '/' . $args->getObject()->getUrl();
if(!file_exists($fileResized)) {
file_put_contents($fileResized, base64_decode($args->getObject()->getValue()));
}
}
}
}
}
}