EventTypeModuleCode::validateRule PHP Method

validateRule() public method

public validateRule ( $field_type, $element_num, $field_num )
    public function validateRule($field_type, $element_num, $field_num)
    {
        $errors = array();
        if (!isset($this->validation_rules[$field_type])) {
            return $errors;
        }
        foreach ($this->validation_rules[$field_type] as $field => $rules) {
            foreach ($rules as $rule) {
                if (isset($rule['field_property'])) {
                    $key = $field . '[' . $rule['field_property'] . ']';
                    $value = @$_POST[$field][$rule['field_property']];
                } else {
                    $key = $this->substitutePostValue($field, $element_num, $field_num);
                    $value = @$_POST[$key];
                }
                if (isset($errors[$key])) {
                    continue;
                }
                if (isset($rule['condition'])) {
                    $condition_key = $this->substitutePostValue($rule['condition']['field'], $element_num, $field_num);
                    if (isset($rule['condition']['value_list'])) {
                        if (!in_array(@$_POST[$condition_key], $rule['condition']['value_list'])) {
                            continue;
                        }
                    } else {
                        if (@$_POST[$condition_key] != $rule['condition']['value']) {
                            continue;
                        }
                    }
                }
                if ($rule['type'] == 'required') {
                    if (is_array($value) && empty($value) || !is_array($value) && strlen($value) < 1) {
                        $errors[$key] = isset($rule['message']) ? $rule['message'] : 'This field is required';
                        $errors[$key] .= ' (' . $value . ') [' . $key . ']';
                        continue;
                    }
                } elseif (strlen($value) < 1) {
                    continue;
                }
                switch ($rule['type']) {
                    case 'length':
                        if (isset($rule['regstrip'])) {
                            $checkval = preg_replace($rule['regstrip'], '', $value);
                        } else {
                            $checkval = $value;
                        }
                        if (isset($rule['max']) && strlen($checkval) > $rule['max']) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Cannot be longer than ' . $rule['max'] . ' characters';
                        }
                        if (isset($rule['min']) && strlen($checkval) < $rule['min']) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be at least ' . $rule['min'] . ' characters';
                        }
                        break;
                    case 'integer':
                        if (!preg_match('/^\\-?[0-9]+$/', $value)) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be an integer';
                        }
                        break;
                    case 'integer_positive':
                        if (!ctype_digit($value)) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be a positive integer';
                        }
                        break;
                    case 'number':
                        if (!preg_match('/^\\-?[0-9\\.]+$/', $value)) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be a number';
                        }
                        break;
                    case 'number_positive':
                        if (!preg_match('/^[0-9\\.]+$/', $value)) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be a positive number';
                        }
                        break;
                    case 'compare':
                        if (isset($rule['compare_field'])) {
                            $compare = $this->substitutePostValue($rule['compare_field'], $element_num, $field_num);
                            $compare = $_POST[$compare];
                        } else {
                            $compare = $rule['compare_value'];
                        }
                        switch ($rule['operator']) {
                            case 'greater_equal':
                                if ($value < $compare) {
                                    echo "[{$value}][{$compare}]";
                                    $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be ' . $compare . ' or greater';
                                }
                                break;
                            case 'lesser_equal':
                                if ($value > $compare) {
                                    $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Must be ' . $compare . ' or lower';
                                }
                                break;
                        }
                        break;
                    case 'regex':
                        if (!preg_match($rule['regex'], $value)) {
                            $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Invalid characters in input';
                        }
                        break;
                    case 'exists':
                        if (isset($rule['exists_method'])) {
                            $method = $rule['exists_method'];
                            if ($this->{$method}($value)) {
                                $errors[$key] = isset($rule['message']) ? $rule['message'] : 'Already exists';
                            }
                        }
                        break;
                }
            }
        }
        return $errors;
    }