vendor/javra/re-index-on-the-fly-bundle/src/EventListener/IndexOnPostListener.php line 42

Open in your IDE?
  1. <?php
  2. namespace Javra\ReIndexOnTheFlyBundle\EventListener;
  3. use Pimcore\Event\Model\DataObjectEvent;
  4. use Pimcore\Model\Search\Backend\Data;
  5. use Pimcore\Model\Search\Backend\Data\Id;
  6. use Pimcore\Event\Model\AssetEvent;
  7. /**
  8.  * Runs when events are triggered
  9.  */
  10. class IndexOnPostListener
  11. {
  12.     /**
  13.      * AssetonPostAddEdit
  14.      * Runs after asset is created or updated and index the asset
  15.      * @param AssetEvent $e
  16.      * @return void
  17.      */
  18.     public function AssetonPostAddEdit(AssetEvent $e): void
  19.     {
  20.         $this->createUpdateIndexElement($e->getAsset());
  21.     }
  22.     /**
  23.      * AssetonPostDelete
  24.      * Runs after asset is deleted and remove it from the index
  25.      * @param AssetEvent $e
  26.      * @return void
  27.      */
  28.     public function AssetonPostDelete(AssetEvent $e): void
  29.     {
  30.         $this->deleteIndexElement($e->getAsset());
  31.     }
  32.     /**
  33.      * DataObjectOnPostAddEdit
  34.      * Runs after dataObject is created or updated and index the asset
  35.      * @param AssetEvent $e
  36.      * @return void
  37.      */
  38.     public function DataObjectOnPostAddEdit(DataObjectEvent $e): void
  39.     {
  40.         $this->createUpdateIndexElement($e->getObject());
  41.     }
  42.     /**
  43.      * DataObjectOnPostDelete
  44.      * Runs after dataObject is created or updated and index the asset
  45.      * @param AssetEvent $e
  46.      * @return void
  47.      */
  48.     public function DataObjectOnPostDelete(DataObjectEvent $e): void
  49.     {
  50.         $this->deleteIndexElement($e->getObject());
  51.     }
  52.     /**
  53.      * Creates the entry on the index table for the element if not exists otherwise update the entry
  54.      *
  55.      * @param [mixed] $element
  56.      * @return void
  57.      */
  58.     private function createUpdateIndexElement($element): void
  59.     {
  60.         $searchEntry Data::getForElement($element);
  61.         if ($searchEntry instanceof Data && $searchEntry->getId() instanceof Id) {
  62.             $searchEntry->setDataFromElement($element);
  63.         } else {
  64.             $searchEntry = new Data($element);
  65.         }
  66.         $searchEntry->save();
  67.     }
  68.     /**
  69.      * Removes the element from the index table
  70.      *
  71.      * @param [mixed] $element
  72.      * @return void
  73.      */
  74.     private function deleteIndexElement($element)
  75.     {
  76.         $searchEntry Data::getForElement($element);
  77.         if ($searchEntry instanceof Data && $searchEntry->getId() instanceof Id) {
  78.             $searchEntry->setDataFromElement($element);
  79.         }
  80.         $searchEntry->delete();
  81.     }
  82. }