bundles/SaintElmos/BaseBundle/EventListener/SnippetListener.php line 92

Open in your IDE?
  1. <?php
  2. namespace SaintElmos\BaseBundle\EventListener;
  3. use Pimcore\Event\Model\ElementEventInterface;
  4. use Pimcore\Event\Model\DataObjectEvent;
  5. use Pimcore\Event\Model\AssetEvent;
  6. use Pimcore\Event\Model\DocumentEvent;
  7. use Pimcore\Model\Document;
  8. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  9. use Psr\Log\LoggerInterface;
  10. class SnippetListener {
  11.     private $_logger;
  12.     private $_parentMemo = array();
  13.     private $_preventRecursionFor = array();
  14.     function __construct(LoggerInterface $logger)
  15.     {
  16.         $this->_logger $logger;
  17.     }
  18.     public function preAdd(ElementEventInterface $e) {
  19.         $this->_logger->info('##################################### preAdd #####################################');
  20.     }
  21.     public function postAdd(ElementEventInterface $e) {
  22.         $this->_logger->info('##################################### postAdd #####################################');
  23.     }
  24.     public function preDelete(ElementEventInterface $e) {
  25.         $this->_logger->info('##################################### preDelete #####################################');
  26.     }
  27.     public function tagName(ElementEventInterface $e) {
  28.         $this->_logger->info('##################################### tagName #####################################');
  29.     }
  30.     /*
  31.     save: preUpdate, postUpdate
  32.     copy: preAdd, postAdd, postCopy
  33.     move: preUpdate, postUpdate
  34.     add: preAdd, postAdd
  35.     */
  36.     public function preUpdate(ElementEventInterface $e)
  37.     {
  38.         $this->_logger->info('##################################### preUpdate('.$e->getDocument()->getId().') #####################################');
  39.         if ($e instanceof DocumentEvent && is_object($e->getDocument()->getParent()) && $e->getDocument()->getParent()->getType() == 'page' && $e->getDocument()->getType() == 'snippet')
  40.         {
  41.             if($e->getDocument()->getProperty('parentElement')) {
  42.                 $oldParent $e->getDocument()->getProperty('parentElement');
  43.             } else {
  44.                 $e->getDocument()->setProperty('parentElement','',$e->getDocument()->getParent());
  45.                 $oldParent $e->getDocument()->getParent();
  46.             }
  47.             $e->getDocument()->setProperty('parentElement','',$e->getDocument()->getParent());
  48.             $this->_parentMemo[$e->getDocument()->getId()] = $oldParent;
  49.         }
  50.     }
  51.     public function postUpdate(ElementEventInterface $e) {
  52.         $this->_logger->info('##################################### postUpdate #####################################');
  53.         if ($e instanceof DocumentEvent && is_object($e->getDocument()->getParent()) && $e->getDocument()->getParent()->getType() == 'page' && $e->getDocument()->getType() == 'snippet')
  54.         {
  55.             if($this->_parentMemo[$e->getDocument()->getId()] != $e->getDocument()->getParent()) {
  56.                 // Neuer Parent --> move
  57.                 // Refresh $this->_parentMemo[$e->getId()]
  58.                 // Refresh $e->getParent()
  59.                 $this->_logger->info('----------> MOVE');
  60.                 $this->_parentMemo[$e->getDocument()->getId()]->save();
  61.                 $e->getDocument()->getParent()->save();
  62.             }
  63.         }
  64.     }
  65.     public function postCopy(ElementEventInterface $e) {
  66.         $this->_logger->info('##################################### postCopy #####################################');
  67.     }
  68.     public function postDelete(ElementEventInterface $e) {
  69.         $this->_logger->info('##################################### postDelete #####################################');
  70.     }
  71. }
  72. /*
  73.  *
  74.  * - { name: kernel.event_listener, event: pimcore.document.preUpdate, method: inputSnippetarryUpdate}
  75.             - { name: kernel.event_listener, event: pimcore.document.postUpdate, method: inputSnippetarryUpdate}
  76.             - { name: kernel.event_listener, event: pimcore.document.postAdd, method: inputSnippetarryUpdate }
  77.             - { name: kernel.event_listener, event: pimcore.document.preAdd, method: inputSnippetarryUpdate }
  78.             - { name: kernel.event_listener, event: pimcore.document.postCopy, method: inputSnippetarryUpdate }
  79.             - { name: kernel.event_listener, event: pimcore.document.postDelete, method: inputSnippetarryUpdate }
  80.             - { name: kernel.event_listener, event: pimcore.document.tagName, method: inputSnippetarryUpdate }
  81.  *
  82.  */