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');
}