protected function applyCondition($fieldValue, $condition, $refValue, $strippedFieldValue) { switch ($condition) { case self::COND_MATCH: if (!count($refValue)) { return null; } return in_array($fieldValue, $refValue); case self::COND_REGEX: if (!count($refValue)) { return null; } foreach ($refValue as $curRefValue) { if ($fieldValue === $curRefValue || preg_match("/{$curRefValue}/i", $fieldValue)) { return true; } } return false; case self::COND_SITE_MATCH: $result = strpos($fieldValue, "kwidget") === false ? '0' : '1'; if (!count($refValue)) { return $result; } foreach ($refValue as $curRefValue) { if ($strippedFieldValue === $curRefValue || strpos($strippedFieldValue, "." . $curRefValue) !== false) { return $result . '1'; } } return $result . '0'; case self::COND_IP_RANGE: if (!count($refValue)) { return null; } foreach ($refValue as $curRefValue) { if (kIpAddressUtils::isIpInRange($fieldValue, $curRefValue)) { return true; } } return false; case self::COND_GEO_DISTANCE: if (!count($refValue)) { return null; } foreach ($refValue as $curRefValue) { if (kGeoUtils::isInGeoDistance($fieldValue, $curRefValue)) { return true; } } return false; } return $strippedFieldValue; }
protected function matches($field, $value) { return kGeoUtils::isInGeoDistance($field, $value); }