You are here

public function WebformHandlerBase::checkConditions in Webform 8.5

Same name and namespace in other branches
  1. 6.x src/Plugin/WebformHandlerBase.php \Drupal\webform\Plugin\WebformHandlerBase::checkConditions()

Check handler conditions against a webform submission.

Note: Conditions are only applied to callbacks that require a webform submissions.

Conditions are ignored by…

Parameters

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

Return value

bool TRUE if handler is disable or webform submission passes conditions. FALSE if webform submission fails conditions.

Overrides WebformHandlerInterface::checkConditions

File

src/Plugin/WebformHandlerBase.php, line 421

Class

WebformHandlerBase
Provides a base class for a webform handler.

Namespace

Drupal\webform\Plugin

Code

public function checkConditions(WebformSubmissionInterface $webform_submission) {
  $hash = $webform_submission
    ->getDataHash();
  if (isset($this->conditionsResultCache[$hash])) {
    return $this->conditionsResultCache[$hash];
  }

  // Return TRUE if conditions are disabled for the handler.
  if (!$this
    ->supportsConditions()) {
    $this->conditionsResultCache[$hash] = TRUE;
    return TRUE;
  }
  $conditions = $this
    ->getConditions();

  // Return TRUE if no conditions are defined.
  if (empty($conditions)) {
    $this->conditionsResultCache[$hash] = TRUE;
    return TRUE;
  }

  // Get conditions.
  $state = key($conditions);
  $conditions = $conditions[$state];

  // Replace tokens in conditions.
  $conditions = $this
    ->replaceTokens($conditions, $webform_submission);

  // Validation conditions.
  $result = $this->conditionsValidator
    ->validateConditions($conditions, $webform_submission);

  // Negate result for 'disabled' state.
  $result = $state === 'disabled' ? !$result : $result;
  $this->conditionsResultCache[$hash] = $result;
  return $result;
}