You are here

public function NumericRangeArgumentValidator::validateArgument in Views Contextual Range Filter 8

Validate our argument.

Overrides NumericArgumentValidator::validateArgument

File

src/Plugin/views/argument_validator/NumericRangeArgumentValidator.php, line 24

Class

NumericRangeArgumentValidator
Validate whether an argument is a numeric range.

Namespace

Drupal\contextual_range_filter\Plugin\views\argument_validator

Code

public function validateArgument($argument) {

  // Plus sign may arrive as a space, so cover both.
  $ranges = preg_split('/[+ ]/', $argument);
  foreach ($ranges as $range) {
    $minmax = explode(CONTEXTUAL_RANGE_FILTER_SEPARATOR1, $range);
    if (count($minmax) < 2) {
      $minmax = explode(CONTEXTUAL_RANGE_FILTER_SEPARATOR2, $range);
    }
    if (count($minmax) < 2) {

      // Not a range but single value. Delegate to parent class.
      if (!parent::validateArgument($argument)) {
        return FALSE;
      }
    }
    elseif (!(parent::validateArgument($minmax[0]) && parent::validateArgument($minmax[1]) && $minmax[0] <= $minmax[1] || empty($minmax[0]) && parent::validateArgument($minmax[1]) || empty($minmax[1]) && parent::validateArgument($minmax[0]))) {
      return FALSE;
    }
  }
  return TRUE;
}