File "acf-input-functions.php"

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

Download   Open   Edit   Advanced Editor   Back

<?php

function acf_filter_attrs($attrs)
{
    $filtered = array_filter($attrs, 'acf_not_empty');
    foreach (array('required', 'readonly', 'disabled', 'multiple') as $key) {
        unset($filtered[$key]);
        if (!empty($attrs[$key])) {
            $filtered[$key] = $key;
        }
    }
    return $filtered;
}
function acf_esc_attrs($attrs)
{
    $html = '';
    foreach ($attrs as $k => $v) {
        if (is_string($v) && $k !== 'value') {
            $v = trim($v);
        } elseif (is_bool($v)) {
            $v = $v ? 1 : 0;
        } elseif (is_array($v) || is_object($v)) {
            $v = json_encode($v);
        }
        $html .= sprintf(' %s="%s"', esc_attr($k), esc_attr($v));
    }
    return trim($html);
}
function acf_esc_html($string = '')
{
    return wp_kses((string) $string, 'acf');
}
function _acf_kses_allowed_html($tags, $context)
{
    global $allowedposttags;
    if ($context === 'acf') {
        return $allowedposttags;
    }
    return $tags;
}
add_filter('wp_kses_allowed_html', '_acf_kses_allowed_html', 0, 2);
function acf_hidden_input($attrs = array())
{
    echo acf_get_hidden_input($attrs);
}
function acf_get_hidden_input($attrs = array())
{
    return sprintf('<input type="hidden" %s/>', acf_esc_attrs($attrs));
}
function acf_text_input($attrs = array())
{
    echo acf_get_text_input($attrs);
}
function acf_get_text_input($attrs = array())
{
    $attrs = wp_parse_args($attrs, array('type' => 'text'));
    if (isset($attrs['value']) && is_string($attrs['value'])) {
        $attrs['value'] = htmlspecialchars($attrs['value']);
    }
    return sprintf('<input %s/>', acf_esc_attrs($attrs));
}
function acf_file_input($attrs = array())
{
    echo acf_get_file_input($attrs);
}
function acf_get_file_input($attrs = array())
{
    return sprintf('<input type="file" %s/>', acf_esc_attrs($attrs));
}
function acf_textarea_input($attrs = array())
{
    echo acf_get_textarea_input($attrs);
}
function acf_get_textarea_input($attrs = array())
{
    $value = '';
    if (isset($attrs['value'])) {
        $value = $attrs['value'];
        unset($attrs['value']);
    }
    return sprintf('<textarea %s>%s</textarea>', acf_esc_attrs($attrs), esc_textarea($value));
}
function acf_checkbox_input($attrs = array())
{
    echo acf_get_checkbox_input($attrs);
}
function acf_get_checkbox_input($attrs = array())
{
    $attrs = wp_parse_args($attrs, array('type' => 'checkbox'));
    $label = '';
    if (isset($attrs['label'])) {
        $label = $attrs['label'];
        unset($attrs['label']);
    }
    $checked = isset($attrs['checked']);
    return '<label' . ($checked ? ' class="selected"' : '') . '><input ' . acf_esc_attr($attrs) . '/> ' . acf_esc_html($label) . '</label>';
}
function acf_radio_input($attrs = array())
{
    echo acf_get_radio_input($attrs);
}
function acf_get_radio_input($attrs = array())
{
    $attrs['type'] = 'radio';
    return acf_get_checkbox_input($attrs);
}
function acf_select_input($attrs = array())
{
    echo acf_get_select_input($attrs);
}
function acf_get_select_input($attrs = array())
{
    $value = (array) acf_extract_var($attrs, 'value');
    $choices = (array) acf_extract_var($attrs, 'choices');
    return sprintf('<select %s>%s</select>', acf_esc_attrs($attrs), acf_walk_select_input($choices, $value));
}
function acf_walk_select_input($choices = array(), $values = array(), $depth = 0)
{
    $html = '';
    if ($depth == 0) {
        $values = array_map('esc_attr', $values);
    }
    if ($choices) {
        foreach ($choices as $value => $label) {
            if (is_array($label)) {
                $html .= sprintf('<optgroup label="%s">%s</optgroup>', esc_attr($value), acf_walk_select_input($label, $values, $depth + 1));
            } else {
                $attrs = array('value' => $value);
                $pos = array_search(esc_attr($value), $values);
                if ($pos !== false) {
                    $attrs['selected'] = 'selected';
                    $attrs['data-i'] = $pos;
                }
                $html .= sprintf('<option %s>%s</option>', acf_esc_attr($attrs), esc_html($label));
            }
        }
    }
    return $html;
}
function acf_clean_atts($attrs)
{
    return acf_filter_attrs($attrs);
}
function acf_esc_atts($attrs)
{
    return acf_esc_attrs($attrs);
}
function acf_esc_attr($attrs)
{
    return acf_esc_attrs($attrs);
}
function acf_esc_attr_e($attrs)
{
    echo acf_esc_attrs($attrs);
}
function acf_esc_atts_e($attrs)
{
    echo acf_esc_attrs($attrs);
}