bundles/Jabber/WebthinkingBundle/EventListener/PreDeleteListener.php line 17

Open in your IDE?
  1. <?php 
  2. namespace Jabber\WebthinkingBundle\EventListener;
  3. use Jabber\WebthinkingBundle\Model\Job;
  4. use Jabber\WebthinkingBundle\Service\ProductIdentiferService;
  5. use Pimcore\Event\Model\ElementEventInterface;
  6. use Pimcore\Event\Model\DataObjectEvent;
  7. use Pimcore\Model\DataObject\Product;
  8. class PreDeleteListener {
  9.     public function __construct(public ProductIdentiferService $identifierService, public array $sites) {
  10.         
  11.     }
  12.     public function onPostDelete (ElementEventInterface $e) {
  13.         if (!$e->hasArgument('isAutoSave')) {
  14.             if ($e instanceof DataObjectEvent) {
  15.                 // do something with the object
  16.                 $dataObject $e->getObject();
  17.                 if ($dataObject instanceof Product) {
  18.                     $this->createWebthinkingDeleteJob($dataObject);  
  19.                 }
  20.             }
  21.         }
  22.     }
  23.     public function createWebthinkingDeleteJob(Product $dataObject) {
  24.         $originalInheritance $dataObject->getGetInheritedValues();
  25.         $dataObject->setGetInheritedValues(false);
  26.         foreach ($this->sites as $siteId=>$siteName) {
  27.             $productIdentifier $this->identifierService->get($dataObject$siteId);
  28.             if (!empty($productIdentifier)) {
  29.                 $job = new Job();
  30.                 $job->setType('delete_product');
  31.                 $job->setObject_Id($dataObject->getId());
  32.                 $job->setSiteId($siteId);
  33.                 $params = [
  34.                     'product_id'=>$dataObject->getId(),
  35.                     'product_level'=>$dataObject->getProductLevel(),
  36.                     'webthinking_id'=>$productIdentifier
  37.                 ];
  38.                 if ($dataObject->getProductLevel() == 'STYLE') {
  39.                     $params['webthinking_parent_id'] = $productIdentifier $this->identifierService->get($dataObject->getParent(), $siteId);
  40.                 } else if ($dataObject->getProductLevel() == 'CHILD') {
  41.                     $params['webthinking_parent_id'] = $productIdentifier $this->identifierService->get($dataObject->getParent()->getParent(), $siteId);
  42.                     $params['webthinking_style_id'] = $productIdentifier $this->identifierService->get($dataObject->getParent(), $siteId);
  43.                 }
  44.                 $job->setParams($params);
  45.                 $job->save();
  46.             }
  47.         }
  48.         $dataObject->setGetInheritedValues($originalInheritance);
  49.     }
  50.     
  51. }