src/Service/EventSubscriber/ValidateEventTypeSpamSubscriber.php line 53

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Harmonizely\Service\EventSubscriber;
  4. use Harmonizely\Core\Security\Contract\ISecurityHelper;
  5. use Harmonizely\Service\Event\CreateEventTypeEvent;
  6. use Harmonizely\Service\Event\UpdateEventTypeEvent;
  7. use Harmonizely\Service\RegistrationAbuse\SpamValidationScheduler;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. /**
  10.  * Schedules a delayed spam re-check of the current user whenever they create or
  11.  * update an event type — the event-type analog of em calling
  12.  * Company_SpamValidator::run() after a service/provider save.
  13.  *
  14.  * Hooks the same CreateEventTypeEvent / UpdateEventTypeEvent that
  15.  * {@see DirectorySubscriber} already listens to, so the scheduling lives next to
  16.  * the existing post-save side effects instead of in the controller.
  17.  */
  18. class ValidateEventTypeSpamSubscriber implements EventSubscriberInterface
  19. {
  20.     /**
  21.      * @var SpamValidationScheduler
  22.      */
  23.     private SpamValidationScheduler $spamValidationScheduler;
  24.     /**
  25.      * @var ISecurityHelper
  26.      */
  27.     private ISecurityHelper $securityHelper;
  28.     public function __construct(
  29.         SpamValidationScheduler $spamValidationScheduler,
  30.         ISecurityHelper $securityHelper
  31.     ) {
  32.         $this->spamValidationScheduler $spamValidationScheduler;
  33.         $this->securityHelper $securityHelper;
  34.     }
  35.     /**
  36.      * @return string[]
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             CreateEventTypeEvent::NAME => 'onEventTypeSaved',
  42.             UpdateEventTypeEvent::NAME => 'onEventTypeSaved',
  43.         ];
  44.     }
  45.     public function onEventTypeSaved(): void
  46.     {
  47.         $user $this->securityHelper->getUser();
  48.         if (null !== $user) {
  49.             $this->spamValidationScheduler->schedule($user->getId());
  50.         }
  51.     }
  52. }