vendor/pimcore/customer-management-framework-bundle/src/Event/PimcoreObjectEventListener.php line 138

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace CustomerManagementFrameworkBundle\Event;
  15. use CustomerManagementFrameworkBundle\CustomerSaveManager\CustomerSaveManagerInterface;
  16. use CustomerManagementFrameworkBundle\Model\AbstractObjectActivity;
  17. use CustomerManagementFrameworkBundle\Model\ActivityInterface;
  18. use CustomerManagementFrameworkBundle\Model\CustomerInterface;
  19. use CustomerManagementFrameworkBundle\Model\CustomerSegmentInterface;
  20. use CustomerManagementFrameworkBundle\SegmentManager\SegmentManagerInterface;
  21. use Pimcore\Event\Model\DataObjectEvent;
  22. use Pimcore\Event\Model\DataObjectImportEvent;
  23. use Pimcore\Event\Model\ElementEventInterface;
  24. use Pimcore\Model\DataObject\LinkActivityDefinition;
  25. class PimcoreObjectEventListener
  26. {
  27.     /**
  28.      * @var CustomerSaveManagerInterface
  29.      */
  30.     protected $customerSaveManager;
  31.     public function __construct(CustomerSaveManagerInterface $customerSaveManager)
  32.     {
  33.         $this->customerSaveManager $customerSaveManager;
  34.     }
  35.     public function onPreUpdate(ElementEventInterface $e)
  36.     {
  37.         if (!$e instanceof DataObjectEvent) {
  38.             return;
  39.         }
  40.         $object $e->getObject();
  41.         if ($object instanceof CustomerInterface) {
  42.             $this->customerSaveManager->preUpdate($object);
  43.         } elseif ($object instanceof CustomerSegmentInterface) {
  44.             \Pimcore::getContainer()->get(SegmentManagerInterface::class)->preSegmentUpdate($object);
  45.         }
  46.     }
  47.     public function onPostUpdate(ElementEventInterface $e)
  48.     {
  49.         if (!$e instanceof DataObjectEvent) {
  50.             return;
  51.         }
  52.         $object $e->getObject();
  53.         if ($object instanceof CustomerInterface) {
  54.             \Pimcore::getContainer()->get(CustomerSaveManagerInterface::class)->postUpdate($object);
  55.         } elseif ($object instanceof AbstractObjectActivity) {
  56.             $trackIt true;
  57.             if (!$object->cmfUpdateOnSave()) {
  58.                 if (\Pimcore::getContainer()->get('cmf.activity_store')->getEntryForActivity($object)) {
  59.                     $trackIt false;
  60.                 }
  61.             }
  62.             if ($trackIt) {
  63.                 \Pimcore::getContainer()->get('cmf.activity_manager')->trackActivity($object);
  64.             }
  65.         }
  66.     }
  67.     public function onPreAdd(ElementEventInterface $e)
  68.     {
  69.         if (!$e instanceof DataObjectEvent) {
  70.             return;
  71.         }
  72.         $object $e->getObject();
  73.         if ($object instanceof CustomerInterface) {
  74.             $this->customerSaveManager->preAdd($object);
  75.         } elseif ($object instanceof LinkActivityDefinition) {
  76.             $object->setCode(uniqid());
  77.         }
  78.     }
  79.     public function onPostAdd(ElementEventInterface $e)
  80.     {
  81.         if (!$e instanceof DataObjectEvent) {
  82.             return;
  83.         }
  84.         $object $e->getObject();
  85.         if ($object instanceof CustomerInterface) {
  86.             $this->customerSaveManager->postAdd($object);
  87.         }
  88.     }
  89.     public function onPreDelete(ElementEventInterface $e)
  90.     {
  91.         if (!$e instanceof DataObjectEvent) {
  92.             return;
  93.         }
  94.         $object $e->getObject();
  95.         if ($object instanceof CustomerInterface) {
  96.             $this->customerSaveManager->preDelete($object);
  97.         }
  98.     }
  99.     public function onPostDelete(ElementEventInterface $e)
  100.     {
  101.         if (!$e instanceof DataObjectEvent) {
  102.             return;
  103.         }
  104.         $object $e->getObject();
  105.         if ($object instanceof CustomerInterface) {
  106.             $this->customerSaveManager->postDelete($object);
  107.         } elseif ($object instanceof ActivityInterface) {
  108.             \Pimcore::getContainer()->get('cmf.activity_manager')->deleteActivity($object);
  109.         } elseif ($object instanceof CustomerSegmentInterface) {
  110.             \Pimcore::getContainer()->get(SegmentManagerInterface::class)->postSegmentDelete($object);
  111.         }
  112.     }
  113.     public function onPreSave(DataObjectImportEvent $e)
  114.     {
  115.         $data $e->getAdditionalData();
  116.         $customer $e->getObject();
  117.         if(!$customer instanceof CustomerInterface) {
  118.             return;
  119.         }
  120.         if($data) {
  121.             /**
  122.              * @var SegmentManagerInterface $segmentManager
  123.              */
  124.             $segmentManager = \Pimcore::getContainer()->get(SegmentManagerInterface::class);
  125.             /**
  126.              * check to be compatible with different Pimcore versions
  127.              */
  128.             if(is_array($data)) {
  129.                 $data $data['customerSegmentId'];
  130.             }
  131.             if($segment $segmentManager->getSegmentById($data)) {
  132.                 $segmentManager->mergeSegments($customer, [$segment], [], 'Customer CSV importer');
  133.             }
  134.         }
  135.     }
  136. }