Пример #1
0
 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;
 }
Пример #2
0
 protected function matches($field, $value)
 {
     return kGeoUtils::isInGeoDistance($field, $value);
 }