scheduled_publish-8.x-3.9/src/Plugin/ECA/Event/ScheduledPublishEvent.php
src/Plugin/ECA/Event/ScheduledPublishEvent.php
<?php
namespace Drupal\scheduled_publish\Plugin\ECA\Event;
use Drupal\eca\Attribute\EcaEvent;
use Drupal\eca\Attribute\Token;
use Drupal\eca\Event\Tag;
use Drupal\eca\Plugin\ECA\Event\EventBase;
use Drupal\scheduled_publish\Event\ScheduledStateChangeEvent;
use Drupal\scheduled_publish\ScheduledPublishEvents;
/**
* Plugin implementation of the ECA Scheduled Publish events.
*/
#[EcaEvent(
id: 'scheduled_publish',
deriver: 'Drupal\scheduled_publish\Plugin\ECA\Event\ScheduledPublishEventDeriver',
version_introduced: '4.1.1',
)]
class ScheduledPublishEvent extends EventBase {
/**
* {@inheritdoc}
*/
public static function definitions(): array {
return [
'scheduled_state_change' => [
'label' => 'Scheduled state change',
'description' => 'An entity is changing state on schedule.',
'event_name' => ScheduledPublishEvents::SCHEDULED_STATE_CHANGE,
'event_class' => ScheduledStateChangeEvent::class,
'tags' => Tag::CONTENT | Tag::WRITE | Tag::PERSISTENT | Tag::AFTER,
],
];
}
/**
* {@inheritdoc}
*/
#[Token(name: 'entity', description: 'The entity that is changing state.', classes: [ScheduledStateChangeEvent::class])]
#[Token(name: 'old_moderation_state', description: 'The "old" moderation state that the entity is changing from.', classes: [ScheduledStateChangeEvent::class])]
#[Token(name: 'new_moderation_state', description: 'The "new" moderation state that the entity will change to.', classes: [ScheduledStateChangeEvent::class])]
#[Token(name: 'scheduled_publish_field', description: 'The scheduled_publish field for the entity changing state.', classes: [ScheduledStateChangeEvent::class])]
#[Token(name: 'scheduled_value', description: 'The new value for the scheduled_publish field.', classes: [ScheduledStateChangeEvent::class])]
public function getData(string $key): mixed {
$event = $this->event;
if ($event instanceof ScheduledStateChangeEvent) {
if ($key === 'entity' && $entity = $event->getEntity()) {
return $entity;
}
if ($key === 'old_moderation_state' && $oldModerationState = $event->getOldModerationState()) {
return $oldModerationState;
}
if ($key === 'new_moderation_state' && $newModerationState = $event->getNewModerationState()) {
return $newModerationState;
}
if ($key === 'scheduled_publish_field' && $scheduledPublishField = $event->getScheduledPublishField()) {
return $scheduledPublishField;
}
if ($key === 'scheduled_value') {
return $event->getScheduledValue();
}
}
return parent::getData($key);
}
}
