src/EventListener/PreUpdateObjectListener.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Message\AveryCategoryConcatData;
  4. use App\Message\AveryHandleProductConcat;
  5. use App\Service\AverySettingsService;
  6. use Masterminds\HTML5\Parser\EventHandler;
  7. use Pimcore\Console\Application;
  8. use Pimcore\Event;
  9. use Pimcore\Log\ApplicationLogger;
  10. use Pimcore\Model\DataObject\AveryProdBase;
  11. use Pimcore\Model\DataObject\AveryRegion;
  12. use Pimcore\Model\DataObject\Concrete;
  13. use Pimcore\Model\DataObject\ProductCategory;
  14. use Pimcore\Model\Notification\Service\NotificationService;
  15. use Pimcore\Model\User;
  16. use Pimcore\Tool\Console;
  17. use Symfony\Component\Console\Input\ArrayInput;
  18. use Symfony\Component\Console\Output\BufferedOutput;
  19. use Symfony\Component\HttpKernel\KernelInterface;
  20. use Symfony\Component\Workflow\Event\TransitionEvent;
  21. use Symfony\Component\Workflow\Event\EnteredEvent;
  22. use Pimcore\Event\Model\ElementEventInterface;
  23. use Pimcore\Model\DataObject\MetoProduct;
  24. use Symfony\Component\Messenger\MessageBusInterface;
  25. use Pimcore\Model\DataObject\ProductValueRangeOption;
  26. use Pimcore\Model\DataObject\MetoWorkflowManager;
  27. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  28. use Pimcore\Mail;
  29. use Symfony\Contracts\Translation\TranslatorInterface;
  30. class PreUpdateObjectListener
  31. {
  32.     private static $storedObj;
  33.     private static $triggered;
  34.     private static $from;
  35.     private static $to;
  36.     private static $concatGenTriggered;
  37.     private static $emailSent false;
  38.     private $translator;
  39.     private $messageBus;
  40.     private $logger;
  41.     private $notificationService;
  42.     private AverySettingsService $settingsService;
  43.     private $enableConcatGeneration;
  44.     public function __construct(ApplicationLogger $loggerNotificationService $notificationServiceTranslatorInterface $translatorMessageBusInterface $messageBusAverySettingsService $settingsService)
  45.     {
  46.         $this->translator $translator;
  47.         $this->logger $logger;
  48.         $this->notificationService $notificationService;
  49.         $this->messageBus $messageBus;
  50.         $this->settingsService $settingsService;
  51.         $this->enableConcatGeneration $this->settingsService->getDataFromWebsiteSetting("averyChkEnableAutoConcatGeneration""de")->getData();
  52.     }
  53.     public function onObjectPreDelete(ElementEventInterface $e)
  54.     {
  55.         $object $e->getObject();
  56.         if ($object instanceof ProductValueRangeOption) {
  57.             if ($object == null || $object->getParent() == null) {
  58.                 return;
  59.             }
  60.             $fieldDefinition $object->getParent()->getParent();
  61.             if ($fieldDefinition == null) {
  62.                 return;
  63.             }
  64.             $cache = new FilesystemAdapter();
  65.             $cache_hash '_' md5($fieldDefinition->getName());
  66.             $item $cache->getItem($cache_hash);
  67.             $item->expiresAfter(0);
  68.             $cache->save($item);
  69.         }
  70.     }
  71.     public function onObjectPreUpdate(ElementEventInterface $e)
  72.     {
  73.         $object $e->getObject();
  74.         if ($object instanceof ProductValueRangeOption) {
  75.             if ($object == null || $object->getParent() == null) {
  76.                 return;
  77.             }
  78.             $fieldDefinition $object->getParent()->getParent();
  79.             if ($fieldDefinition == null) {
  80.                 return;
  81.             }
  82.             $cache = new FilesystemAdapter();
  83.             $cache_hash '_' md5($fieldDefinition->getName());
  84.             $item $cache->getItem($cache_hash);
  85.             $item->expiresAfter(0);
  86.             $cache->save($item);
  87.         }
  88.         if ($object instanceof MetoProduct) {
  89.             if (self::$to != null && self::$from != null) {
  90.                 if (self::$to == 'isReady') {
  91.                     if ($object->getPublished() == false) {
  92.                         $object->setPublished(true);
  93.                         $object->save();
  94.                     }
  95.                 } else {
  96.                     if ($object->getPublished() == true) {
  97.                         $object->setPublished(false);
  98.                         $object->save();
  99.                     }
  100.                 }
  101.                 if (self::$to == 'inEdit' && self::$from != 'inEdit' && self::$from != 'newProduct' && self::$emailSent == false) {
  102.                     self::$emailSent true;
  103.                     $lineOfbussines $object->getLineOfBusiness();
  104.                     $productManager $object->getProduktmanager();
  105.                     $manager = new \Pimcore\Model\DataObject\MetoWorkflowManager\Listing();
  106.                     $manager->filterByProduktmanager($productManager);
  107.                     $manager->setCondition('lineOfBusiness LIKE ?''%,' $lineOfbussines ',%');
  108.                     $receiverList $manager->getData();
  109.                     foreach ($receiverList as $receiver) {
  110.                         $user User::getById($receiver->getPimcoreUser());
  111.                         if ($user !== null && !empty($user->getEmail())) {
  112.                             $mail = new \Pimcore\Mail();
  113.                             $mail->to($user->getEmail());
  114.                             $params['deeplink'] = '/admin/login/deeplink?object_' $object->getId() . '_object';
  115.                             $mail->setDocument('/email/metoWorkflow');
  116.                             $mail->setParams($params);
  117.                             $mail->getHeaders()->addTextHeader('X-Transport''meto');
  118.                             $mail->send();
  119.                         }
  120.                     }
  121.                 }
  122.             }
  123.             return;
  124.         }
  125.         if ($object instanceof AveryProdBase && self::$concatGenTriggered == false) {
  126.             $productId $object->getId();
  127.             if (!$e->hasArgument("saveVersionOnly")) {
  128.                 try {
  129.                     $object->averyGenerateConcats($object$this->translator$this->logger$this->settingsServicefalse);
  130.                 } catch (\Throwable $t) {
  131.                     $this->logger->debug("Generating concats failed for product " $productId " with key " $object->getKey() . " and error: " $t);
  132.                 }
  133.                 self::$concatGenTriggered true;
  134.             }
  135.         }
  136.         /*
  137.                 if( ($object instanceof ProductCategory || $object instanceof AveryRegion ) && self::$concatGenTriggered == false){
  138.                     $this->logger->debug("Category or Region save was detected for: " . $object->getKey() . " - " . $object->getId());
  139.                     $categoryId = $object->getId();
  140.                     if(!$e->hasArgument("saveVersionOnly")) {
  141.                         try {
  142.                             $this->iterateConcatCategories($object, $this->translator, $this->logger);
  143.                         } catch (\Throwable $t) {
  144.                             $this->logger->debug("Generating concats failed for category " . $categoryId . " with key " . $object->getKey() . " and error: " . $t);
  145.                         }
  146.                         self::$concatGenTriggered = true;
  147.                     }
  148.                 }
  149.         */
  150.     }
  151.     public function onObjectPostUpdate(ElementEventInterface $e)
  152.     {
  153.         if ($this->enableConcatGeneration == ('1')) {
  154.             $object $e->getObject();
  155.             if ($object instanceof ProductCategory || $object instanceof AveryRegion) {
  156.                 $categoryId $object->getId();
  157.                 if (!$e->hasArgument("saveVersionOnly")) {
  158.                     $message = new AveryCategoryConcatData($categoryId);
  159.                     $this->messageBus->dispatch($message);
  160.                     $this->logger->debug("AVERY CATEGORY CONCAT | Added Category " $object->getKey() . " into the category generator queue");
  161.                 }
  162.             }
  163.         }
  164.     }
  165.     public function onWorkflowUpdate(TransitionEvent $event)
  166.     {
  167.         // $o = self::$storedObj;
  168.         self::$triggered true;
  169.         $obj $event->getSubject();
  170.         //    $t = $obj->getProduktname();
  171.         $newState $obj->getWorkflowState();
  172.         self::$from $newState;
  173.     }
  174.     public function onWorkflowEntered(EnteredEvent $event)
  175.     {
  176.         //$o = self::$storedObj;
  177.         self::$triggered true;
  178.         $obj $event->getSubject();
  179.         //$t = $obj->getProduktname();
  180.         $newState $obj->getWorkflowState();
  181.         self::$to $newState;
  182.     }
  183.     public function onPimWorkflow(Event $event)
  184.     {
  185.         $event $event;
  186.         $obj $event->getSubject();
  187.         $newState $obj->getWorkflowState();
  188.     }
  189. }