[buddypress-trac] [BuddyPress Trac] #5192: User roles with differents profile fields

buddypress-trac noreply at wordpress.org
Fri Apr 17 12:38:18 UTC 2015


#5192: User roles with differents profile fields
----------------------------------+-----------------------------
 Reporter:  _DorsVenabili         |       Owner:
     Type:  enhancement           |      Status:  new
 Priority:  normal                |   Milestone:  Future Release
Component:  Component - XProfile  |     Version:
 Severity:  normal                |  Resolution:
 Keywords:                        |
----------------------------------+-----------------------------

Comment (by boonebgorges):

 I agree that storing an array is a bad idea.

 I'm thinking something like this. Use `bp_xprofile_add_meta()` to add a
 member type to a given field. This allows you to have multiple member
 types for a given field:

 {{{
 bp_xprofile_add_meta( $field_id, 'field', 'show_to_member_type', 'student'
 );
 bp_xprofile_add_meta( $field_id, 'field', 'show_to_member_type', 'teacher'
 );
 }}}

 This means that when you query for a single field's member types, you need
 to be sure to fetch the whole array (`$single = false`):

 {{{
 $member_types_for_this_field = bp_xprofile_get_meta( $field_id, 'field',
 'show_to_member_type', false );
 // array( 0 => 'student', 1 => 'teacher' )
 }}}

 In the loop, you will have access to a meta_query. (Not yet fully
 implemented; see [9722] and #6347.) So if you want to fetch all fields
 that need to be shown to the current user, it'll look something like:

 {{{
 $current_user_member_type = bp_get_member_type( bp_loggedin_user_id(),
 false ); // single=false
 bp_has_profile( array(
     // ...
     'meta_query' => array(
         array(
             'object' => 'field',
             'key' => 'show_to_member_type',
             'value' => $current_user_member_type,
             'compare' => 'IN',
         ),
     ),
     // ...
 ) );
 }}}

 The API might look a little different here - you might, eg, pass a
 'member_type' param to `bp_has_profile()`, and then prepare the
 'meta_query' clause internally, but this gives you the idea.

 > When multiple member types can be selected per field: how does this
 translate to field types (optional/required), when different member types
 should have different field types?

 At a glance, I'd think that assigning a field to multiple member types
 would mean that a user with at least one of the member type would then see
 the field. So, in the above situation, a user with member type 'student'
 would see the field in question. We'll have to make this as clear as
 possible in the UI, and we'll have to come up with a trick to make sure
 that fields with *no* member type associations are shown to *all* users.

--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/5192#comment:12>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac


More information about the buddypress-trac mailing list