File "compatibility.php"

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

Download   Open   Edit   Advanced Editor   Back

<?php

if (!defined('ABSPATH')) {
    exit;
}
if (!class_exists('ACF_Compatibility')) {
    class ACF_Compatibility
    {
        function __construct()
        {
            add_filter('acf/validate_field', array($this, 'validate_field'), 20, 1);
            add_filter('acf/validate_field/type=textarea', array($this, 'validate_textarea_field'), 20, 1);
            add_filter('acf/validate_field/type=relationship', array($this, 'validate_relationship_field'), 20, 1);
            add_filter('acf/validate_field/type=post_object', array($this, 'validate_relationship_field'), 20, 1);
            add_filter('acf/validate_field/type=page_link', array($this, 'validate_relationship_field'), 20, 1);
            add_filter('acf/validate_field/type=image', array($this, 'validate_image_field'), 20, 1);
            add_filter('acf/validate_field/type=file', array($this, 'validate_image_field'), 20, 1);
            add_filter('acf/validate_field/type=wysiwyg', array($this, 'validate_wysiwyg_field'), 20, 1);
            add_filter('acf/validate_field/type=date_picker', array($this, 'validate_date_picker_field'), 20, 1);
            add_filter('acf/validate_field/type=taxonomy', array($this, 'validate_taxonomy_field'), 20, 1);
            add_filter('acf/validate_field/type=date_time_picker', array($this, 'validate_date_time_picker_field'), 20, 1);
            add_filter('acf/validate_field/type=user', array($this, 'validate_user_field'), 20, 1);
            add_filter('acf/validate_field_group', array($this, 'validate_field_group'), 20, 1);
            add_filter('acf/field_wrapper_attributes', array($this, 'field_wrapper_attributes'), 20, 2);
            add_filter('acf/location/validate_rule/type=post_taxonomy', array($this, 'validate_post_taxonomy_location_rule'), 20, 1);
            add_filter('acf/location/validate_rule/type=post_category', array($this, 'validate_post_taxonomy_location_rule'), 20, 1);
            add_action('acf/init', array($this, 'init'));
        }
        function init()
        {
            if (defined('ACF_LITE') && ACF_LITE) {
                acf_update_setting('show_admin', false);
            }
        }
        function field_wrapper_attributes($wrapper, $field)
        {
            if (acf_get_compatibility('field_wrapper_class')) {
                $wrapper['class'] .= " field_type-{$field['type']}";
                if ($field['key']) {
                    $wrapper['class'] .= " field_key-{$field['key']}";
                }
            }
            return $wrapper;
        }
        function validate_field($field)
        {
            if (isset($field['conditional_logic']['status'])) {
                if ($field['conditional_logic']['status']) {
                    $field['conditional_logic'] = acf_convert_rules_to_groups($field['conditional_logic']['rules'], $field['conditional_logic']['allorany']);
                } else {
                    $field['conditional_logic'] = 0;
                }
            }
            return $field;
        }
        function validate_textarea_field($field)
        {
            $formatting = acf_extract_var($field, 'formatting');
            if ($formatting === 'br') {
                $field['new_lines'] = 'br';
            }
            return $field;
        }
        function validate_relationship_field($field)
        {
            if (acf_in_array('all', $field['post_type'])) {
                $field['post_type'] = array();
            }
            if (acf_in_array('all', $field['taxonomy'])) {
                $field['taxonomy'] = array();
            }
            if (isset($field['result_elements'])) {
                $field['elements'] = acf_extract_var($field, 'result_elements');
            }
            return $field;
        }
        function validate_image_field($field)
        {
            if (isset($field['save_format'])) {
                $field['return_format'] = acf_extract_var($field, 'save_format');
            }
            if ($field['return_format'] == 'object') {
                $field['return_format'] = 'array';
            }
            return $field;
        }
        function validate_wysiwyg_field($field)
        {
            if ($field['media_upload'] === 'yes') {
                $field['media_upload'] = 1;
            } elseif ($field['media_upload'] === 'no') {
                $field['media_upload'] = 0;
            }
            return $field;
        }
        function validate_date_picker_field($field)
        {
            if (isset($field['date_format'])) {
                $date_format = $field['date_format'];
                $display_format = $field['display_format'];
                $display_format = acf_convert_date_to_php($display_format);
                $field['display_format'] = $display_format;
                $field['save_format'] = $date_format;
                unset($field['date_format']);
            }
            return $field;
        }
        function validate_taxonomy_field($field)
        {
            if (isset($field['load_save_terms'])) {
                $field['save_terms'] = acf_extract_var($field, 'load_save_terms');
            }
            return $field;
        }
        function validate_date_time_picker_field($field)
        {
            if (!empty($field['time_format'])) {
                $time_format = acf_extract_var($field, 'time_format');
                $date_format = acf_extract_var($field, 'date_format');
                $get_as_timestamp = acf_extract_var($field, 'get_as_timestamp');
                $time_format = acf_convert_time_to_php($time_format);
                $date_format = acf_convert_date_to_php($date_format);
                $field['return_format'] = $date_format . ' ' . $time_format;
                $field['display_format'] = $date_format . ' ' . $time_format;
                if ($get_as_timestamp === 'true') {
                    $field['return_format'] = 'U';
                }
            }
            return $field;
        }
        function validate_user_field($field)
        {
            if (acf_in_array('all', $field['role'])) {
                $field['role'] = '';
            }
            if (isset($field['field_type'])) {
                $field_type = acf_extract_var($field, 'field_type');
                if ($field_type === 'multi_select') {
                    $field['multiple'] = true;
                }
            }
            return $field;
        }
        function validate_field_group($field_group)
        {
            $version = 5;
            if (!$field_group['key']) {
                $version = 4;
                $field_group['key'] = isset($field_group['id']) ? "group_{$field_group['id']}" : uniqid('group_');
            }
            if (isset($field_group['options'])) {
                $options = acf_extract_var($field_group, 'options');
                $field_group = array_merge($field_group, $options);
            }
            if (isset($field_group['location']['rules'])) {
                $field_group['location'] = acf_convert_rules_to_groups($field_group['location']['rules'], $field_group['location']['allorany']);
            }
            $replace = array('taxonomy' => 'post_taxonomy', 'ef_media' => 'attachment', 'ef_taxonomy' => 'taxonomy', 'ef_user' => 'user_role', 'user_type' => 'current_user_role');
            if ($version > 4) {
                unset($replace['taxonomy']);
            }
            if ($field_group['location']) {
                foreach ($field_group['location'] as $i => $group) {
                    if ($group) {
                        foreach ($group as $j => $rule) {
                            if (isset($replace[$rule['param']])) {
                                $field_group['location'][$i][$j]['param'] = $replace[$rule['param']];
                            }
                        }
                    }
                }
            }
            if (isset($field_group['layout'])) {
                $field_group['style'] = acf_extract_var($field_group, 'layout');
            }
            if ($field_group['style'] === 'no_box') {
                $field_group['style'] = 'seamless';
            }
            return $field_group;
        }
        function validate_post_taxonomy_location_rule($rule)
        {
            if (is_numeric($rule['value'])) {
                $term = acf_get_term($rule['value']);
                if ($term) {
                    $rule['value'] = acf_encode_term($term);
                }
            }
            return $rule;
        }
    }
    acf_new_instance('ACF_Compatibility');
}
function acf_get_compatibility($name)
{
    return apply_filters("acf/compatibility/{$name}", false);
}