You are here

public function SetPublishingDate::doExecute in Scheduler 2.x

Same name and namespace in other branches
  1. 8 scheduler_rules_integration/src/Plugin/RulesAction/SetPublishingDate.php \Drupal\scheduler_rules_integration\Plugin\RulesAction\SetPublishingDate::doExecute()

Set the publish_on date on the entity.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity to be scheduled for publishing.

int $date: The date for publishing.

File

scheduler_rules_integration/src/Plugin/RulesAction/SetPublishingDate.php, line 25

Class

SetPublishingDate
Provides a 'Set date for scheduled publishing' action.

Namespace

Drupal\scheduler_rules_integration\Plugin\RulesAction

Code

public function doExecute(EntityInterface $entity, $date) {
  $config = \Drupal::config('scheduler.settings');
  $bundle_field = $entity
    ->getEntityType()
    ->get('entity_keys')['bundle'];
  if ($entity->{$bundle_field}->entity
    ->getThirdPartySetting('scheduler', 'publish_enable', $config
    ->get('default_publish_enable'))) {
    $entity
      ->set('publish_on', $date);

    // When this action is invoked and it operates on the entity being edited
    // then hook_entity_presave() will be executed automatically. But if this
    // action is being used to schedule a different entity then we need to
    // call the functions directly here.
    scheduler_entity_presave($entity);
  }
  else {

    // The action cannot be executed because the content type is not enabled
    // for scheduled publishing.
    $this
      ->notEnabledWarning($entity, 'publish');
  }
}