You are here

protected function ActionWebformHandler::executeAction in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Plugin/WebformHandler/ActionWebformHandler.php \Drupal\webform\Plugin\WebformHandler\ActionWebformHandler::executeAction()

Execute this action.

Parameters

\Drupal\webform\WebformSubmissionInterface $webform_submission: A webform submission.

1 call to ActionWebformHandler::executeAction()
ActionWebformHandler::postSave in src/Plugin/WebformHandler/ActionWebformHandler.php
Acts on a saved webform submission before the insert or update hook is invoked.

File

src/Plugin/WebformHandler/ActionWebformHandler.php, line 272

Class

ActionWebformHandler
Webform submission action handler.

Namespace

Drupal\webform\Plugin\WebformHandler

Code

protected function executeAction(WebformSubmissionInterface $webform_submission) {

  // Set sticky.
  if ($this->configuration['sticky'] !== NULL) {
    $webform_submission
      ->setSticky($this->configuration['sticky']);
  }

  // Set locked.
  if ($this->configuration['locked'] !== NULL) {
    $webform_submission
      ->setLocked($this->configuration['locked']);
  }

  // Append notes.
  if ($this->configuration['notes']) {
    $notes = rtrim($webform_submission
      ->getNotes());
    $notes .= ($notes ? PHP_EOL . PHP_EOL : '') . $this
      ->replaceTokens($this->configuration['notes'], $webform_submission);
    $webform_submission
      ->setNotes($notes);
  }

  // Set data.
  if ($this->configuration['data']) {
    $data = Yaml::decode($this->configuration['data']);
    $data = $this
      ->replaceTokens($data, $webform_submission);
    foreach ($data as $key => $value) {
      $webform_submission
        ->setElementData($key, $value);
    }
  }

  // Display message.
  if ($this->configuration['message']) {
    $message = WebformHtmlEditor::checkMarkup($this
      ->replaceTokens($this->configuration['message'], $webform_submission));
    $message_type = $this->configuration['message_type'];
    $this
      ->messenger()
      ->addMessage($this->renderer
      ->renderPlain($message), $message_type);
  }

  // Resave the webform submission without trigger any hooks or handlers.
  $webform_submission
    ->resave();

  // Display debugging information about the current action.
  $this
    ->displayDebug($webform_submission);
}