user_email_verification-8.x-1.0/src/Plugin/ECA/Event/UserEmailVerificationEvent.php
src/Plugin/ECA/Event/UserEmailVerificationEvent.php
<?php
namespace Drupal\user_email_verification\Plugin\ECA\Event;
use Drupal\eca\Attributes\Token;
use Drupal\eca\Event\Tag;
use Drupal\eca\Plugin\ECA\Event\EventBase;
use Drupal\user\UserInterface;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaBaseEvent;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaBlockAccount;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaCreated;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaDeleteAccount;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaDone;
use Drupal\user_email_verification\Event\UserEmailVerificationEcaExtendedDone;
use Drupal\user_email_verification\Event\UserEmailVerificationEvents;
/**
* Plugin implementation of ECA Events for User Email Verification.
*
* @EcaEvent(
* id = "user_email_verification_events",
* deriver = "Drupal\user_email_verification\Plugin\ECA\Event\UserEmailVerificationEventDeriver",
* eca_version_introduced = "1.0.0"
* )
*/
class UserEmailVerificationEvent extends EventBase {
/**
* {@inheritdoc}
*/
public static function definitions(): array {
return [
'user_email_verification_done' => [
'label' => 'User Email was verified',
'event_name' => UserEmailVerificationEvents::VERIFY,
'event_class' => UserEmailVerificationEcaDone::class,
'tags' => Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
'user_email_verification_extended_done' => [
'label' => 'User Email was verified after an extended period',
'event_name' => UserEmailVerificationEvents::VERIFY_EXTENDED,
'event_class' => UserEmailVerificationEcaExtendedDone::class,
'tags' => Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
'user_email_verification_created' => [
'label' => 'User account was created and Email verification requested',
'event_name' => UserEmailVerificationEvents::CREATE_VERIFICATION,
'event_class' => UserEmailVerificationEcaCreated::class,
'tags' => Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
'user_email_verification_block_account' => [
'label' => 'Blocking a user account',
'event_name' => UserEmailVerificationEvents::BLOCK_ACCOUNT,
'event_class' => UserEmailVerificationEcaBlockAccount::class,
'tags' => Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
'user_email_verification_delete_account' => [
'label' => 'Deleting a user account',
'event_name' => UserEmailVerificationEvents::DELETE_ACCOUNT,
'event_class' => UserEmailVerificationEcaDeleteAccount::class,
'tags' => Tag::CONTENT | Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
];
}
/**
* {@inheritdoc}
*/
#[Token(
name: 'account',
description: 'The user entity of the event.',
classes: [UserEmailVerificationEcaBaseEvent::class],
aliases: ['entity'],
)]
public function getData(string $key): mixed {
if (in_array($key, ['entity', 'account'], TRUE) && $this->event instanceof UserEmailVerificationEcaBaseEvent) {
$user = $this->event->getUser();
if ($user instanceof UserInterface) {
return $user;
}
}
return parent::getData($key);
}
}
