<?php
namespace AppBundle\EventListener;
use Acl\Koe\ImportBundle\Service\AssetService;
use Carbon\Carbon;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Event\Model\AssetEvent;
use Pimcore\Event\Model\DocumentEvent;
use Pimcore\Model\DataObject\Artikelonline;
use Pimcore\Model\Asset;
class ObjectUpdateListener {
private $originalFileName;
/**
* @param ElementEventInterface $e
* @return void
* @throws \Exception
*/
public function onPreAssetAdd (ElementEventInterface $e) {
if (empty($_REQUEST)) {
// Do not update on CLI request
return;
}
if($e instanceof AssetEvent) {
$image = $e->getElement();
$currentFilename = $image->getFilename();
$parentId = $image->getParentId();
$bucketFolder = Asset::getByPath(AssetService::PIMCORE_DEFAULT_ASSET_DIR);
$bucketId = $bucketFolder->getId();
//upload dir is default_bucket move to /shop/ so the oxid shop can reach it
if ($bucketId == $parentId) {
$newFilename = $this->originalFileName ?: $currentFilename;
$oldAsset = Asset::getByPath(AssetService::UPLOAD_DIR . $newFilename);
if ($oldAsset) {
$oldAsset->delete();
}
AssetService::renameAsset($image, $newFilename, AssetService::UPLOAD_DIR, AssetService::UPLOAD_DIR . $newFilename, true);
} else {
if($this->originalFileName !== $currentFilename) {
$newFilename = $this->originalFileName ?: $currentFilename;
$oldAsset = Asset::getByPath(AssetService::UPLOAD_DIR . $newFilename);
if ($oldAsset) {
$oldAsset->delete();
}
$image->setFilename($newFilename);
}
}
}
$this->originalFileName = null;
}
/**
* @param $element
* @return void
*/
public function onResolveAsset ($element) {
if (empty($_REQUEST)) {
// Do not update on CLI request
return;
}
$this->originalFileName = $element->getFilename();
}
/**
* @param ElementEventInterface $e
* @return void
*/
public function onPreUpdate (ElementEventInterface $e) {
///// 44466 is id of "inaktiv" folder /////
if (empty($_REQUEST)) {
// Do not update on CLI request
return;
}
if($e instanceof AssetEvent) {
// do something with the asset
} else if ($e instanceof DocumentEvent) {
// do something with the document
} else if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
/* if ($object->getParentId() == 44466) {
$object->setAktiv(false);
}*/
if ($object instanceof Artikelonline) {
if(!$object->getAttribute()->getAllgemein()) {
$systemBrick = new \Pimcore\Model\DataObject\Objectbrick\Data\Allgemein($object);
} else {
$systemBrick = $object->getAttribute()->getAllgemein();
}
if ($object->getProdukttext() == "" || $object->getProdukttext() == null){
$systemBrick->setEmptyProdukttext(true);
} else {
$systemBrick->setEmptyProdukttext(false);
}
$systemBrick = $this->setFotoNokSeitToBrick($object, $systemBrick);
$systemBrick = $this->setArticleOkSeitToBrick( $object, $systemBrick );
$systemBrick = $this->setModelarticleToBrick( $object, $systemBrick );
$systemBrick = $this->setImage1or11setToBrick( $object, $systemBrick );
$systemBrick = $this->setActiveDateToBrick( $object, $systemBrick );
$object->getAttribute()->setAllgemein($systemBrick);
}
}
}
/**
* @param ElementEventInterface $e
* @return void
*/
public function onPreAdd(ElementEventInterface $e){
if ($e instanceof AssetEvent) {
// do something with the asset
} else if ($e instanceof DocumentEvent) {
// do something with the document
} else if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if ($object instanceof Artikelonline) {
if (!$object->getAttribute()->getAllgemein()) {
$allgemeinBrick = new \Pimcore\Model\DataObject\Objectbrick\Data\Allgemein($object);
} else {
$allgemeinBrick = $object->getAttribute()->getAllgemein();
}
$allgemeinBrick->setFotograf(false);
$object->getAttribute()->setAllgemein($allgemeinBrick);
}
}
}
/**
* @param $article
* @param $allgemeinBrick
* @return mixed
*/
public function setArticleOkSeitToBrick($article, $allgemeinBrick)
{
if ($article->getArtikelok()) {
if (!$allgemeinBrick->getArtikelOkSeit()) {
$allgemeinBrick->setArtikelOkSeit(Carbon::now());
}
} else {
$allgemeinBrick->setArtikelOkSeit(null);
}
return $allgemeinBrick;
}
/**
* @param $article
* @param $allgemeinBrick
* @return mixed
*/
public function setFotoNokSeitToBrick($article, $allgemeinBrick)
{
if ($article->getFotoNOK()) {
if (!$allgemeinBrick->getFotoNokSeit()) {
$allgemeinBrick->setFotoNokSeit(Carbon::now());
}
} else {
$allgemeinBrick->setFotoNokSeit(null);
}
return $allgemeinBrick;
}
/**
* @param $article
* @param $allgemeinBrick
* @return mixed
*/
public function setModelarticleToBrick($article, $allgemeinBrick)
{
if ($article->getBild2() || $article->getBild12()) {
$allgemeinBrick->setModelarticle(true);
} else {
$allgemeinBrick->setModelarticle(false);
}
return $allgemeinBrick;
}
/**
* @param $article
* @param $allgemeinBrick
* @return mixed
*/
public function setImage1or11setToBrick($article, $allgemeinBrick)
{
if ($article->getBild1() || $article->getBild11()) {
$allgemeinBrick->setImage1or11set(true);
} else {
$allgemeinBrick->setImage1or11set(false);
}
return $allgemeinBrick;
}
/**
* @param $article
* @param $allgemeinBrick
* @return mixed
*/
public function setActiveDateToBrick($article, $allgemeinBrick)
{
if ($article->getAktiv()) {
if (!$allgemeinBrick->getAktivDate()) {
$allgemeinBrick->setAktivDate(Carbon::now());
}
} else {
$allgemeinBrick->setAktivDate(null);
}
return $allgemeinBrick;
}
}