You are here

public function SetUnpublishingDate::doExecute in Scheduler 2.x

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

Set the unpublish_on date on the entity.

Parameters

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

int $date: The date for unpublishing.

File

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

Class

SetUnpublishingDate
Provides a 'Set date for scheduled unpublishing' 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', 'unpublish_enable', $config
    ->get('default_unpublish_enable'))) {
    $entity
      ->set('unpublish_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 unpublishing.
    $this
      ->notEnabledWarning($entity, 'unpublish');
  }
}