scheduled_publish-8.x-3.9/tests/modules/scheduled_publish_test/src/EventSubscriber/ScheduledStateChange.php

tests/modules/scheduled_publish_test/src/EventSubscriber/ScheduledStateChange.php
<?php

namespace Drupal\scheduled_publish_test\EventSubscriber;

use Drupal\scheduled_publish\Event\ScheduledStateChangeEvent;
use Drupal\scheduled_publish\ScheduledPublishEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * A subscriber to listen for scheduled_publish ScheduledStateChange events.
 *
 * @see \Drupal\Tests\scheduled_publish\Functional\ScheduledStateChangeEventTest
 */
class ScheduledStateChange implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents(): array {
    return [
      ScheduledPublishEvents::SCHEDULED_STATE_CHANGE => 'onScheduledStateChange',
    ];
  }

  /**
   * Run an action on scheduled state change.
   *
   * @param \Drupal\scheduled_publish\Event\ScheduledStateChangeEvent $event
   *   The event to process.
   */
  public function onScheduledStateChange(ScheduledStateChangeEvent $event): void {
    // Get the information from the event.
    $entity = $event->getEntity();
    $oldModerationState = $event->getOldModerationState();
    $newModerationState = $event->getNewModerationState();
    $scheduledPublishField = $event->getScheduledPublishField();
    $scheduledValue = $event->getScheduledValue();

    // If there is a field_test, then append some data from the event to it.
    if ($entity->hasField('field_test')) {
      $fieldBefore = $entity->get('field_test')->getString();
      $testString = \implode('//', [
        $fieldBefore,
        $entity->getEntityTypeId(),
        $entity->id(),
        $oldModerationState,
        $newModerationState,
        $scheduledPublishField,
        \implode('/', $scheduledValue),
      ]);
      $entity->set('field_test', $testString);
    }
  }

}

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

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