<?php
namespace SaintElmos\BaseBundle\EventListener;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Event\Model\AssetEvent;
use Pimcore\Event\Model\DocumentEvent;
use Pimcore\Model\Document;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Psr\Log\LoggerInterface;
class SnippetListener {
private $_logger;
private $_parentMemo = array();
private $_preventRecursionFor = array();
function __construct(LoggerInterface $logger)
{
$this->_logger = $logger;
}
public function preAdd(ElementEventInterface $e) {
$this->_logger->info('##################################### preAdd #####################################');
}
public function postAdd(ElementEventInterface $e) {
$this->_logger->info('##################################### postAdd #####################################');
}
public function preDelete(ElementEventInterface $e) {
$this->_logger->info('##################################### preDelete #####################################');
}
public function tagName(ElementEventInterface $e) {
$this->_logger->info('##################################### tagName #####################################');
}
/*
save: preUpdate, postUpdate
copy: preAdd, postAdd, postCopy
move: preUpdate, postUpdate
add: preAdd, postAdd
*/
public function preUpdate(ElementEventInterface $e)
{
$this->_logger->info('##################################### preUpdate('.$e->getDocument()->getId().') #####################################');
if ($e instanceof DocumentEvent && is_object($e->getDocument()->getParent()) && $e->getDocument()->getParent()->getType() == 'page' && $e->getDocument()->getType() == 'snippet')
{
if($e->getDocument()->getProperty('parentElement')) {
$oldParent = $e->getDocument()->getProperty('parentElement');
} else {
$e->getDocument()->setProperty('parentElement','',$e->getDocument()->getParent());
$oldParent = $e->getDocument()->getParent();
}
$e->getDocument()->setProperty('parentElement','',$e->getDocument()->getParent());
$this->_parentMemo[$e->getDocument()->getId()] = $oldParent;
}
}
public function postUpdate(ElementEventInterface $e) {
$this->_logger->info('##################################### postUpdate #####################################');
if ($e instanceof DocumentEvent && is_object($e->getDocument()->getParent()) && $e->getDocument()->getParent()->getType() == 'page' && $e->getDocument()->getType() == 'snippet')
{
if($this->_parentMemo[$e->getDocument()->getId()] != $e->getDocument()->getParent()) {
// Neuer Parent --> move
// Refresh $this->_parentMemo[$e->getId()]
// Refresh $e->getParent()
$this->_logger->info('----------> MOVE');
$this->_parentMemo[$e->getDocument()->getId()]->save();
$e->getDocument()->getParent()->save();
}
}
}
public function postCopy(ElementEventInterface $e) {
$this->_logger->info('##################################### postCopy #####################################');
}
public function postDelete(ElementEventInterface $e) {
$this->_logger->info('##################################### postDelete #####################################');
}
}
/*
*
* - { name: kernel.event_listener, event: pimcore.document.preUpdate, method: inputSnippetarryUpdate}
- { name: kernel.event_listener, event: pimcore.document.postUpdate, method: inputSnippetarryUpdate}
- { name: kernel.event_listener, event: pimcore.document.postAdd, method: inputSnippetarryUpdate }
- { name: kernel.event_listener, event: pimcore.document.preAdd, method: inputSnippetarryUpdate }
- { name: kernel.event_listener, event: pimcore.document.postCopy, method: inputSnippetarryUpdate }
- { name: kernel.event_listener, event: pimcore.document.postDelete, method: inputSnippetarryUpdate }
- { name: kernel.event_listener, event: pimcore.document.tagName, method: inputSnippetarryUpdate }
*
*/