vendor/ibexa/core/src/lib/Search/Common/EventSubscriber/TrashEventSubscriber.php line 59

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. namespace Ibexa\Core\Search\Common\EventSubscriber;
  7. use Ibexa\Contracts\Core\Repository\Events\Trash\DeleteTrashItemEvent;
  8. use Ibexa\Contracts\Core\Repository\Events\Trash\EmptyTrashEvent;
  9. use Ibexa\Contracts\Core\Repository\Events\Trash\RecoverEvent;
  10. use Ibexa\Contracts\Core\Repository\Events\Trash\TrashEvent;
  11. use Ibexa\Contracts\Core\Repository\Values\Content\TrashItem;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. class TrashEventSubscriber extends AbstractSearchEventSubscriber implements EventSubscriberInterface
  14. {
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             RecoverEvent::class => 'onRecover',
  19.             TrashEvent::class => 'onTrash',
  20.             DeleteTrashItemEvent::class => 'onDeleteTrashItem',
  21.             EmptyTrashEvent::class => 'onEmptyTrashEvent',
  22.         ];
  23.     }
  24.     public function onRecover(RecoverEvent $event)
  25.     {
  26.         $this->indexSubtree($event->getLocation()->id);
  27.     }
  28.     public function onTrash(TrashEvent $event)
  29.     {
  30.         if ($event->getTrashItem() instanceof TrashItem) {
  31.             $this->searchHandler->deleteContent(
  32.                 $event->getLocation()->contentId
  33.             );
  34.         }
  35.         $this->searchHandler->deleteLocation(
  36.             $event->getLocation()->id,
  37.             $event->getLocation()->contentId
  38.         );
  39.     }
  40.     public function onDeleteTrashItem(DeleteTrashItemEvent $event): void
  41.     {
  42.         $contentHandler $this->persistenceHandler->contentHandler();
  43.         $reverseRelationContentIds $event->getResult()->reverseRelationContentIds;
  44.         foreach ($reverseRelationContentIds as $contentId) {
  45.             $persistenceContent $contentHandler->load($contentId);
  46.             $this->searchHandler->indexContent($persistenceContent);
  47.         }
  48.     }
  49.     public function onEmptyTrashEvent(EmptyTrashEvent $event): void
  50.     {
  51.         $contentHandler $this->persistenceHandler->contentHandler();
  52.         $results $event->getResultList()->getIterator();
  53.         /** @var \Ibexa\Contracts\Core\Repository\Values\Content\Trash\TrashItemDeleteResult $result */
  54.         foreach ($results as $result) {
  55.             $reverseRelationContentIds $result->reverseRelationContentIds;
  56.             foreach ($reverseRelationContentIds as $contentId) {
  57.                 $persistenceContent $contentHandler->load($contentId);
  58.                 $this->searchHandler->indexContent($persistenceContent);
  59.             }
  60.         }
  61.     }
  62. }
  63. class_alias(TrashEventSubscriber::class, 'eZ\Publish\Core\Search\Common\EventSubscriber\TrashEventSubscriber');