<?php
namespace Elements\Bundle\OmnisearchBundle\Event;
use Elements\Bundle\OmnisearchBundle\ElasticSearchItem\IndexUpdater;
use Pimcore\Event\Model\DataObjectEvent;
use Elements\Bundle\OmnisearchBundle\ElasticSearchItem\IElasticSearchItem;
class IndexEventListener implements IndexEventListenerInterface {
/**
* @var IndexUpdater
*/
private $indexUpdater = null;
public function __construct(IndexUpdater $indexUpdater) {
$this->setIndexUpdater($indexUpdater);
}
/**
* @return IndexUpdater
*/
public function getIndexUpdater(): IndexUpdater {
return $this->indexUpdater;
}
/**
* @param IndexUpdater $indexUpdater
*/
public function setIndexUpdater(IndexUpdater $indexUpdater) {
$this->indexUpdater = $indexUpdater;
}
/**
* @inheritDoc
*/
public function onPostModify(DataObjectEvent $event) {
$dataObject = $event->getObject();
if($dataObject instanceof IElasticSearchItem) {
if($dataObject->esGetAutomaticUpdateOnSave()) {
$this->getIndexUpdater()->updateIndexForItem($dataObject);
}
}
}
/**
* @inheritDoc
*/
public function onPostDelete(DataObjectEvent $event) {
$dataObject = $event->getObject();
if($dataObject instanceof IElasticSearchItem) {
$this->getIndexUpdater()->deleteItemFromIndex($dataObject);
}
}
}