Ticket #5440: 5440.01.patch
File 5440.01.patch, 16.5 KB (added by , 7 years ago) |
---|
-
bp-groups/bp-groups-classes.php
diff --git bp-groups/bp-groups-classes.php bp-groups/bp-groups-classes.php index 0315704..8810fad 100644
class BP_Groups_Group { 1454 1454 * inviter_id != 0 and invite_sent = 1 1455 1455 * - *Pending and unsent invitations* are entries with is_confirmed = 0 and 1456 1456 * inviter_id != 0 and invite_sent = 0 1457 * - *Membership requests* are entries with is_confirmed = 0 and 1458 * inviter_id = 0 (and invite_sent = 0) 1457 1459 * 1458 1460 * @since BuddyPress (1.8.0) 1459 1461 */ … … class BP_Group_Member_Query extends BP_User_Query { 1709 1711 global $wpdb; 1710 1712 1711 1713 $bp = buddypress(); 1712 $extras = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified, is_banned FROM {$bp->groups->table_name_members} WHERE user_id IN ({$user_ids_sql}) AND group_id = %d", $this->query_vars['group_id'] ) );1714 $extras = $wpdb->get_results( $wpdb->prepare( "SELECT id, user_id, date_modified, is_banned FROM {$bp->groups->table_name_members} WHERE user_id IN ({$user_ids_sql}) AND group_id = %d", $this->query_vars['group_id'] ) ); 1713 1715 1714 1716 foreach ( (array) $extras as $extra ) { 1715 1717 if ( isset( $this->results[ $extra->user_id ] ) ) { … … class BP_Group_Member_Query extends BP_User_Query { 1717 1719 $this->results[ $extra->user_id ]->user_id = (int) $extra->user_id; 1718 1720 $this->results[ $extra->user_id ]->is_banned = (int) $extra->is_banned; 1719 1721 $this->results[ $extra->user_id ]->date_modified = $extra->date_modified; 1722 $this->results[ $extra->user_id ]->groups_members_table_id = (int) $extra->id; 1720 1723 } 1721 1724 } 1722 1725 -
bp-groups/bp-groups-template.php
diff --git bp-groups/bp-groups-template.php bp-groups/bp-groups-template.php index 70f4350..16b2dc5 100644
class BP_Groups_Membership_Requests_Template { 2919 2919 var $pag_links; 2920 2920 var $total_request_count; 2921 2921 2922 function __construct( $group_id, $per_page, $max ) { 2923 2924 $this->pag_page = isset( $_REQUEST['mrpage'] ) ? intval( $_REQUEST['mrpage'] ) : 1; 2925 $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; 2926 $this->requests = BP_Groups_Group::get_membership_requests( $group_id, $this->pag_num, $this->pag_page ); 2922 function __construct( $args = array() ) { 2927 2923 2928 if ( !$max || $max >= (int) $this->requests['total'] ) 2929 $this->total_request_count = (int) $this->requests['total']; 2930 else 2931 $this->total_request_count = (int) $max; 2924 // Backward compatibility with old method of passing arguments 2925 if ( ! is_array( $args ) || func_num_args() > 1 ) { 2926 _deprecated_argument( __METHOD__, '2.0.0', sprintf( __( 'Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress' ), __METHOD__, __FILE__ ) ); 2932 2927 2933 $this->requests = $this->requests['requests']; 2928 $old_args_keys = array( 2929 0 => 'group_id', 2930 1 => 'per_page', 2931 2 => 'max' 2932 ); 2934 2933 2935 if ( $max ) { 2936 if ( $max >= count($this->requests) ) 2937 $this->request_count = count($this->requests); 2938 else 2939 $this->request_count = (int) $max; 2940 } else { 2941 $this->request_count = count($this->requests); 2934 $func_args = func_get_args(); 2935 $args = bp_core_parse_args_array( $old_args_keys, $func_args ); 2942 2936 } 2943 2937 2938 $r = wp_parse_args( $args, array( 2939 'group_id' => bp_get_current_group_id(), 2940 'per_page' => 10, 2941 'page' => 1, 2942 ) ); 2943 2944 $this->pag_num = isset( $_REQUEST['mrnum'] ) ? intval( $_REQUEST['mrnum'] ) : $r['per_page']; 2945 $this->pag_page = isset( $_REQUEST['mrpage'] ) ? intval( $_REQUEST['mrpage'] ) : $r['page']; 2946 2947 // $this->requests = BP_Groups_Group::get_membership_requests( $group_id, $this->pag_num, $this->pag_page ); 2948 $mrquery = new BP_Group_Member_Query( array( 2949 'group_id' => $r['group_id'], 2950 'type' => 'first_joined', 2951 'per_page' => $this->pag_num, 2952 'page' => $this->pag_page, 2953 2954 // These filters ensure we get only pending invites 2955 'is_confirmed' => false, 2956 'inviter_id' => 0, 2957 ) ); 2958 2959 $this->total_request_count = $mrquery->total_users; 2960 $this->requests = array_values( $mrquery->results ); 2961 $this->request_count = count( $this->requests ); 2962 2963 //Can we accommodate 'max' arguments using BP_Group_Member_Query? Is it necessary? I'm not sure it's really doing anything. 2964 // if ( !$max || $max >= (int) $this->requests['total'] ) 2965 // $this->total_request_count = (int) $this->requests['total']; 2966 // else 2967 // $this->total_request_count = (int) $max; 2968 2969 // $this->requests = $this->requests['requests']; 2970 2971 // if ( $max ) { 2972 // if ( $max >= count($this->requests) ) 2973 // $this->request_count = count($this->requests); 2974 // else 2975 // $this->request_count = (int) $max; 2976 // } else { 2977 // $this->request_count = count($this->requests); 2978 // } 2979 2944 2980 $this->pag_links = paginate_links( array( 2945 2981 'base' => add_query_arg( 'mrpage', '%#%' ), 2946 2982 'format' => '', … … class BP_Groups_Membership_Requests_Template { 2987 3023 } 2988 3024 2989 3025 function the_request() { 3026 global $group_id; 3027 2990 3028 $this->in_the_loop = true; 2991 3029 $this->request = $this->next_request(); 2992 3030 … … class BP_Groups_Membership_Requests_Template { 2996 3034 } 2997 3035 2998 3036 function bp_group_has_membership_requests( $args = '' ) { 2999 global $requests_template, $groups_template; 3037 global $requests_template, $group_id; 3038 $bp = buddypress(); 3000 3039 3001 3040 $defaults = array( 3002 'group_id' => $groups_template->group->id, 3041 'group_id' => false, 3042 'page' => 1, 3003 3043 'per_page' => 10, 3004 3044 'max' => false 3005 3045 ); 3006 3046 3007 3047 $r = wp_parse_args( $args, $defaults ); 3008 extract( $r, EXTR_SKIP );3009 3048 3010 $requests_template = new BP_Groups_Membership_Requests_Template( $group_id, $per_page, $max ); 3049 if ( !$r['group_id'] ) { 3050 // Backwards compatibility 3051 if ( !empty( $bp->groups->current_group ) ) 3052 $r['group_id'] = $bp->groups->current_group->id; 3053 3054 if ( !empty( $bp->groups->new_group_id ) ) 3055 $r['group_id'] = $bp->groups->new_group_id; 3056 } 3057 3058 if ( !$r['group_id'] ) 3059 return false; 3060 3061 $group_id = $r['group_id']; // globaled for later use 3062 3063 $requests_template = new BP_Groups_Membership_Requests_Template( $r ); 3011 3064 return apply_filters( 'bp_group_has_membership_requests', $requests_template->has_requests(), $requests_template ); 3012 3065 } 3013 3066 … … function bp_group_request_reject_link() { 3033 3086 echo bp_get_group_request_reject_link(); 3034 3087 } 3035 3088 function bp_get_group_request_reject_link() { 3036 global $requests_template, $group s_template;3089 global $requests_template, $group_id; 3037 3090 3038 return apply_filters( 'bp_get_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . 'admin/membership-requests/reject/' . $requests_template->request->id, 'groups_reject_membership_request' ) ); 3091 $group_object = groups_get_group( array( 'group_id' => $group_id ) ); 3092 3093 return apply_filters( 'bp_get_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $group_object ) . 'admin/membership-requests/reject/' . $requests_template->request->groups_members_table_id, 'groups_reject_membership_request' ) ); 3039 3094 } 3040 3095 3041 3096 function bp_group_request_accept_link() { 3042 3097 echo bp_get_group_request_accept_link(); 3043 3098 } 3044 3099 function bp_get_group_request_accept_link() { 3045 global $requests_template, $groups_template; 3100 global $requests_template, $group_id; 3101 3102 $group_object = groups_get_group( array( 'group_id' => $group_id ) ); 3046 3103 3047 return apply_filters( 'bp_get_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $group s_template->group ) . 'admin/membership-requests/accept/' . $requests_template->request->id, 'groups_accept_membership_request' ) );3104 return apply_filters( 'bp_get_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $group_object ) . 'admin/membership-requests/accept/' . $requests_template->request->groups_members_table_id, 'groups_accept_membership_request' ) ); 3048 3105 } 3049 3106 3050 3107 function bp_group_request_user_link() { … … function bp_group_request_comment() { 3068 3125 echo apply_filters( 'bp_group_request_comment', strip_tags( stripslashes( $requests_template->request->comments ) ) ); 3069 3126 } 3070 3127 3128 /** 3129 * Output pagination links for group membership requests. 3130 * 3131 * @since BuddyPress (2.0.0) 3132 */ 3133 function bp_group_mem_requests_pagination_links() { 3134 echo bp_get_group_mem_requests_pagination_links(); 3135 } 3136 /** 3137 * Get pagination links for group membership requests. 3138 * 3139 * @since BuddyPress (2.0.0) 3140 */ 3141 function bp_get_group_mem_requests_pagination_links() { 3142 global $requests_template; 3143 return apply_filters( 'bp_get_group_mem_requests_pagination_links', $requests_template->pag_links ); 3144 } 3145 3146 /** 3147 * Output pagination count text for group membership requests. 3148 * 3149 * @since BuddyPress (2.0.0) 3150 */ 3151 function bp_group_mem_requests_pagination_count() { 3152 echo bp_get_group_mem_requests_pagination_count(); 3153 } 3154 /** 3155 * Get pagination count text for group membership requests. 3156 * 3157 * @since BuddyPress (2.0.0) 3158 */ 3159 function bp_get_group_mem_requests_pagination_count() { 3160 global $requests_template; 3161 3162 $start_num = intval( ( $requests_template->pag_page - 1 ) * $requests_template->pag_num ) + 1; 3163 $from_num = bp_core_number_format( $start_num ); 3164 $to_num = bp_core_number_format( ( $start_num + ( $requests_template->pag_num - 1 ) > $requests_template->total_request_count ) ? $requests_template->total_request_count : $start_num + ( $requests_template->pag_num - 1 ) ); 3165 $total = bp_core_number_format( $requests_template->total_request_count ); 3166 3167 return apply_filters( 'bp_get_groups_pagination_count', sprintf( _n( 'Viewing requests %1$s to %2$s (of %3$s request)', 'Viewing request %1$s to %2$s (of %3$s requests)', $total, 'buddypress' ), $from_num, $to_num, $total ), $from_num, $to_num, $total ); 3168 } 3169 3071 3170 /************************************************************************************ 3072 3171 * Invite Friends Template Tags 3073 3172 **/ -
bp-templates/bp-legacy/buddypress-functions.php
diff --git bp-templates/bp-legacy/buddypress-functions.php bp-templates/bp-legacy/buddypress-functions.php index 93efcef..fb4baf5 100644
class BP_Legacy extends BP_Theme_Compat { 134 134 $actions = array( 135 135 136 136 // Directory filters 137 'blogs_filter' => 'bp_legacy_theme_object_template_loader', 138 'forums_filter' => 'bp_legacy_theme_object_template_loader', 139 'groups_filter' => 'bp_legacy_theme_object_template_loader', 140 'members_filter' => 'bp_legacy_theme_object_template_loader', 141 'messages_filter' => 'bp_legacy_theme_messages_template_loader', 142 'invite_filter' => 'bp_legacy_theme_invite_template_loader', 137 'blogs_filter' => 'bp_legacy_theme_object_template_loader', 138 'forums_filter' => 'bp_legacy_theme_object_template_loader', 139 'groups_filter' => 'bp_legacy_theme_object_template_loader', 140 'members_filter' => 'bp_legacy_theme_object_template_loader', 141 'messages_filter' => 'bp_legacy_theme_messages_template_loader', 142 'invite_filter' => 'bp_legacy_theme_invite_template_loader', 143 'membership_requests_filter' => 'bp_legacy_theme_membership_requests_template_loader', 143 144 144 145 // Friends 145 146 'accept_friendship' => 'bp_legacy_theme_ajax_accept_friendship', … … function bp_legacy_theme_invite_template_loader() { 612 613 } 613 614 614 615 /** 616 * Load group membership requests loop to handle pagination requests sent via AJAX. 617 * 618 * @since BuddyPress (2.0.0) 619 */ 620 function bp_legacy_theme_membership_requests_template_loader() { 621 bp_get_template_part( 'groups/single/admin-requests-loop' ); 622 exit(); 623 } 624 625 /** 615 626 * Load the activity loop template when activity is requested via AJAX, 616 627 * 617 628 * @return string JSON object containing 'contents' (output of the template loop -
new file p-templates/bp-legacy/buddypress/groups/single/admin-requests-loop.php
diff --git bp-templates/bp-legacy/buddypress/groups/single/admin-requests-loop.php bp-templates/bp-legacy/buddypress/groups/single/admin-requests-loop.php new file mode 100644 index 0000000..81fe660
- + 1 <?php if ( bp_group_has_membership_requests( bp_ajax_querystring( 'membership_requests' ) ) ) : ?> 2 3 <div id="pag-top" class="pagination"> 4 5 <div class="pag-count" id="group-mem-requests-count-top"> 6 7 <?php bp_group_mem_requests_pagination_count(); ?> 8 9 </div> 10 11 <div class="pagination-links" id="group-mem-requests-pag-top"> 12 13 <?php bp_group_mem_requests_pagination_links(); ?> 14 15 </div> 16 17 </div> 18 19 <ul id="request-list" class="item-list"> 20 <?php while ( bp_group_membership_requests() ) : bp_group_the_membership_request(); ?> 21 22 <li> 23 <?php bp_group_request_user_avatar_thumb(); ?> 24 <h4><?php bp_group_request_user_link(); ?> <span class="comments"><?php bp_group_request_comment(); ?></span></h4> 25 <span class="activity"><?php bp_group_request_time_since_requested(); ?></span> 26 27 <?php do_action( 'bp_group_membership_requests_admin_item' ); ?> 28 29 <div class="action"> 30 31 <?php bp_button( array( 'id' => 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'buddypress' ), 'link_text' => __( 'Accept', 'buddypress' ) ) ); ?> 32 33 <?php bp_button( array( 'id' => 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'buddypress' ), 'link_text' => __( 'Reject', 'buddypress' ) ) ); ?> 34 35 <?php do_action( 'bp_group_membership_requests_admin_item_action' ); ?> 36 37 </div> 38 </li> 39 40 <?php endwhile; ?> 41 </ul> 42 43 <div id="pag-bottom" class="pagination"> 44 45 <div class="pag-count" id="group-mem-requests-count-bottom"> 46 47 <?php bp_group_mem_requests_pagination_count(); ?> 48 49 </div> 50 51 <div class="pagination-links" id="group-mem-requests-pag-bottom"> 52 53 <?php bp_group_mem_requests_pagination_links(); ?> 54 55 </div> 56 57 </div> 58 59 <?php else: ?> 60 61 <div id="message" class="info"> 62 <p><?php _e( 'There are no pending membership requests.', 'buddypress' ); ?></p> 63 </div> 64 65 <?php endif; ?> 66 No newline at end of file -
bp-templates/bp-legacy/buddypress/groups/single/admin.php
diff --git bp-templates/bp-legacy/buddypress/groups/single/admin.php bp-templates/bp-legacy/buddypress/groups/single/admin.php index 6a7d3c8..0162317 100644
303 303 304 304 <?php do_action( 'bp_before_group_membership_requests_admin' ); ?> 305 305 306 <?php if ( bp_group_has_membership_requests() ) : ?>306 <div class="membership_requests"> 307 307 308 <ul id="request-list" class="item-list"> 309 <?php while ( bp_group_membership_requests() ) : bp_group_the_membership_request(); ?> 308 <?php bp_get_template_part( 'groups/single/admin-requests-loop' ); ?> 310 309 311 <li>312 <?php bp_group_request_user_avatar_thumb(); ?>313 <h4><?php bp_group_request_user_link(); ?> <span class="comments"><?php bp_group_request_comment(); ?></span></h4>314 <span class="activity"><?php bp_group_request_time_since_requested(); ?></span>315 316 <?php do_action( 'bp_group_membership_requests_admin_item' ); ?>317 318 <div class="action">319 320 <?php bp_button( array( 'id' => 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'buddypress' ), 'link_text' => __( 'Accept', 'buddypress' ) ) ); ?>321 322 <?php bp_button( array( 'id' => 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'buddypress' ), 'link_text' => __( 'Reject', 'buddypress' ) ) ); ?>323 324 <?php do_action( 'bp_group_membership_requests_admin_item_action' ); ?>325 326 </div>327 </li>328 329 <?php endwhile; ?>330 </ul>331 332 <?php else: ?>333 334 <div id="message" class="info">335 <p><?php _e( 'There are no pending membership requests.', 'buddypress' ); ?></p>336 310 </div> 337 311 338 <?php endif; ?>339 340 312 <?php do_action( 'bp_after_group_membership_requests_admin' ); ?> 341 313 342 314 <?php endif; ?> -
bp-templates/bp-legacy/js/buddypress.js
diff --git bp-templates/bp-legacy/js/buddypress.js bp-templates/bp-legacy/js/buddypress.js index c81ae20..760c067 100644
jq(document).ready( function() { 853 853 template = 'groups/single/members'; 854 854 } 855 855 856 // On the Admin > Requests page, we need to reset the object, since "admin" isn't helpful 857 if ( 'admin' == object && jq('body').hasClass('membership-requests') ) { 858 object = 'membership_requests'; 859 } 860 856 861 if ( pagination_id.indexOf( 'pag-bottom' ) !== -1 ) { 857 862 var caller = 'pag-bottom'; 858 863 } else {