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

Open in your IDE?
  1. <?php 
  2. namespace Jabber\WebthinkingBundle\EventListener;
  3. use Jabber\WebthinkingBundle\Model\Job;
  4. use Pimcore\Event\Model\ElementEventInterface;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\Product;
  7. use Pimcore\Model\User;
  8. class PostUpdateListener {
  9.     public function __construct(public bool $automationEnabled, public array $dataQualityFields, public int $systemUser) {
  10.     }
  11.     public function onPostUpdate(ElementEventInterface $e) {
  12.         $foo $e->getArguments();
  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.                     if ($dataObject->getUserModification() != (int) $this->systemUser) {
  19.                         if ($dataObject->getProductLevel() != 'CHILD') {
  20.                             $this->getDataQuality($dataObject);
  21.                             if ($dataObject->getProductLevel() == 'STYLE') {
  22.                                 $this->createStyleRangeJob($dataObject);
  23.                             }
  24.                         }
  25.                     }
  26.                     // $this->createWebthinkingDeleteJob($dataObject);  
  27.                 }
  28.             }
  29.         }
  30.     }
  31.     public function savedByUser($userId) {
  32.         $user User::getById($userId);
  33.         
  34.     }
  35.     public function createStyleRangeJob(Product $dataObject) {
  36.         if (!empty($dataObject->get('StyleRanges')) || !empty($dataObject->get('AssociatedProducts'))) {
  37.             $categoryJob = new Job();
  38.             $categoryJob->setObject_Id($dataObject->getId());
  39.             $categoryJob->setType('style_range');
  40.             $categoryJob->setSite_Id(0);
  41.             $categoryJob->setParams(['sites'=>'all']);
  42.             $categoryJob->save();
  43.         }
  44.     }
  45.     public function getDataQuality(Product $dataObject) {
  46.         if ($this->automationEnabled == true) {
  47.             foreach ($this->dataQualityFields as $siteId => $dataQualityField) {
  48.                 $qualityValue $dataObject->get($dataQualityField);
  49.                 if (is_int($qualityValue) || is_float($qualityValue)) {
  50.                     $job = new Job();
  51.                     $job->setType('product');
  52.                     $job->setSiteId($siteId);
  53.                     $job->setObjectId($dataObject->getId());
  54.                     $params = [
  55.                         'productId'=>$dataObject->getId(),
  56.                         'type'=>$dataObject->getProductLevel(),
  57.                         'siteId'=>$siteId,
  58.                         'active'=>0,
  59.                         'userId'=>$dataObject->getUserModification(),
  60.                         'versionCount'=>$dataObject->getVersionCount()
  61.                     ];
  62.                     if ($qualityValue 100) {
  63.                         $params['active'] = 1;      
  64.                     }
  65.                     $job->setParams($params);
  66.                     $job->save();
  67.                 }
  68.             }
  69.         }
  70.     }
  71. }