BP_XProfile_Group::get_group_field_ids( array $group_ids, array $args = array() )
Gets group field IDs, based on passed parameters.
Description Description
Parameters Parameters
- $group_ids
-
(Required) Array of group IDs.
- $args
-
(Optional) Array of optional arguments:
- 'exclude_fields'
(array) Comma-separated list or array of field IDs to exclude. - 'user_id'
(int) Limit results to fields associated with a given user's member type. - 'member_type'
(array|string) Limit fields by those restricted to a given member type, or array of member types. If$user_id
is provided, the value of$member_type
is honored.
Default value: array()
- 'exclude_fields'
Return Return
(array)
Source Source
File: bp-xprofile/classes/class-bp-xprofile-group.php
public static function get_group_field_ids( $group_ids, $args = array() ) { global $wpdb; $r = array_merge( array( 'exclude_fields' => false, 'user_id' => false, 'member_type' => false, ), $args ); $bp = buddypress(); // Setup IN query from group IDs. if ( empty( $group_ids ) ) { $group_ids = array( 0 ); } $group_ids_in = implode( ',', array_map( 'intval', $group_ids ) ); // Support arrays and comma-separated strings. $exclude_fields_cs = wp_parse_id_list( $r['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(). $hidden_user_fields = bp_xprofile_get_hidden_fields_for_user( $r['user_id'] ); $exclude_fields_cs = array_merge( $exclude_fields_cs, $hidden_user_fields ); $exclude_fields_cs = implode( ',', $exclude_fields_cs ); // Set up NOT IN query for excluded field IDs. if ( ! empty( $exclude_fields_cs ) ) { $exclude_fields_sql = "AND id NOT IN ({$exclude_fields_cs})"; } else { $exclude_fields_sql = ''; } // Set up IN query for included field IDs. $include_field_ids = array(); // Member-type restrictions. if ( bp_get_member_types() ) { if ( $r['user_id'] || false !== $r['member_type'] ) { $member_types = $r['member_type']; if ( $r['user_id'] ) { $member_types = bp_get_member_type( $r['user_id'], false ); if ( empty( $member_types ) ) { $member_types = array( 'null' ); } } $member_types_fields = BP_XProfile_Field::get_fields_for_member_type( $member_types ); $include_field_ids += array_keys( $member_types_fields ); } } $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}) "; } $field_ids_sql = "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"; $cached = bp_core_get_incremented_cache( $field_ids_sql, 'bp_xprofile_groups' ); if ( false === $cached ) { $field_ids = $wpdb->get_col( $field_ids_sql ); bp_core_set_incremented_cache( $field_ids_sql, 'bp_xprofile_groups', $field_ids ); } else { $field_ids = $cached; } return array_map( 'intval', $field_ids ); }
Changelog Changelog
Version | Description |
---|---|
5.0.0 | Introduced. |