示例#1
0
文件: user.php 项目: Garth619/Femi9
 function ajax_query()
 {
     // validate
     if (!acf_verify_ajax()) {
         die;
     }
     // defaults
     $options = acf_parse_args($_POST, array('post_id' => 0, 's' => '', 'field_key' => '', 'paged' => 1));
     // vars
     $results = array();
     $args = array();
     $s = false;
     $is_search = false;
     // paged
     $args['users_per_page'] = 20;
     $args['paged'] = $options['paged'];
     // search
     if ($options['s'] !== '') {
         // strip slashes (search may be integer)
         $s = wp_unslash(strval($options['s']));
         // update vars
         $args['s'] = $s;
         $is_search = true;
     }
     // load field
     $field = acf_get_field($options['field_key']);
     if (!$field) {
         die;
     }
     // role
     if (!empty($field['role'])) {
         $args['role'] = acf_get_array($field['role']);
     }
     // search
     if ($is_search) {
         // append to $args
         $args['search'] = '*' . $options['s'] . '*';
         // add reference
         $this->field = $field;
         // add filter to modify search colums
         add_filter('user_search_columns', array($this, 'user_search_columns'), 10, 3);
     }
     // filters
     $args = apply_filters("acf/fields/user/query", $args, $field, $options['post_id']);
     $args = apply_filters("acf/fields/user/query/name={$field['_name']}", $args, $field, $options['post_id']);
     $args = apply_filters("acf/fields/user/query/key={$field['key']}", $args, $field, $options['post_id']);
     // get users
     $groups = acf_get_grouped_users($args);
     // loop
     if (!empty($groups)) {
         foreach (array_keys($groups) as $group_title) {
             // vars
             $users = acf_extract_var($groups, $group_title);
             $data = array('text' => $group_title, 'children' => array());
             // append users
             foreach (array_keys($users) as $user_id) {
                 $users[$user_id] = $this->get_result($users[$user_id], $field, $options['post_id']);
             }
             // order by search
             if ($is_search && empty($args['orderby'])) {
                 $users = acf_order_by_search($users, $args['s']);
             }
             // append to $data
             foreach ($users as $id => $title) {
                 $data['children'][] = array('id' => $id, 'text' => $title);
             }
             // append to $r
             $results[] = $data;
         }
     }
     // optgroup or single
     if (!empty($args['role']) && count($args['role']) == 1) {
         $results = $results[0]['children'];
     }
     // return
     acf_send_ajax_results(array('results' => $results, 'limit' => $args['users_per_page']));
 }
示例#2
0
 function get_choices($options = array())
 {
     // defaults
     $options = acf_parse_args($options, array('post_id' => 0, 's' => '', 'field_key' => '', 'paged' => 1));
     // vars
     $r = array();
     $args = array();
     // paged
     $args['users_per_page'] = 20;
     $args['paged'] = $options['paged'];
     // load field
     $field = acf_get_field($options['field_key']);
     // bail early if no field
     if (!$field) {
         return false;
     }
     // update $args
     if (!empty($field['role'])) {
         $args['role'] = acf_get_array($field['role']);
     }
     // search
     if ($options['s']) {
         // append to $args
         $args['search'] = '*' . $options['s'] . '*';
         // add reference
         $this->field = $field;
         // add filter to modify search colums
         add_filter('user_search_columns', array($this, 'user_search_columns'), 10, 3);
     }
     // filters
     $args = apply_filters("acf/fields/user/query", $args, $field, $options['post_id']);
     $args = apply_filters("acf/fields/user/query/name={$field['_name']}", $args, $field, $options['post_id']);
     $args = apply_filters("acf/fields/user/query/key={$field['key']}", $args, $field, $options['post_id']);
     // get users
     $groups = acf_get_grouped_users($args);
     // bail early if no groups
     if (empty($groups)) {
         return false;
     }
     // loop
     foreach (array_keys($groups) as $group_title) {
         // vars
         $users = acf_extract_var($groups, $group_title);
         $data = array('text' => $group_title, 'children' => array());
         // append users
         foreach (array_keys($users) as $user_id) {
             $users[$user_id] = $this->get_result($users[$user_id], $field, $options['post_id']);
         }
         // order by search
         if (!empty($args['s'])) {
             $users = acf_order_by_search($users, $args['s']);
         }
         // append to $data
         foreach ($users as $id => $title) {
             $data['children'][] = array('id' => $id, 'text' => $title);
         }
         // append to $r
         $r[] = $data;
     }
     // optgroup or single
     if (!empty($args['role']) && count($args['role']) == 1) {
         $r = $r[0]['children'];
     }
     // return
     return $r;
 }