File "validation.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/advanced-custom-fields/includes/validation.php
File size: 3.97 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

if (!defined('ABSPATH')) {
    exit;
}
if (!class_exists('acf_validation')) {
    class acf_validation
    {
        function __construct()
        {
            $this->errors = array();
            add_action('wp_ajax_acf/validate_save_post', array($this, 'ajax_validate_save_post'));
            add_action('wp_ajax_nopriv_acf/validate_save_post', array($this, 'ajax_validate_save_post'));
            add_action('acf/validate_save_post', array($this, 'acf_validate_save_post'), 5);
        }
        function add_error($input, $message)
        {
            $this->errors[] = array('input' => $input, 'message' => $message);
        }
        function get_error($input)
        {
            if (empty($this->errors)) {
                return false;
            }
            foreach ($this->errors as $error) {
                if ($error['input'] === $input) {
                    return $error;
                }
            }
            return false;
        }
        function get_errors()
        {
            if (empty($this->errors)) {
                return false;
            }
            return $this->errors;
        }
        function reset_errors()
        {
            $this->errors = array();
        }
        function ajax_validate_save_post()
        {
            if (!acf_verify_ajax()) {
                die;
            }
            $json = array('valid' => 1, 'errors' => 0);
            if (acf_validate_save_post()) {
                wp_send_json_success($json);
            }
            $json['valid'] = 0;
            $json['errors'] = acf_get_validation_errors();
            wp_send_json_success($json);
        }
        function acf_validate_save_post()
        {
            if (empty($_POST['acf'])) {
                return;
            }
            acf_validate_values($_POST['acf'], 'acf');
        }
    }
    acf()->validation = new acf_validation();
}
function acf_add_validation_error($input, $message = '')
{
    return acf()->validation->add_error($input, $message);
}
function acf_get_validation_errors()
{
    return acf()->validation->get_errors();
}
function acf_get_validation_error()
{
    return acf()->validation->get_error($input);
}
function acf_reset_validation_errors()
{
    return acf()->validation->reset_errors();
}
function acf_validate_save_post($show_errors = false)
{
    do_action('acf/validate_save_post');
    $errors = acf_get_validation_errors();
    if (!$errors) {
        return true;
    }
    if ($show_errors) {
        $message = '<h2>' . __('Validation failed', 'acf') . '</h2>';
        $message .= '<ul>';
        foreach ($errors as $error) {
            $message .= '<li>' . $error['message'] . '</li>';
        }
        $message .= '</ul>';
        wp_die($message, __('Validation failed', 'acf'));
    }
    return false;
}
function acf_validate_values($values, $input_prefix = '')
{
    if (empty($values)) {
        return;
    }
    foreach ($values as $key => $value) {
        $field = acf_get_field($key);
        $input = $input_prefix . '[' . $key . ']';
        if (!$field) {
            continue;
        }
        acf_validate_value($value, $field, $input);
    }
}
function acf_validate_value($value, $field, $input)
{
    $valid = true;
    $message = sprintf(__('%s value is required', 'acf'), $field['label']);
    if ($field['required']) {
        if (empty($value) && !is_numeric($value)) {
            $valid = false;
        }
    }
    $valid = apply_filters("acf/validate_value/type={$field['type']}", $valid, $value, $field, $input);
    $valid = apply_filters("acf/validate_value/name={$field['_name']}", $valid, $value, $field, $input);
    $valid = apply_filters("acf/validate_value/key={$field['key']}", $valid, $value, $field, $input);
    $valid = apply_filters('acf/validate_value', $valid, $value, $field, $input);
    if (!empty($valid) && is_string($valid)) {
        $message = $valid;
        $valid = false;
    }
    if (!$valid) {
        acf_add_validation_error($input, $message);
        return false;
    }
    return true;
}