bundles/ExportBundle/EventListener/HeirachyListener.php line 19

Open in your IDE?
  1. <?php 
  2. namespace ExportBundle\EventListener;
  3. use ExportBundle\Notifications\Heirachy;
  4. use Pimcore\Event\Model\ElementEventInterface;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\Department;
  7. use Pimcore\Model\DataObject;
  8. use Pimcore\Model\DataObject\Brand;
  9. use Pimcore\Model\DataObject\Collections;
  10. use Pimcore\Model\DataObject\ColourGroup;
  11. use Pimcore\Model\DataObject\MainGroup;
  12. use Pimcore\Model\DataObject\Season;
  13. use Pimcore\Model\DataObject\SubGroup;
  14. class HeirachyListener {
  15.     public function onObjectSave(ElementEventInterface $e) {
  16.         if($e instanceof DataObjectEvent) {
  17.             
  18.             if (!$e->hasArgument('isAutoSave')) {
  19.                 $dataObject $e->getObject();
  20.                 if (
  21.                     $dataObject instanceof Department
  22.                     || $dataObject instanceof MainGroup
  23.                     || $dataObject instanceof SubGroup
  24.                     || $dataObject instanceof Collections
  25.                     || $dataObject instanceof Season
  26.                     || $dataObject instanceof ColourGroup
  27.                     || $dataObject instanceof Brand
  28.                 ) {
  29.                     if ($this->CheckForChanges($dataObject)) {
  30.                         $heirachyNotification = new Heirachy();
  31.                         $heirachyNotification->SendMessage($dataObject);
  32.                     }
  33.                 }
  34.             }
  35.         }
  36.     }
  37.     
  38.     public function onObjectCreate(ElementEventInterface $e) {
  39.         if($e instanceof DataObjectEvent) {
  40.             $dataObject $e->getObject();
  41.             if ($dataObject instanceof Department) {
  42.                 $heirachyNotification = new Heirachy();
  43.                 $heirachyNotification->SendMessage($dataObject);
  44.             }
  45.         }
  46.     }
  47.     private function CheckForChanges(DataObject $dataObject) {
  48.         $type substr(strrchr(get_class($dataObject), '\\'), 1);
  49.         if (method_exists($dataObject'get'.$type.'ID') && method_exists($dataObject'getName')) {
  50.             $function 'get'.$type.'ID';
  51.             if (empty($dataObject->$function())) {
  52.                 return false;
  53.             }
  54.             if ($dataObject->isPublished() == false) {
  55.                 return false;
  56.             }
  57.             $versions $dataObject->getVersions();
  58.             $previousVersion $versions[count($versions)-2];
  59.             if (!empty($previousVersion)) {
  60.                 $previousObject $previousVersion->getData();
  61.             }
  62.             if (isset($previousObject) && !empty($previousObject)) {
  63.                 $currentId $dataObject->$function();
  64.                 $currentName $dataObject->getName();
  65.                 $previousId $previousObject->$function();
  66.                 $previousName $previousObject->getName();
  67.                 $currentStatus $dataObject->isPublished();
  68.                 $previousStatus $previousObject->isPublished();
  69.                 if ($currentId != $previousId || $currentName != $previousName || $currentStatus != $previousStatus) {
  70.                     return true;
  71.                 }
  72.             } else {
  73.                 return true;
  74.             }
  75.             return false;
  76.         }
  77.     }
  78. }