function ActionExpression::executeWithState

Execute the expression with a given Rules state.

Note that this does not auto-save any changes.

Parameters

\Drupal\rules\Context\ExecutionStateInterface $state: The state with all the execution variables in it.

Return value

null|bool The expression may return a boolean value after execution, this is used by conditions that return their evaluation result.

Overrides ExpressionInterface::executeWithState

File

src/Plugin/RulesExpression/ActionExpression.php, line 102

Class

ActionExpression
Provides an executable action expression.

Namespace

Drupal\rules\Plugin\RulesExpression

Code

public function executeWithState(ExecutionStateInterface $state) {
  $this->rulesDebugLogger
    ->info('Evaluating the action %name.', [
    '%name' => $this->getLabel(),
    'element' => $this,
  ]);
  $action = $this->actionManager
    ->createInstance($this->configuration['action_id']);
  $this->prepareContext($action, $state);
  $action->execute();
  $auto_saves = $action->autoSaveContext();
  foreach ($auto_saves as $context_name) {
    // Mark parameter contexts for auto saving in the Rules state.
    $state->saveChangesLater($this->configuration['context_mapping'][$context_name]);
  }
  // Now that the action has been executed it can provide additional
  // context which we will have to pass back in the evaluation state.
  $this->addProvidedContext($action, $state);
}