|
- <?php
-
- namespace Lc\SovBundle\EventSubscriber;
-
- use Doctrine\ORM\EntityManagerInterface;
-
- use Lc\SovBundle\Doctrine\EntityInterface;
- use Lc\SovBundle\Doctrine\Extension\SluggableInterface;
- use Lc\SovBundle\Doctrine\Extension\SortableInterface;
- use Lc\SovBundle\Doctrine\Extension\StatusInterface;
- use Lc\SovBundle\Doctrine\Extension\TreeInterface;
- use Lc\SovBundle\Event\EntityComponentEvent;
- use Lc\SovBundle\Event\EntityManager\EntityManagerEvent;
- use Lc\SovBundle\Repository\AbstractRepositoryInterface;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
- class SluggablePropertyEventSubscriber implements EventSubscriberInterface
- {
- protected $em;
- protected $adminUrlGenerator;
-
- public function __construct(EntityManagerInterface $entityManager)
- {
- $this->em = $entityManager;
- }
-
- public static function getSubscribedEvents()
- {
- return [
- EntityComponentEvent::DUPLICATE_EVENT => ['setSluggablePropertyDuplicateEvent'],
- EntityManagerEvent::POST_UPDATE_EVENT => ['setSluggablePropertyUpdateEvent'],
- ];
- }
-
- public function setSluggablePropertyDuplicateEvent(EntityComponentEvent $event)
- {
- $entity = $event->getEntity();
- if ($entity instanceof SluggableInterface) {
- $entity->clearId(null);
- $entity->setSlug(null);
- }
- }
-
- public function setSluggablePropertyUpdateEvent(EntityManagerEvent $event)
- {
- $entity = $event->getEntity();
- if ($entity instanceof SluggableInterface) {
- $entity->setSlug(null);
- }
- }
-
- }
|