Skip to:
Content

Changeset 7764


Ignore:
Timestamp:
01/29/14 17:01:17 (17 months ago)
Author:
johnjamesjacoby
Message:

First pass at introducing BuddyPress profile editing to /wp-admin:

  • New bp-members-admin.php and accompanying assets to handle the initial admin page creation (outside of XProfile).
  • New stats template functions in Blogs, Friends, and Groups components, to provide additional meta data about a members community involvement.
  • Modifies some existing XProfile admin/template/filters to make it more accommodating to querying for profile data outside of BuddyPress's traditional displayed_user context.
  • Props imath, boonebgorges, johnjamesjacoby. Fixes #5197.
Location:
trunk
Files:
8 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-blogs/bp-blogs-template.php

    r7555 r7764  
    11871187        return bp_get_button( apply_filters( 'bp_get_blogs_visit_blog_button', $button ) ); 
    11881188    } 
     1189 
     1190/** Stats **********************************************************************/ 
     1191 
     1192/** 
     1193 * Display the number of blogs in user's profile. 
     1194 * 
     1195 * @since BuddyPress (2.0.0) 
     1196 * 
     1197 * @param array $args before|after|user_id 
     1198 * @uses bp_blogs_admin_get_profile_stats() to get the stats 
     1199 */ 
     1200function bp_blogs_profile_stats( $args = '' ) { 
     1201    echo bp_blogs_get_profile_stats( $args ); 
     1202} 
     1203add_action( 'bp_members_admin_user_stats', 'bp_blogs_profile_stats', 9, 1 ); 
     1204 
     1205/** 
     1206 * Return the number of blogs in user's profile. 
     1207 * 
     1208 * @since BuddyPress (2.0.0) 
     1209 * 
     1210 * @param array $args before|after|user_id 
     1211 * @return string HTML for stats output. 
     1212 */ 
     1213function bp_blogs_get_profile_stats( $args = '' ) { 
     1214 
     1215    // Parse the args 
     1216    $r = bp_parse_args( $args, array( 
     1217        'before'  => '<li class="bp-blogs-profile-stats">', 
     1218        'after'   => '</li>', 
     1219        'user_id' => bp_displayed_user_id(), 
     1220        'blogs'   => 0, 
     1221        'output'  => '' 
     1222    ), 'blogs_get_profile_stats' ); 
     1223 
     1224    // Allow completely overloaded output 
     1225    if ( is_multisite() && empty( $r['output'] ) ) { 
     1226 
     1227        // Only proceed if a user ID was passed 
     1228        if ( ! empty( $r['user_id'] ) ) { 
     1229 
     1230            // Get the user groups 
     1231            if ( empty( $r['blogs'] ) ) { 
     1232                $r['blogs'] = absint( bp_blogs_total_blogs_for_user( $r['user_id'] ) ); 
     1233            } 
     1234 
     1235            // If groups exist, show some formatted output 
     1236            $r['output'] = $r['before'] . sprintf( _n( '1 site', '<strong>%s</strong> sites', $r['blogs'], 'buddypress' ), $r['blogs'] ) . $r['after']; 
     1237        } 
     1238    } 
     1239 
     1240    // Filter and return 
     1241    return apply_filters( 'bp_blogs_get_profile_stats', $r['output'], $r ); 
     1242} 
  • trunk/bp-friends/bp-friends-template.php

    r7751 r7764  
    539539        return apply_filters( 'bp_friend_get_total_requests_count', count( BP_Friends_Friendship::get_friend_user_ids( $user_id, true ) ) ); 
    540540    } 
     541 
     542/** Stats **********************************************************************/ 
     543 
     544/** 
     545 * Display the number of friends in user's profile. 
     546 * 
     547 * @since BuddyPress (2.0.0) 
     548 * 
     549 * @param array $args before|after|user_id 
     550 * @uses bp_friends_get_profile_stats() to get the stats 
     551 */ 
     552function bp_friends_profile_stats( $args = '' ) { 
     553    echo bp_friends_get_profile_stats( $args ); 
     554} 
     555add_action( 'bp_members_admin_user_stats', 'bp_friends_profile_stats', 7, 1 ); 
     556 
     557/** 
     558 * Return the number of friends in user's profile. 
     559 * 
     560 * @since BuddyPress (2.0.0) 
     561 * 
     562 * @param array $args before|after|user_id 
     563 * @return string HTML for stats output. 
     564 */ 
     565function bp_friends_get_profile_stats( $args = '' ) { 
     566 
     567    // Parse the args 
     568    $r = bp_parse_args( $args, array( 
     569        'before'  => '<li class="bp-friends-profile-stats">', 
     570        'after'   => '</li>', 
     571        'user_id' => bp_displayed_user_id(), 
     572        'friends' => 0, 
     573        'output'  => '' 
     574    ), 'friends_get_profile_stats' ); 
     575 
     576    // Allow completely overloaded output 
     577    if ( empty( $r['output'] ) ) { 
     578 
     579        // Only proceed if a user ID was passed 
     580        if ( ! empty( $r['user_id'] ) ) { 
     581 
     582            // Get the user groups 
     583            if ( empty( $r['friends'] ) ) { 
     584                $r['friends'] = absint( friends_get_total_friend_count( $r['user_id'] ) ); 
     585            } 
     586 
     587            // If groups exist, show some formatted output 
     588            $r['output'] = $r['before'] . sprintf( _n( '1 friend', '<strong>%s</strong> friends', $r['friends'], 'buddypress' ), $r['friends'] ) . $r['after']; 
     589        } 
     590    } 
     591 
     592    // Filter and return 
     593    return apply_filters( 'bp_friends_get_profile_stats', $r['output'], $r ); 
     594} 
  • trunk/bp-groups/bp-groups-template.php

    r7751 r7764  
    31553155            return $url; 
    31563156    } 
     3157 
     3158/** Stats **********************************************************************/ 
     3159 
     3160/** 
     3161 * Display the number of groups in user's profile. 
     3162 * 
     3163 * @since BuddyPress (2.0.0) 
     3164 * 
     3165 * @param array $args before|after|user_id 
     3166 * @uses bp_groups_get_profile_stats() to get the stats 
     3167 */ 
     3168function bp_groups_profile_stats( $args = '' ) { 
     3169    echo bp_groups_get_profile_stats( $args ); 
     3170} 
     3171add_action( 'bp_members_admin_user_stats', 'bp_groups_profile_stats', 8, 1 ); 
     3172 
     3173/** 
     3174 * Return the number of groups in user's profile. 
     3175 * 
     3176 * @since BuddyPress (2.0.0) 
     3177 * 
     3178 * @param array $args before|after|user_id 
     3179 * @return string HTML for stats output. 
     3180 */ 
     3181function bp_groups_get_profile_stats( $args = '' ) { 
     3182 
     3183    // Parse the args 
     3184    $r = bp_parse_args( $args, array( 
     3185        'before'  => '<li class="bp-groups-profile-stats">', 
     3186        'after'   => '</li>', 
     3187        'user_id' => bp_displayed_user_id(), 
     3188        'groups'  => 0, 
     3189        'output'  => '' 
     3190    ), 'groups_get_profile_stats' ); 
     3191 
     3192    // Allow completely overloaded output 
     3193    if ( empty( $r['output'] ) ) { 
     3194 
     3195        // Only proceed if a user ID was passed 
     3196        if ( ! empty( $r['user_id'] ) ) { 
     3197 
     3198            // Get the user groups 
     3199            if ( empty( $r['groups'] ) ) { 
     3200                $r['groups'] = absint( bp_get_total_group_count_for_user( $r['user_id'] ) ); 
     3201            } 
     3202 
     3203            // If groups exist, show some formatted output 
     3204            $r['output'] = $r['before'] . sprintf( _n( '1 group', '<strong>%s</strong> groups', $r['groups'], 'buddypress' ), $r['groups'] ) . $r['after']; 
     3205        } 
     3206    } 
     3207 
     3208    // Filter and return 
     3209    return apply_filters( 'bp_groups_get_profile_stats', $r['output'], $r ); 
     3210} 
  • trunk/bp-members/bp-members-functions.php

    r7675 r7764  
    564564    remove_action( 'make_ham_user',  'bp_core_mark_user_ham_admin'  ); 
    565565 
     566    // Determine if we are on an admin page 
     567    $is_admin = is_admin(); 
     568    if ( $is_admin && ! defined( 'DOING_AJAX' ) ) { 
     569        $is_admin = (bool) ( buddypress()->members->admin->user_page !== get_current_screen()->id ); 
     570    } 
     571 
    566572    // When marking as spam in the Dashboard, these actions are handled by WordPress 
    567     if ( !is_admin() ) { 
     573    if ( ! $is_admin ) { 
    568574 
    569575        // Get the blogs for the user 
  • trunk/bp-members/bp-members-loader.php

    r7756 r7764  
    4646            'notifications', 
    4747        ); 
     48 
     49        if ( is_admin() ) { 
     50            $includes[] = 'admin'; 
     51        } 
     52 
    4853        parent::includes( $includes ); 
    4954    } 
  • trunk/bp-xprofile/bp-xprofile-admin.php

    r7271 r7764  
    467467<?php 
    468468} 
     469 
     470if ( ! class_exists( 'BP_XProfile_User_Admin' ) ) : 
     471/** 
     472 * Load xProfile Profile admin area. 
     473 * 
     474 * @package BuddyPress 
     475 * @subpackage xProfileAdministration 
     476 * 
     477 * @since BuddyPress (2.0.0) 
     478 */ 
     479class BP_XProfile_User_Admin { 
     480 
     481    /** 
     482     * Setup xProfile User Admin. 
     483     * 
     484     * @access public 
     485     * @since BuddyPress (2.0.0) 
     486     * 
     487     * @uses buddypress() to get BuddyPress main instance 
     488     */ 
     489    public static function register_xprofile_user_admin() { 
     490        if( ! is_admin() ) 
     491            return; 
     492 
     493        $bp = buddypress(); 
     494 
     495        if( empty( $bp->profile->admin ) ) { 
     496            $bp->profile->admin = new self; 
     497        } 
     498 
     499        return $bp->profile->admin; 
     500    } 
     501 
     502    /** 
     503     * Constructor method. 
     504     * 
     505     * @access public 
     506     * @since BuddyPress (2.0.0) 
     507     */ 
     508    public function __construct() { 
     509        $this->setup_actions(); 
     510    } 
     511 
     512    /** 
     513     * Set admin-related actions and filters. 
     514     * 
     515     * @access private 
     516     * @since BuddyPress (2.0.0) 
     517     */ 
     518    private function setup_actions() { 
     519 
     520        /** Actions ***************************************************/ 
     521 
     522        // Register the metabox in Member's community admin profile 
     523        add_action( 'bp_members_admin_xprofile_metabox', array( $this, 'register_metaboxes' ), 10, 3 ); 
     524 
     525        // Saves the profile actions for user ( avatar, profile fields ) 
     526        add_action( 'bp_members_admin_update_user',      array( $this, 'user_admin_load' ),    10, 4 ); 
     527 
     528    } 
     529 
     530    /** 
     531     * Register the xProfile metabox on Community Profile admin page. 
     532     * 
     533     * @access public 
     534     * @since BuddyPress (2.0.0) 
     535     * 
     536     * @param int $user_id ID of the user being edited. 
     537     * @param string $screen_id Screen ID to load the metabox in. 
     538     * @param object $stats_metabox Context and priority for the stats metabox. 
     539     */ 
     540    public function register_metaboxes( $user_id = 0, $screen_id = '', $stats_metabox = null ) { 
     541 
     542        if ( empty( $screen_id ) ) { 
     543            $screen_id = buddypress()->members->admin->user_page; 
     544        } 
     545 
     546        if ( empty( $stats_metabox ) ) { 
     547            $stats_metabox = new StdClass(); 
     548        } 
     549 
     550        // Moving the Stats Metabox 
     551        $stats_metabox->context = 'side'; 
     552        $stats_metabox->priority = 'low'; 
     553 
     554        // Each Group of fields will have his own metabox 
     555        if ( false == bp_is_user_spammer( $user_id ) && bp_has_profile( array( 'fetch_fields' => false ) ) ) { 
     556            while ( bp_profile_groups() ) : bp_the_profile_group(); 
     557                add_meta_box( 'bp_xprofile_user_admin_fields_' . sanitize_key( bp_get_the_profile_group_slug() ), esc_html( bp_get_the_profile_group_name() ), array( &$this, 'user_admin_profile_metaboxes' ), $screen_id, 'normal', 'core', array( 'profile_group_id' => absint( bp_get_the_profile_group_id() ) ) ); 
     558            endwhile; 
     559 
     560        // if a user has been mark as a spammer, his BuddyPress datas are removed ! 
     561        } else { 
     562            add_meta_box( 'bp_xprofile_user_admin_empty_profile', _x( 'User marked as a spammer', 'xprofile user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_spammer_metabox' ), $screen_id, 'normal', 'core' ); 
     563        } 
     564 
     565        // Avatar Metabox 
     566        add_meta_box( 'bp_xprofile_user_admin_avatar',  _x( 'Avatar', 'xprofile user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_avatar_metabox' ), $screen_id, 'side', 'low' ); 
     567 
     568    } 
     569 
     570    /** 
     571     * Save the profile fields in Members community profile page. 
     572     * 
     573     * Loaded before the page is rendered, this function is processing form 
     574     * requests. 
     575     * 
     576     * @access public 
     577     * @since BuddyPress (2.0.0) 
     578     */ 
     579    public function user_admin_load( $doaction = '', $user_id = 0, $request = array(), $redirect_to = '' ) { 
     580 
     581        // Eventually delete avatar 
     582        if ( 'delete_avatar' == $doaction ) { 
     583 
     584            check_admin_referer( 'delete_avatar' ); 
     585 
     586            $redirect_to = remove_query_arg( '_wpnonce', $redirect_to ); 
     587 
     588            if ( bp_core_delete_existing_avatar( array( 'item_id' => $user_id ) ) ) { 
     589                $redirect_to = add_query_arg( 'updated', 'avatar', $redirect_to ); 
     590            } else { 
     591                $redirect_to = add_query_arg( 'error', 'avatar', $redirect_to ); 
     592            } 
     593 
     594            bp_core_redirect( $redirect_to ); 
     595 
     596        // Update profile fields 
     597        } else { 
     598            // Check to see if any new information has been submitted 
     599            if ( isset( $_POST['field_ids'] ) ) { 
     600 
     601                // Check the nonce 
     602                check_admin_referer( 'edit-bp-profile_' . $user_id ); 
     603 
     604                // Check we have field ID's 
     605                if ( empty( $_POST['field_ids'] ) ) { 
     606                    $redirect_to = add_query_arg( 'error', '1', $redirect_to ); 
     607                    bp_core_redirect( $redirect_to ); 
     608                } 
     609 
     610                $merge_ids = ''; 
     611                foreach ( $_POST['field_ids'] as $ids ) { 
     612                    $merge_ids .= $ids . ','; 
     613                } 
     614 
     615                // Explode the posted field IDs into an array so we know which 
     616                // fields have been submitted 
     617                $posted_field_ids = array_filter( wp_parse_id_list( $merge_ids ) ); 
     618                $is_required      = array(); 
     619 
     620                // Loop through the posted fields formatting any datebox values 
     621                // then validate the field 
     622                foreach ( (array) $posted_field_ids as $field_id ) { 
     623                    if ( ! isset( $_POST['field_' . $field_id] ) ) { 
     624                        if ( ! empty( $_POST['field_' . $field_id . '_day'] ) && ! empty( $_POST['field_' . $field_id . '_month'] ) && ! empty( $_POST['field_' . $field_id . '_year'] ) ) { 
     625                            // Concatenate the values 
     626                            $date_value =   $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year']; 
     627 
     628                            // Turn the concatenated value into a timestamp 
     629                            $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) ); 
     630                        } 
     631                    } 
     632 
     633                    $is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ); 
     634                    if ( $is_required[ $field_id ] && empty( $_POST['field_' . $field_id] ) ) { 
     635                        $redirect_to = add_query_arg( 'error', '2', $redirect_to ); 
     636                        bp_core_redirect( $redirect_to ); 
     637                    } 
     638                } 
     639 
     640                // Set the errors var 
     641                $errors = false; 
     642 
     643                // Now we've checked for required fields, lets save the values. 
     644                foreach ( (array) $posted_field_ids as $field_id ) { 
     645 
     646                    // Certain types of fields (checkboxes, multiselects) may come through empty. Save them as an empty array so that they don't get overwritten by the default on the next edit. 
     647                    if ( empty( $_POST['field_' . $field_id] ) ) { 
     648                        $value = array(); 
     649                    } else { 
     650                        $value = $_POST['field_' . $field_id]; 
     651                    } 
     652 
     653                    if ( ! xprofile_set_field_data( $field_id, $user_id, $value, $is_required[ $field_id ] ) ) { 
     654                        $errors = true; 
     655                    } else { 
     656                        do_action( 'xprofile_profile_field_data_updated', $field_id, $value ); 
     657                    } 
     658 
     659                    // Save the visibility level 
     660                    $visibility_level = ! empty( $_POST['field_' . $field_id . '_visibility'] ) ? $_POST['field_' . $field_id . '_visibility'] : 'public'; 
     661                    xprofile_set_field_visibility_level( $field_id, $user_id, $visibility_level ); 
     662                } 
     663 
     664                do_action( 'xprofile_updated_profile', $user_id, $posted_field_ids, $errors ); 
     665 
     666                // Set the feedback messages 
     667                if ( ! empty( $errors ) ) { 
     668                    $redirect_to = add_query_arg( 'error', '3', $redirect_to ); 
     669                } else { 
     670                    $redirect_to = add_query_arg( 'updated', '1', $redirect_to ); 
     671                } 
     672 
     673                bp_core_redirect( $redirect_to ); 
     674            } 
     675        } 
     676    } 
     677 
     678    /** 
     679     * Render the xprofile metabox for Community Profile screen. 
     680     * 
     681     * @access public 
     682     * @since BuddyPress (2.0.0) 
     683     * 
     684     * @param WP_User $user The WP_User object for the user being edited. 
     685     */ 
     686    public function user_admin_profile_metaboxes( $user = null, $args = array() ) { 
     687 
     688        if ( empty( $user->ID ) ) { 
     689            return; 
     690        } 
     691 
     692        $r = bp_parse_args( $args['args'], array( 
     693            'profile_group_id' => 0, 
     694            'user_id'          => $user->ID 
     695        ), 'bp_xprofile_user_admin_profile_loop_args' ); 
     696 
     697        // We really need these args 
     698        if ( empty( $r['profile_group_id'] ) || empty( $r['user_id'] ) ) { 
     699            return; 
     700        } 
     701 
     702        if ( bp_has_profile( $r ) ) : 
     703 
     704            while ( bp_profile_groups() ) : bp_the_profile_group(); ?> 
     705 
     706                <p class="description"><?php bp_the_profile_group_description(); ?></p> 
     707 
     708                <table class="form-table"> 
     709                    <tbody> 
     710 
     711                    <?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?> 
     712 
     713                        <tr> 
     714 
     715                            <?php if ( 'textbox' === bp_get_the_profile_field_type() ) : ?> 
     716 
     717                                <th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th> 
     718                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     719                                    <input type="text" name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" value="<?php bp_the_profile_field_edit_value(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>/> 
     720                                    <span class="description"><?php bp_the_profile_field_description(); ?></span> 
     721                                </td> 
     722 
     723                            <?php endif; ?> 
     724 
     725                            <?php if ( 'textarea' === bp_get_the_profile_field_type() ) : ?> 
     726 
     727                                <th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th> 
     728                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     729                                    <textarea rows="5" cols="40" name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>><?php bp_the_profile_field_edit_value(); ?></textarea> 
     730                                    <p class="description"><?php bp_the_profile_field_description(); ?></p> 
     731                                </td> 
     732 
     733                            <?php endif; ?> 
     734 
     735                            <?php if ( 'selectbox' === bp_get_the_profile_field_type() ) : ?> 
     736 
     737                                <th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th> 
     738                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     739                                    <select name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>> 
     740                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?> 
     741                                    </select> 
     742                                    <span class="description"><?php bp_the_profile_field_description(); ?></span> 
     743                                </td> 
     744 
     745                            <?php endif; ?> 
     746 
     747                            <?php if ( 'multiselectbox' === bp_get_the_profile_field_type() ) : ?> 
     748 
     749                                <th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th> 
     750                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     751                                    <select name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" multiple="multiple" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>> 
     752 
     753                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?> 
     754 
     755                                    </select> 
     756 
     757 
     758                                    <?php if ( !bp_get_the_profile_field_is_required() ) : ?> 
     759 
     760                                        <p><a class="clear-value" href="javascript:clear( '<?php bp_the_profile_field_input_name(); ?>' );"><?php _e( 'Clear', 'buddypress' ); ?></a></p> 
     761 
     762                                    <?php endif; ?> 
     763                                    <p class="description"><?php bp_the_profile_field_description(); ?></p> 
     764                                </td> 
     765 
     766                            <?php endif; ?> 
     767 
     768                            <?php if ( 'radio' === bp_get_the_profile_field_type() ) : ?> 
     769 
     770                                <th> 
     771                                    <span class="label"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></span> 
     772                                </th> 
     773                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     774                                    <fieldset> 
     775                                        <legend class="screen-reader-text"><span><?php bp_the_profile_field_name(); ?></span></legend> 
     776                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?> 
     777                                    </fieldset> 
     778 
     779                                    <?php if ( !bp_get_the_profile_field_is_required() ) : ?> 
     780 
     781                                        <p><a class="clear-value" href="javascript:clear( '<?php bp_the_profile_field_input_name(); ?>' );"><?php _e( 'Clear', 'buddypress' ); ?></a></p> 
     782 
     783                                    <?php endif; ?> 
     784                                    <p class="description"><?php bp_the_profile_field_description(); ?></p> 
     785                                </td> 
     786 
     787                            <?php endif; ?> 
     788 
     789                            <?php if ( 'checkbox' === bp_get_the_profile_field_type() ) : ?> 
     790 
     791                                <th> 
     792                                    <span class="label"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></span> 
     793                                </th> 
     794                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     795                                    <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?> 
     796                                    <p class="description"><?php bp_the_profile_field_description(); ?></p> 
     797                                </td> 
     798 
     799                            <?php endif; ?> 
     800 
     801                            <?php if ( 'datebox' === bp_get_the_profile_field_type() ) : ?> 
     802 
     803                                <th> 
     804                                    <label for="<?php bp_the_profile_field_input_name(); ?>_day"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label> 
     805                                </th> 
     806                                <td class="admin-field-<?php bp_the_profile_field_type();?>"> 
     807                                    <select name="<?php bp_the_profile_field_input_name(); ?>_day" id="<?php bp_the_profile_field_input_name(); ?>_day" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>> 
     808 
     809                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'day', ) ); ?> 
     810 
     811                                    </select> 
     812 
     813                                    <select name="<?php bp_the_profile_field_input_name(); ?>_month" id="<?php bp_the_profile_field_input_name(); ?>_month" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>> 
     814 
     815                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'month', ) ); ?> 
     816 
     817                                    </select> 
     818 
     819                                    <select name="<?php bp_the_profile_field_input_name(); ?>_year" id="<?php bp_the_profile_field_input_name(); ?>_year" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>> 
     820 
     821                                        <?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'year', ) ); ?> 
     822 
     823                                    </select> 
     824                                    <p class="description"><?php bp_the_profile_field_description(); ?></p> 
     825                                </td> 
     826 
     827                            <?php endif; ?> 
     828 
     829                        </tr> 
     830 
     831                        <tr class="admin-field-visibility-tr"> 
     832                            <td class="admin-field-visibility-td">&nbsp;</td> 
     833                            <td class="admin-field-visibility-td"> 
     834 
     835                                <?php do_action( 'bp_custom_profile_edit_fields_pre_visibility' ); ?> 
     836 
     837                                <?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?> 
     838                                    <p class="description field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>"> 
     839                                        <?php printf( __( 'This field can be seen by: <span class="current-visibility-level">%s</span>', 'buddypress' ), bp_get_the_profile_field_visibility_level_label() ) ?> <a href="#" class="visibility-toggle-link"><?php _e( 'Change', 'buddypress' ); ?></a> 
     840                                    </p> 
     841 
     842                                    <div class="field-visibility-settings" id="field-visibility-settings-<?php bp_the_profile_field_id() ?>"> 
     843                                        <fieldset> 
     844                                            <legend><?php esc_html_e( 'Who can see this field?', 'buddypress' ) ?></legend> 
     845 
     846                                            <?php bp_profile_visibility_radio_buttons() ?> 
     847 
     848                                        </fieldset> 
     849                                        <a class="field-visibility-settings-close" href="#"><?php esc_html_e( 'Close', 'buddypress' ) ?></a> 
     850                                    </div> 
     851                                <?php else : ?> 
     852                                    <div class="field-visibility-settings-notoggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>"> 
     853                                        <?php printf( __( 'This field can be seen by: <span class="current-visibility-level">%s</span>', 'buddypress' ), bp_get_the_profile_field_visibility_level_label() ) ?> 
     854                                    </div> 
     855                                <?php endif ?> 
     856 
     857                            </td> 
     858                        </tr> 
     859 
     860                    <?php endwhile; ?> 
     861                    </tbody> 
     862 
     863                </table> 
     864                <input type="hidden" name="field_ids[]" id="field_ids_<?php bp_the_profile_group_slug(); ?>" value="<?php bp_the_profile_group_field_ids(); ?>" /> 
     865            <?php endwhile; 
     866        endif; 
     867    } 
     868 
     869    /** 
     870     * Render the fallback metabox in case a user has been marked as a spammer. 
     871     * 
     872     * @access public 
     873     * @since BuddyPress (2.0.0) 
     874     * 
     875     * @param WP_User $user The WP_User object for the user being edited. 
     876     */ 
     877    public function user_admin_spammer_metabox( $user = null ) { 
     878        ?> 
     879        <p><?php printf( __( '%s has been marked as a spammer, this user&#39;s BuddyPress datas were removed', 'buddypress' ), esc_html( bp_core_get_user_displayname( $user->ID ) ) ) ;?></p> 
     880        <?php 
     881    } 
     882 
     883    /** 
     884     * Render the Avatar metabox to moderate inappropriate images. 
     885     * 
     886     * @access public 
     887     * @since BuddyPress (2.0.0) 
     888     * 
     889     * @param WP_User $user The WP_User object for the user being edited. 
     890     */ 
     891    public function user_admin_avatar_metabox( $user = null ) { 
     892 
     893        if ( empty( $user->ID ) ) { 
     894            return; 
     895        } 
     896 
     897        $args = array( 
     898            'item_id' => $user->ID, 
     899            'object'  => 'user', 
     900            'type'    => 'full', 
     901            'title'   => $user->display_name 
     902        ); 
     903 
     904        ?> 
     905 
     906        <div class="avatar"> 
     907 
     908            <?php echo bp_core_fetch_avatar( $args ); ?> 
     909 
     910            <?php if ( bp_get_user_has_avatar( $user->ID ) ) : 
     911 
     912                $query_args = array( 
     913                    'user_id' => $user->ID, 
     914                    'action'  => 'delete_avatar' 
     915                ); 
     916 
     917                if ( ! empty( $_REQUEST['wp_http_referer'] ) ) 
     918                    $query_args['wp_http_referer'] = urlencode( wp_unslash( $_REQUEST['wp_http_referer'] ) ); 
     919 
     920                    $community_url = add_query_arg( $query_args, buddypress()->members->admin->edit_profile_url ); 
     921                    $delete_link   = wp_nonce_url( $community_url, 'delete_avatar' ); ?> 
     922 
     923                <a href="<?php echo esc_url( $delete_link ); ?>" title="<?php esc_attr_e( 'Delete Avatar', 'buddypress' ); ?>" class="bp-xprofile-avatar-user-admin"><?php esc_html_e( 'Delete Avatar', 'buddypress' ); ?></a></li> 
     924 
     925            <?php endif; ?> 
     926 
     927        </div> 
     928        <?php 
     929    } 
     930 
     931} 
     932endif; // class_exists check 
     933 
     934// Load the xprofile user admin 
     935add_action( 'bp_init', array( 'BP_XProfile_User_Admin', 'register_xprofile_user_admin' ), 11 ); 
  • trunk/bp-xprofile/bp-xprofile-filters.php

    r6647 r7764  
    248248    global $bp, $wpdb; 
    249249 
    250     if ( bp_is_active( 'xprofile' ) ) { 
    251         $fullname_field_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE name = %s", bp_xprofile_fullname_field_name() ) ); 
    252         $user_id_names     = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value as fullname FROM {$bp->profile->table_name_data} WHERE user_id IN ({$user_ids_sql}) AND field_id = %d", $fullname_field_id ) ); 
    253  
    254         // Loop through names and override each user's fullname 
    255         foreach ( $user_id_names as $user ) { 
    256             if ( isset( $user_query->results[ $user->user_id ] ) ) { 
    257                 $user_query->results[ $user->user_id ]->fullname = $user->fullname; 
    258             } 
     250    if ( ! bp_is_active( 'xprofile' ) ) { 
     251        return; 
     252    } 
     253 
     254    $fullname_field_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE name = %s", bp_xprofile_fullname_field_name() ) ); 
     255    $user_id_names     = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value as fullname FROM {$bp->profile->table_name_data} WHERE user_id IN ({$user_ids_sql}) AND field_id = %d", $fullname_field_id ) ); 
     256 
     257    // Loop through names and override each user's fullname 
     258    foreach ( $user_id_names as $user ) { 
     259        if ( isset( $user_query->results[ $user->user_id ] ) ) { 
     260            $user_query->results[ $user->user_id ]->fullname = $user->fullname; 
    259261        } 
    260262    } 
  • trunk/bp-xprofile/bp-xprofile-template.php

    r7762 r7764  
    5252        $this->current_group++; 
    5353 
    54         $this->group         = $this->groups[$this->current_group]; 
    55         $this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id ); 
    56         $this->field_count   = count( $this->group->fields ); 
     54        $this->group       = $this->groups[$this->current_group]; 
     55        $this->field_count = 0; 
     56 
     57        if( ! empty( $this->group->fields ) ) { 
     58            $this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id ); 
     59            $this->field_count   = count( $this->group->fields ); 
     60        } 
    5761 
    5862        return $this->group; 
Note: See TracChangeset for help on using the changeset viewer.