<?php
namespace DevelopmentBundle\EventListener;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Brand;
class BrandImageListener
{
const IMAGE_DIRECTORY = PIMCORE_PROJECT_ROOT . '/public/var/assets/Brand/';
const THUMBNAIL_DIRECTORY = PIMCORE_PROJECT_ROOT . '/public/var/tmp/thumbnails/';
public function onPreUpdate(ElementEventInterface $e): void {
if($e instanceof DataObjectEvent){
$object = $e->getObject();
if ($object instanceof DataObject\Brand) {
$filename = "brand-" . $object->getBrandID();
if ($object->getBrandimg()) {
$imgPath = $object->getBrandimg()->getFullPath();
}
$asset = Asset::getByPath($imgPath);
if ($asset) {
$newimaage = $asset->getThumbnail("homepage", false)->getPath();
$pdpimg = $asset->getThumbnail("pdp", false)->getPath();
$plpimg = $asset->getThumbnail('plp', false)->getPath();
}
if ($newimaage) {
$saveImage = Asset::getByPath("/Brand/homepage/" . $filename . '.png');
if ($saveImage) {
$saveImage->delete();
}
$saveImage = new \Pimcore\Model\Asset();
$saveImage->setFilename($filename . '.png');
$saveImage->setData(file_get_contents(self::THUMBNAIL_DIRECTORY . $newimaage));
$saveImage->setParent(\Pimcore\Model\Asset::getByPath("/Brand/homepage"));
$saveImage->save();
}
if ($pdpimg) {
$pdpSave = Asset::getByPath("/Brand/pdp/" . $filename . '.png');
if ($pdpSave) {
$pdpSave->delete();
}
$pdpSave = new \Pimcore\Model\Asset();
$pdpSave->setFilename($filename . '.png');
$pdpSave->setData(file_get_contents(self::THUMBNAIL_DIRECTORY . $pdpimg));
$pdpSave->setParent(\Pimcore\Model\Asset::getByPath("/Brand/pdp"));
$pdpSave->save();
}
if ($plpimg) {
$plpSave = Asset::getByPath("/Brand/plp/" . $filename . '.png');
if ($plpSave) {
$plpSave->delete();
}
$plpSave = new \Pimcore\Model\Asset();
$plpSave->setFilename($filename . '.png');
$plpSave->setData(file_get_contents(self::THUMBNAIL_DIRECTORY . $plpimg));
$plpSave->setParent(\Pimcore\Model\Asset::getByPath("/Brand/plp"));
$plpSave->save();
}
}
}
}
}