protected function doClean($values) { if (null === $values) { $values = array(); } if (!is_array($values)) { throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); } $leftValueSet = $this->_isValueSet($values, $this->getOption('left_field')); $rightValueSet = $this->_isValueSet($values, $this->getOption('right_field')); $skipIfBothEmpty = $this->getOption('skip_if_both_empty'); $skipIfOneEmpty = $this->getOption('skip_if_one_empty'); $skip = false; if ($skipIfOneEmpty && (!$leftValueSet || !$rightValueSet)) { $skip = true; } else { if ($skipIfBothEmpty && !$leftValueSet && !$rightValueSet) { $skip = true; } } return $skip ? $values : parent::doClean($values); }