You are here

public function WebformSame::preSave in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Plugin/WebformElement/WebformSame.php \Drupal\webform\Plugin\WebformElement\WebformSame::preSave()

Acts on a webform submission element before the presave hook is invoked.

Parameters

array $element: An element.

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

Overrides WebformElementBase::preSave

File

src/Plugin/WebformElement/WebformSame.php, line 180

Class

WebformSame
Provides a 'webform_same' element.

Namespace

Drupal\webform\Plugin\WebformElement

Code

public function preSave(array &$element, WebformSubmissionInterface $webform_submission) {

  // Make sure destination is always sync'd when a webform submission
  // is saved.
  $webform = $webform_submission
    ->getWebform();
  $same = $webform_submission
    ->getElementData($element['#webform_key']);
  if (!$same) {
    return;
  }
  $source = $element['#source'];
  $destination = $element['#destination'];

  // Make sure source and destination elements exist.
  if (!$webform
    ->getElement($source) || !$webform
    ->getElement($destination)) {
    return;
  }

  // Sync source data with destination data.
  $source_data = $webform_submission
    ->getElementData($source);
  $webform_submission
    ->setElementData($destination, $source_data);
}