当前位置: 首页>>代码示例>>PHP>>正文


PHP BP_XProfile_ProfileData::get_data_for_user方法代码示例

本文整理汇总了PHP中BP_XProfile_ProfileData::get_data_for_user方法的典型用法代码示例。如果您正苦于以下问题:PHP BP_XProfile_ProfileData::get_data_for_user方法的具体用法?PHP BP_XProfile_ProfileData::get_data_for_user怎么用?PHP BP_XProfile_ProfileData::get_data_for_user使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BP_XProfile_ProfileData的用法示例。


在下文中一共展示了BP_XProfile_ProfileData::get_data_for_user方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: get

 /**
  * get()
  *
  * Populates the BP_XProfile_Group object with profile field groups, fields, and field data
  *
  * @package BuddyPress XProfile
  *
  * @global $wpdb WordPress DB access object.
  * @global BuddyPress $bp The one true BuddyPress instance
  *
  * @param array $args Takes an array of parameters:
  *		'profile_group_id' - Limit results to a single profile group
  *		'user_id' - Required if you want to load a specific user's data
  *		'hide_empty_groups' - Hide groups without any fields
  *		'hide_empty_fields' - Hide fields where the user has not provided data
  *		'fetch_fields' - Load each group's fields
  *		'fetch_field_data' - Load each field's data. Requires a user_id
  *		'exclude_groups' - Comma-separated list of groups to exclude
  *		'exclude_fields' - Comma-separated list of fields to exclude
  *		'update_meta_cache' - Whether to pre-fetch xprofilemeta
  *		   for all retrieved groups, fields, and data
  *
  * @return array $groups
  */
 public static function get($args = array())
 {
     global $wpdb, $bp;
     $defaults = array('profile_group_id' => false, 'user_id' => bp_displayed_user_id(), 'hide_empty_groups' => false, 'hide_empty_fields' => false, 'fetch_fields' => false, 'fetch_field_data' => false, 'fetch_visibility_level' => false, 'exclude_groups' => false, 'exclude_fields' => false, 'update_meta_cache' => true);
     $r = wp_parse_args($args, $defaults);
     extract($r, EXTR_SKIP);
     // Keep track of object IDs for cache-priming
     $object_ids = array('group' => array(), 'field' => array(), 'data' => array());
     $where_sql = '';
     if (!empty($profile_group_id)) {
         $where_sql = $wpdb->prepare('WHERE g.id = %d', $profile_group_id);
     } elseif ($exclude_groups) {
         $where_sql = $wpdb->prepare("WHERE g.id NOT IN ({$exclude_groups})");
     }
     if (!empty($hide_empty_groups)) {
         $group_ids = $wpdb->get_col("SELECT DISTINCT g.id FROM {$bp->profile->table_name_groups} g INNER JOIN {$bp->profile->table_name_fields} f ON g.id = f.group_id {$where_sql} ORDER BY g.group_order ASC");
     } else {
         $group_ids = $wpdb->get_col("SELECT DISTINCT g.id FROM {$bp->profile->table_name_groups} g {$where_sql} ORDER BY g.group_order ASC");
     }
     $groups = self::get_group_data($group_ids);
     if (empty($fetch_fields)) {
         return $groups;
     }
     // Get the group ids
     $group_ids = array();
     foreach ((array) $groups as $group) {
         $group_ids[] = $group->id;
     }
     // Store for meta cache priming
     $object_ids['group'] = $group_ids;
     $group_ids = implode(',', (array) $group_ids);
     if (empty($group_ids)) {
         return $groups;
     }
     // Support arrays and comma-separated strings
     $exclude_fields_cs = wp_parse_id_list($exclude_fields);
     // Visibility - Handled here so as not to be overridden by sloppy use of the
     // exclude_fields parameter. See bp_xprofile_get_hidden_fields_for_user()
     $exclude_fields_cs = array_merge($exclude_fields_cs, bp_xprofile_get_hidden_fields_for_user($user_id));
     $exclude_fields_cs = implode(',', $exclude_fields_cs);
     if (!empty($exclude_fields_cs)) {
         $exclude_fields_sql = "AND id NOT IN ({$exclude_fields_cs})";
     } else {
         $exclude_fields_sql = '';
     }
     // Fetch the fields
     $fields = $wpdb->get_results("SELECT id, name, description, type, group_id, is_required FROM {$bp->profile->table_name_fields} WHERE group_id IN ( {$group_ids} ) AND parent_id = 0 {$exclude_fields_sql} ORDER BY field_order");
     // Store field IDs for meta cache priming
     $object_ids['field'] = wp_list_pluck($fields, 'id');
     if (empty($fields)) {
         return $groups;
     }
     // Maybe fetch field data
     if (!empty($fetch_field_data)) {
         // Fetch the field data for the user.
         foreach ((array) $fields as $field) {
             $field_ids[] = $field->id;
         }
         $field_ids_sql = implode(',', (array) $field_ids);
         if (!empty($field_ids) && !empty($user_id)) {
             $field_data = BP_XProfile_ProfileData::get_data_for_user($user_id, $field_ids);
         }
         // Remove data-less fields, if necessary
         if (!empty($hide_empty_fields) && !empty($field_ids) && !empty($field_data)) {
             // Loop through the results and find the fields that have data.
             foreach ((array) $field_data as $data) {
                 // Empty fields may contain a serialized empty array
                 $maybe_value = maybe_unserialize($data->value);
                 if (!empty($maybe_value) && false !== ($key = array_search($data->field_id, $field_ids))) {
                     // Fields that have data get removed from the list
                     unset($field_ids[$key]);
                 }
             }
             // The remaining members of $field_ids are empty. Remove them.
             foreach ($fields as $field_key => $field) {
                 if (in_array($field->id, $field_ids)) {
//.........这里部分代码省略.........
开发者ID:kd5ytx,项目名称:Empirical-Wordpress,代码行数:101,代码来源:bp-xprofile-classes.php

示例2: get


//.........这里部分代码省略.........
     $in_sql = '';
     if (!empty($include_field_ids)) {
         $include_field_ids_cs = implode(',', array_map('intval', $include_field_ids));
         $in_sql = " AND id IN ({$include_field_ids_cs}) ";
     }
     // Fetch the fields.
     $field_ids = $wpdb->get_col("SELECT id FROM {$bp->profile->table_name_fields} WHERE group_id IN ( {$group_ids_in} ) AND parent_id = 0 {$exclude_fields_sql} {$in_sql} ORDER BY field_order");
     // Bail if no fields.
     if (empty($field_ids)) {
         return $groups;
     }
     $field_ids = array_map('intval', $field_ids);
     // Prime the field cache.
     $uncached_field_ids = bp_get_non_cached_ids($field_ids, 'bp_xprofile_fields');
     if (!empty($uncached_field_ids)) {
         $_uncached_field_ids = implode(',', array_map('intval', $uncached_field_ids));
         $uncached_fields = $wpdb->get_results("SELECT * FROM {$bp->profile->table_name_fields} WHERE id IN ({$_uncached_field_ids})");
         foreach ($uncached_fields as $uncached_field) {
             $fid = intval($uncached_field->id);
             wp_cache_set($fid, $uncached_field, 'bp_xprofile_fields');
         }
     }
     // Pull field objects from the cache.
     $fields = array();
     foreach ($field_ids as $field_id) {
         $fields[] = xprofile_get_field($field_id);
     }
     // Store field IDs for meta cache priming.
     $object_ids['field'] = $field_ids;
     // Maybe fetch field data.
     if (!empty($r['fetch_field_data'])) {
         // Get field data for user ID.
         if (!empty($field_ids) && !empty($r['user_id'])) {
             $field_data = BP_XProfile_ProfileData::get_data_for_user($r['user_id'], $field_ids);
         }
         // Remove data-less fields, if necessary.
         if (!empty($r['hide_empty_fields']) && !empty($field_ids) && !empty($field_data)) {
             // Loop through the results and find the fields that have data.
             foreach ((array) $field_data as $data) {
                 // Empty fields may contain a serialized empty array.
                 $maybe_value = maybe_unserialize($data->value);
                 // Valid field values of 0 or '0' get caught by empty(), so we have an extra check for these. See #BP5731.
                 if ((!empty($maybe_value) || '0' == $maybe_value) && false !== ($key = array_search($data->field_id, $field_ids))) {
                     // Fields that have data get removed from the list.
                     unset($field_ids[$key]);
                 }
             }
             // The remaining members of $field_ids are empty. Remove them.
             foreach ($fields as $field_key => $field) {
                 if (in_array($field->id, $field_ids)) {
                     unset($fields[$field_key]);
                 }
             }
             // Reset indexes.
             $fields = array_values($fields);
         }
         // Field data was found.
         if (!empty($fields) && !empty($field_data) && !is_wp_error($field_data)) {
             // Loop through fields.
             foreach ((array) $fields as $field_key => $field) {
                 // Loop through the data in each field.
                 foreach ((array) $field_data as $data) {
                     // Assign correct data value to the field.
                     if ($field->id == $data->field_id) {
                         $fields[$field_key]->data = new stdClass();
                         $fields[$field_key]->data->value = $data->value;
开发者ID:JeroenNouws,项目名称:BuddyPress,代码行数:67,代码来源:class-bp-xprofile-group.php


注:本文中的BP_XProfile_ProfileData::get_data_for_user方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。