You are here

public function field_validation_ip_validator::validate in Field Validation 7.2

Validate field.

Overrides field_validation_validator::validate

File

field_validation_extras/plugins/validator/field_validation_ip_validator.inc, line 21

Class

field_validation_ip_validator

Code

public function validate() {
  $settings = $this->rule->settings;
  if ($this->value !== '' && !is_null($this->value)) {
    $version = isset($settings['version']) ? $settings['version'] : '';
    switch ($version) {
      case '4':
        $flag = FILTER_FLAG_IPV4;
        break;
      case '6':
        $flag = FILTER_FLAG_IPV6;
        break;
      case '4_no_priv':
        $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE;
        break;
      case '6_no_priv':
        $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE;
        break;
      case 'all_no_priv':
        $flag = FILTER_FLAG_NO_PRIV_RANGE;
        break;
      case '4_no_res':
        $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE;
        break;
      case '6_no_res':
        $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE;
        break;
      case 'all_no_res':
        $flag = FILTER_FLAG_NO_RES_RANGE;
        break;
      case '4_public':
        $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
        break;
      case '6_public':
        $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
        break;
      case 'all_public':
        $flag = FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
        break;
      default:
        $flag = NULL;
        break;
    }
    if (!filter_var($this->value, FILTER_VALIDATE_IP, $flag)) {
      $this
        ->set_error();
    }
  }
}