<?php
/**
* Created by PhpStorm.
* User: ishwar
* Date: 4/16/19
* Time: 12:00 PM
*/
namespace PfcImportBundle\EventListener;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Model\DataObject;
class PfcListener
{
/**
* @param ElementEventInterface $event
* Set initial workflow state to sku_created to avoid further workflow on variant
* for model set workflow Product ready for migrated data
*/
public function postAdd(ElementEventInterface $event): void
{
if ($event instanceof DataObjectEvent) {
$object = $event->getObject();
if ($object instanceof DataObject\Product AND $object->gettype() == "variant") {
// This is done already in another event listener so no need to do it here.
// $skuObjectId = $object->getId();
//
// $db = \Pimcore\Db::get();
// // $db->query("INSERT element_workflow_state(cid, ctype, place, workflow) VALUES($skuObjectId, 'object', 'open_sku_creation,sku_created', 'Product_Workflow') ");
}
else {
if ($object instanceof DataObject\Product) {
$modelObjectId = $object->getId();
$db = \Pimcore\Db::get();
// $db->query("INSERT element_workflow_state(cid, ctype, place, workflow) VALUES($modelObjectId, 'object', 'open_sku_creation,sku_created,product_ready', 'Product_Workflow') ");
}
}
}
}
/**
* @param $object
* Set inital workflow state to sku_created to avoid further workflow on variant
*/
public function setSkuWorkFlowState($object)
{
}
/**
* @param ElementEventInterface $event
* @throws \Exception
*/
public function onPreUpdate(ElementEventInterface $event): void
{
$this->updateProductModificationDate($event);
}
/**
* @param ElementEventInterface $event
* @throws \Exception
*/
public function onPreDelete(ElementEventInterface $event): void
{
$this->updateProductModificationDate($event);
}
/**
* @param ElementEventInterface $event
* @throws \Exception
*/
public function updateProductModificationDate(ElementEventInterface $event): void
{
if ($event instanceof DataObjectEvent) {
$objects = $event->getObject();
if ($objects instanceof DataObject\MenuCategory) {
$productObjects = $objects->getProducts();
foreach ($productObjects as $productObject) {
$product = DataObject::getById($productObject->getId());
if ($product instanceof DataObject\Product) {
/**
* @TODO quickfix for now
*/
$product->save(); // so that modified date changes; to track in incremental product export
}
}
}
}
}
}