File "class-acf-field-user.php"

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

Download   Open   Edit   Advanced Editor   Back

<?php

if (!class_exists('ACF_Field_User')) {
    class ACF_Field_User extends ACF_Field
    {
        function initialize()
        {
            $this->name = 'user';
            $this->label = __('User', 'acf');
            $this->category = 'relational';
            $this->defaults = array('role' => '', 'multiple' => 0, 'allow_null' => 0, 'return_format' => 'array');
            acf_add_filter_variations('acf/fields/user/query', array('name', 'key'), 1);
            acf_add_filter_variations('acf/fields/user/result', array('name', 'key'), 2);
            acf_add_filter_variations('acf/fields/user/search_columns', array('name', 'key'), 3);
            add_action('wp_ajax_acf/fields/user/query', array($this, 'ajax_query'));
            add_action('wp_ajax_nopriv_acf/fields/user/query', array($this, 'ajax_query'));
        }
        function render_field_settings($field)
        {
            acf_render_field_setting($field, array('label' => __('Filter by role', 'acf'), 'instructions' => '', 'type' => 'select', 'name' => 'role', 'choices' => acf_get_user_role_labels(), 'multiple' => 1, 'ui' => 1, 'allow_null' => 1, 'placeholder' => __('All user roles', 'acf')));
            acf_render_field_setting($field, array('label' => __('Allow Null?', 'acf'), 'instructions' => '', 'name' => 'allow_null', 'type' => 'true_false', 'ui' => 1));
            acf_render_field_setting($field, array('label' => __('Select multiple values?', 'acf'), 'instructions' => '', 'name' => 'multiple', 'type' => 'true_false', 'ui' => 1));
            acf_render_field_setting($field, array('label' => __('Return Format', 'acf'), 'instructions' => '', 'type' => 'radio', 'name' => 'return_format', 'choices' => array('array' => __('User Array', 'acf'), 'object' => __('User Object', 'acf'), 'id' => __('User ID', 'acf')), 'layout' => 'horizontal'));
        }
        function render_field($field)
        {
            $field['type'] = 'select';
            $field['ui'] = 1;
            $field['ajax'] = 1;
            $field['choices'] = array();
            if ($field['value']) {
                $user_ids = array_map('intval', acf_array($field['value']));
                $users = acf_get_users(array('include' => $user_ids));
                if ($users) {
                    foreach ($users as $user) {
                        $field['choices'][$user->ID] = $this->get_result($user, $field);
                    }
                }
            }
            acf_render_field($field);
        }
        function get_result($user, $field, $post_id = 0)
        {
            $item = acf_get_user_result($user);
            $post_id = $post_id ? $post_id : acf_get_form_data('post_id');
            return apply_filters('acf/fields/user/result', $item['text'], $user, $field, $post_id);
        }
        function load_value($value, $post_id, $field)
        {
            if ($value === 'null') {
                return false;
            }
            return $value;
        }
        function format_value($value, $post_id, $field)
        {
            if (!$value) {
                return false;
            }
            $user_ids = array_map('intval', acf_array($value));
            $users = acf_get_users(array('include' => $user_ids));
            if (!$users) {
                return false;
            }
            $value = array();
            foreach ($users as $user) {
                if ($field['return_format'] == 'object') {
                    $item = $user;
                } elseif ($field['return_format'] == 'array') {
                    $item = array('ID' => $user->ID, 'user_firstname' => $user->user_firstname, 'user_lastname' => $user->user_lastname, 'nickname' => $user->nickname, 'user_nicename' => $user->user_nicename, 'display_name' => $user->display_name, 'user_email' => $user->user_email, 'user_url' => $user->user_url, 'user_registered' => $user->user_registered, 'user_description' => $user->user_description, 'user_avatar' => get_avatar($user->ID));
                } else {
                    $item = $user->ID;
                }
                $value[] = $item;
            }
            if (!$field['multiple']) {
                $value = array_shift($value);
            }
            return $value;
        }
        function update_value($value, $post_id, $field)
        {
            if (empty($value)) {
                return $value;
            }
            if (acf_is_sequential_array($value)) {
                $value = array_map('acf_idval', $value);
                $value = array_map('strval', $value);
            } else {
                $value = acf_idval($value);
            }
            return $value;
        }
        function ajax_query()
        {
            if (isset($_REQUEST['s'])) {
                $_REQUEST['search'] = $_REQUEST['s'];
            }
            if (isset($_REQUEST['paged'])) {
                $_REQUEST['page'] = $_REQUEST['paged'];
            }
            add_action('acf/ajax/query_users/init', array($this, 'ajax_query_init'), 10, 2);
            add_filter('acf/ajax/query_users/args', array($this, 'ajax_query_args'), 10, 3);
            add_filter('acf/ajax/query_users/result', array($this, 'ajax_query_result'), 10, 3);
            add_filter('acf/ajax/query_users/search_columns', array($this, 'ajax_query_search_columns'), 10, 4);
            acf_get_instance('ACF_Ajax_Query_Users')->request();
        }
        function ajax_query_init($request, $query)
        {
            if (!$query->field) {
                $query->send(new WP_Error('acf_missing_field', __('Error loading field.', 'acf'), array('status' => 404)));
            }
        }
        function ajax_query_args($args, $request, $query)
        {
            if ($query->field['role']) {
                $args['role__in'] = acf_array($query->field['role']);
            }
            return apply_filters('acf/fields/user/query', $args, $query->field, $query->post_id);
        }
        function ajax_query_search_columns($columns, $search, $WP_User_Query, $query)
        {
            return apply_filters('acf/fields/user/search_columns', $columns, $search, $WP_User_Query, $query->field);
        }
        function ajax_query_result($item, $user, $query)
        {
            $item['text'] = apply_filters('acf/fields/user/result', $item['text'], $user, $query->field, $query->post_id);
            return $item;
        }
        function get_ajax_query($options = array())
        {
            _deprecated_function(__FUNCTION__, '5.8.9');
            return array();
        }
        function user_search_columns($columns, $search, $WP_User_Query)
        {
            _deprecated_function(__FUNCTION__, '5.8.9');
            return $columns;
        }
    }
    acf_register_field_type('ACF_Field_User');
}