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);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc