Ticket #6095: buddypress-2.1.1-customstatus-v2.patch
File buddypress-2.1.1-customstatus-v2.patch, 64.1 KB (added by , 10 years ago) |
---|
-
buddypress/bp-groups/bp-groups-actions.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-actions.php plugins/buddypress/bp-groups/bp-groups-actions.php
old new 28 28 $user_has_access = $current_group->user_has_access; 29 29 $no_access_args = array(); 30 30 31 if ( ! $user_has_access && 'hidden' !== $current_group->status) {31 if ( ! $user_has_access && !groups_is_hidden_group_status($current_group->status) ) { 32 32 // Always allow access to home and request-membership 33 33 if ( bp_is_current_action( 'home' ) || bp_is_current_action( 'request-membership' ) ) { 34 34 $user_has_access = true; … … 79 79 // Hidden groups should return a 404 for non-members. 80 80 // Unset the current group so that you're not redirected 81 81 // to the default group tab 82 if ( 'hidden' == $current_group->status) {82 if ( groups_is_hidden_group_status($current_group->status) ) { 83 83 buddypress()->groups->current_group = 0; 84 84 buddypress()->is_single_item = false; 85 85 bp_do_404(); … … 162 162 163 163 $new_group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : 0; 164 164 165 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 'date_created' => bp_core_current_time(), 'status' => 'public' ) ) ) { 165 if ( !$bp->groups->new_group_id = groups_create_group( array( 166 'group_id' => $new_group_id, 167 'name' => $_POST['group-name'], 168 'description' => $_POST['group-desc'], 169 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 170 'date_created' => bp_core_current_time(), 171 'status' => groups_get_default_creation_status() 172 ) ) ) { 166 173 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); 167 174 bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . bp_get_groups_current_create_step() . '/' ); 168 175 } 169 176 } 170 177 171 178 if ( 'group-settings' == bp_get_groups_current_create_step() ) { 172 $group_status = 'public';173 179 $group_enable_forum = 1; 174 180 175 181 if ( !isset($_POST['group-show-forum']) ) { … … 181 187 } 182 188 } 183 189 184 if ( 'private' == $_POST['group-status'])185 $group_status = 'private';186 else if ( 'hidden' == $_POST['group-status'] )187 $group_status = 'hidden';190 if ( groups_is_valid_status( $_POST['group-status'] ) ) 191 $group_status = $_POST['group-status']; 192 else 193 $group_status = groups_get_default_creation_status(); 188 194 189 195 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_forum' => $group_enable_forum ) ) ) { 190 196 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); … … 333 339 if ( !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) && !groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 334 340 335 341 // User wants to join a group that is not public 336 if ( $bp->groups->current_group->status != 'public') {342 if ( groups_is_private_group_status($bp->groups->current_group->status) ) { 337 343 if ( !groups_check_user_has_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 338 344 bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' ); 339 345 bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); … … 391 397 392 398 $redirect = bp_get_group_permalink( groups_get_current_group() ); 393 399 394 if ( 'hidden' == $bp->groups->current_group->status) {400 if ( groups_is_hidden_group_status($bp->groups->current_group->status) ) { 395 401 $redirect = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ); 396 402 } 397 403 -
buddypress/bp-groups/bp-groups-activity.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-activity.php plugins/buddypress/bp-groups/bp-groups-activity.php
old new 214 214 $group = groups_get_group( array( 'group_id' => $args['item_id'] ) ); 215 215 } 216 216 217 if ( isset( $group->status ) && 'public' != $group->status) {217 if ( isset( $group->status ) && groups_is_private_group_status( $group->status ) ) { 218 218 $hide_sitewide = true; 219 219 } 220 220 } -
buddypress/bp-groups/bp-groups-adminbar.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-adminbar.php plugins/buddypress/bp-groups/bp-groups-adminbar.php
old new 88 88 ) ); 89 89 90 90 // Group Admin > Membership Requests 91 if ( bp_get_group_status( $bp->groups->current_group ) == 'private') {91 if ( groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) ) { 92 92 $wp_admin_bar->add_menu( array( 93 93 'parent' => $bp->group_admin_menu_id, 94 94 'id' => 'membership-requests', -
buddypress/bp-groups/bp-groups-admin.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-admin.php plugins/buddypress/bp-groups/bp-groups-admin.php
old new 693 693 <legend><?php _e( 'Privacy', 'buddypress' ); ?></legend> 694 694 695 695 <ul> 696 <li><input type="radio" name="group-status" id="bp-group-status-public" value="public" <?php checked( $item->status, 'public' ) ?> /><label for="bp-group-status-public"><?php _e( 'Public', 'buddypress' ) ?></label></li> 697 <li><input type="radio" name="group-status" id="bp-group-status-private" value="private" <?php checked( $item->status, 'private' ) ?> /><label for="bp-group-status-private"><?php _e( 'Private', 'buddypress' ) ?></label></li> 698 <li><input type="radio" name="group-status" id="bp-group-status-hidden" value="hidden" <?php checked( $item->status, 'hidden' ) ?> /><label for="bp-group-status-hidden"><?php _e( 'Hidden', 'buddypress' ) ?></label></li> 696 <?php 697 if ( is_super_admin() ) { 698 foreach ( groups_get_valid_status() as $status ) { ?> 699 <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>" value="<?php echo esc_attr( $status ); ?>" <?php checked( $item->status, $status ) ?> /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li> 700 <?php 701 } 702 } elseif ( !groups_is_allowed_status( $item->status )) { ?> 703 <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $item->status, 'x' ); ?>" value="<?php echo esc_attr( $item->status ); ?>" checked="checked" /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li> 704 <?php 705 } else { 706 foreach ( groups_get_allowed_status() as $status ) { ?> 707 <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>" value="<?php echo esc_attr( $status ); ?>" <?php checked( $item->status, $status ) ?> /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li> 708 <?php 709 } 710 } 711 ?> 699 712 </ul> 700 713 </fieldset> 701 714 </div> … … 1124 1137 $include_id = (int) $_REQUEST['gid']; 1125 1138 1126 1139 // Set the current view 1127 if ( isset( $_GET['group_status'] ) && in_array( $_GET['group_status'], array( 'public', 'private', 'hidden' )) ) {1140 if ( isset( $_GET['group_status'] ) && groups_is_valid_status( $_GET['group_status'] ) ) { 1128 1141 $this->view = $_GET['group_status']; 1129 1142 } 1130 1143 … … 1271 1284 <li class="all"><a href="<?php echo esc_attr( esc_url( $url_base ) ); ?>" class="<?php if ( 'all' == $this->view ) echo 'current'; ?>"><?php _e( 'All', 'buddypress' ); ?></a> |</li> 1272 1285 <li class="public"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'public', $url_base ) ) ); ?>" class="<?php if ( 'public' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Public <span class="count">(%s)</span>', 'Public <span class="count">(%s)</span>', $this->group_counts['public'], 'buddypress' ), number_format_i18n( $this->group_counts['public'] ) ); ?></a> |</li> 1273 1286 <li class="private"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'private', $url_base ) ) ); ?>" class="<?php if ( 'private' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>', $this->group_counts['private'], 'buddypress' ), number_format_i18n( $this->group_counts['private'] ) ); ?></a> |</li> 1274 <li class="hidden"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'hidden', $url_base ) ) ); ?>" class="<?php if ( 'hidden' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Hidden <span class="count">(%s)</span>', 'Hidden <span class="count">(%s)</span>', $this->group_counts['hidden'], 'buddypress' ), number_format_i18n( $this->group_counts['hidden'] ) ); ?></a></li> 1287 <li class="hidden"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'hidden', $url_base ) ) ); ?>" class="<?php if ( 'hidden' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Hidden <span class="count">(%s)</span>', 'Hidden <span class="count">(%s)</span>', $this->group_counts['hidden'], 'buddypress' ), number_format_i18n( $this->group_counts['hidden'] ) ); ?></a><?php 1288 foreach (groups_get_valid_status() as $status) { 1289 if ($status != 'public' && $status != 'private' && $status != 'hidden') { ?> 1290 |</li><li class="<?php echo $status ?>"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', $status, $url_base ) ) ); ?>" class="<?php if ( $status == $this->view ) echo 'current'; ?>"><?php printf( _n( ucfirst($status).' <span class="count">(%s)</span>', ucfirst($status).' <span class="count">(%s)</span>', $this->group_counts[$status], 'buddypress' ), number_format_i18n( $this->group_counts[$status] ) ); ?></a> 1291 <?php 1292 } 1293 } 1294 ?></li> 1275 1295 1276 1296 <?php do_action( 'bp_groups_list_table_get_views', $url_base, $this->view ); ?> 1277 1297 </ul> … … 1447 1467 */ 1448 1468 public function column_status( $item = array() ) { 1449 1469 $status = $item['status']; 1450 $status_desc = ''; 1451 1452 // @todo This should be abstracted out somewhere for the whole 1453 // Groups component 1454 switch ( $status ) { 1455 case 'public' : 1456 $status_desc = __( 'Public', 'buddypress' ); 1457 break; 1458 case 'private' : 1459 $status_desc = __( 'Private', 'buddypress' ); 1460 break; 1461 case 'hidden' : 1462 $status_desc = __( 'Hidden', 'buddypress' ); 1463 break; 1464 } 1465 1470 $status_desc = __( ucfirst($status), 'buddypress' ); 1466 1471 echo apply_filters_ref_array( 'bp_groups_admin_get_group_status', array( $status_desc, $item ) ); 1467 1472 } 1468 1473 -
buddypress/bp-groups/bp-groups-buddybar.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-buddybar.php plugins/buddypress/bp-groups/bp-groups-buddybar.php
old new 49 49 50 50 <li><a href="<?php bp_groups_action_link( 'admin/manage-members' ); ?>"><?php _e( 'Manage Members', 'buddypress' ); ?></a></li> 51 51 52 <?php if ( $bp->groups->current_group->status == 'private') : ?>52 <?php if ( groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) ) : ?> 53 53 54 54 <li><a href="<?php bp_groups_action_link( 'admin/membership-requests' ); ?>"><?php _e( 'Membership Requests', 'buddypress' ); ?></a></li> 55 55 -
buddypress/bp-groups/bp-groups-classes.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-classes.php plugins/buddypress/bp-groups/bp-groups-classes.php
old new 238 238 $this->is_pending = BP_Groups_Member::check_for_membership_request( $user_id, $this->id ); 239 239 240 240 // If this is a private or hidden group, does the current user have access? 241 if ( ( 'private' === $this->status ) || ( 'hidden' ===$this->status ) ) {241 if ( groups_is_private_group_status( $this->status ) ) { 242 242 243 243 // Assume user does not have access to hidden/private groups 244 244 $this->user_has_access = false; … … 506 506 } 507 507 508 508 if ( !bp_current_user_can( 'bp_moderate' ) ) 509 $hidden_sql = "AND status != 'hidden'";509 $hidden_sql = "AND ".bp_groups_is_hidden_group_sql("status", false); 510 510 511 511 $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE %s OR description LIKE %s ) {$hidden_sql} {$order_sql} {$pag_sql}", $search_terms_like, $search_terms_like ) ); 512 512 $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} WHERE ( name LIKE %s OR description LIKE %s ) {$hidden_sql}", $search_terms_like, $search_terms_like ) ); … … 706 706 $sql['where'] = " g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'"; 707 707 708 708 if ( empty( $r['show_hidden'] ) ) { 709 $sql['hidden'] = " AND g.status != 'hidden'";709 $sql['hidden'] = "AND ".bp_groups_is_hidden_group_sql("g.status", false); 710 710 } 711 711 712 712 if ( ! empty( $r['search_terms'] ) ) { … … 788 788 } 789 789 790 790 if ( ! empty( $sql['hidden'] ) ) { 791 $total_sql['where'][] = "g.status != 'hidden'";791 $total_sql['where'][] = bp_groups_is_hidden_group_sql("g.status", false); 792 792 } 793 793 794 794 if ( ! empty( $sql['search'] ) ) { … … 1023 1023 } 1024 1024 1025 1025 if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) 1026 $hidden_sql = " AND g.status != 'hidden'";1026 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 1027 1027 1028 1028 if ( !empty( $search_terms ) ) { 1029 1029 $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; … … 1087 1087 } 1088 1088 1089 1089 if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) 1090 $hidden_sql = " AND g.status != 'hidden'";1090 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 1091 1091 1092 1092 if ( !empty( $search_terms ) ) { 1093 1093 $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; … … 1159 1159 } 1160 1160 1161 1161 if ( !bp_current_user_can( 'bp_moderate' ) ) 1162 $hidden_sql = " AND status != 'hidden'";1162 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 1163 1163 1164 1164 $letter_like = bp_esc_like( $letter ) . '%'; 1165 1165 … … 1214 1214 $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); 1215 1215 1216 1216 if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) 1217 $hidden_sql = " AND g.status != 'hidden'";1217 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 1218 1218 1219 1219 if ( !empty( $search_terms ) ) { 1220 1220 $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; … … 1356 1356 1357 1357 $hidden_sql = ''; 1358 1358 if ( !bp_current_user_can( 'bp_moderate' ) ) 1359 $hidden_sql = "WHERE status != 'hidden'";1359 $hidden_sql = "WHERE ".bp_groups_is_hidden_group_sql("status", false); 1360 1360 1361 1361 return $wpdb->get_var( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql}" ); 1362 1362 } … … 1408 1408 public static function get_global_topic_count( $status = 'public', $search_terms = false ) { 1409 1409 global $bbdb, $wpdb, $bp; 1410 1410 1411 switch ( $status ) { 1412 case 'all' : 1413 $status_sql = ''; 1414 break; 1415 1416 case 'hidden' : 1417 $status_sql = "AND g.status = 'hidden'"; 1418 break; 1419 1420 case 'private' : 1421 $status_sql = "AND g.status = 'private'"; 1422 break; 1423 1424 case 'public' : 1425 default : 1426 $status_sql = "AND g.status = 'public'"; 1427 break; 1428 } 1411 if ( $status == 'all' ) 1412 $status_sql = ''; 1413 else 1414 $status_sql = "AND g.status = '".esc_sql($status)."'"; 1429 1415 1430 1416 $sql = array(); 1431 1417 … … 1457 1443 $ids = array(); 1458 1444 1459 1445 $ids['all'] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name}" ); 1460 $ids['public'] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'public'" );1461 $ids['private'] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'private'" );1462 $ids['hidden'] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'hidden'" );1446 foreach (groups_get_valid_status() as $status) { 1447 $ids[$status] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = '".esc_sql($status)."'" ); 1448 } 1463 1449 1464 1450 return $ids; 1465 1451 } … … 2230 2216 2231 2217 // If the user is logged in and viewing their own groups, we can show hidden and private groups 2232 2218 if ( $user_id != bp_loggedin_user_id() ) { 2233 $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden'AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0{$pag_sql}", $user_id );2234 $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden'AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );2219 $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0{$pag_sql}", $user_id ); 2220 $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); 2235 2221 } else { 2236 2222 $group_sql = $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0{$pag_sql}", $user_id ); 2237 2223 $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id ) ); … … 2273 2259 } 2274 2260 2275 2261 if ( $user_id != bp_loggedin_user_id() ) 2276 $hidden_sql = " AND g.status != 'hidden'";2262 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 2277 2263 2278 2264 $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY m.date_modified DESC {$pag_sql}" ); 2279 2265 $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC" ); … … 2312 2298 } 2313 2299 2314 2300 if ( $user_id != bp_loggedin_user_id() ) 2315 $hidden_sql = " AND g.status != 'hidden'";2301 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 2316 2302 2317 2303 $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY m.date_modified ASC {$pag_sql}" ); 2318 2304 $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC" ); … … 2351 2337 } 2352 2338 2353 2339 if ( $user_id != bp_loggedin_user_id() ) 2354 $hidden_sql = " AND g.status != 'hidden'";2340 $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false); 2355 2341 2356 2342 $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY m.date_modified ASC {$pag_sql}" ); 2357 2343 $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC" ); … … 2372 2358 $user_id = bp_displayed_user_id(); 2373 2359 2374 2360 if ( $user_id != bp_loggedin_user_id() && !bp_current_user_can( 'bp_moderate' ) ) { 2375 return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden'AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );2361 return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); 2376 2362 } else { 2377 2363 return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); 2378 2364 } … … 2606 2592 if ( bp_is_my_profile() ) { 2607 2593 return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) ); 2608 2594 } else { 2609 return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden'AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) );2595 return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) ); 2610 2596 } 2611 2597 } 2612 2598 -
buddypress/bp-groups/bp-groups-filters.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-filters.php plugins/buddypress/bp-groups/bp-groups-filters.php
old new 163 163 $parts['groups'] = "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id)"; 164 164 165 165 // Restrict to public... 166 $parts['private'] = "g.status = 'public'";166 $parts['private'] = bp_groups_is_private_group_sql("g.status", false); 167 167 168 168 /** 169 169 * ...but do some checks to possibly remove public restriction. -
buddypress/bp-groups/bp-groups-functions.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-functions.php plugins/buddypress/bp-groups/bp-groups-functions.php
old new 93 93 'name' => '', 94 94 'description' => '', 95 95 'slug' => '', 96 'status' => 'public',96 'status' => groups_get_default_creation_status(), 97 97 'enable_forum' => 0, 98 98 'date_created' => bp_core_current_time() 99 99 ); … … 221 221 $group->enable_forum = $enable_forum; 222 222 223 223 /*** 224 * Before we potentially switch the group status, if it has been changed to public225 * from private and there are outstanding membership requests, auto-accept thoserequests.224 * Before we potentially switch the group status, if it has been changed to a status 225 * who not requires membership requests, auto-accept pending requests. 226 226 */ 227 if ( 'private' == $group->status && 'public' == $status)227 if ( !groups_is_membership_request_moderated_status( $status ) ) 228 228 groups_accept_all_pending_membership_requests( $group->id ); 229 229 230 230 // Now update the status … … 290 290 return in_array( $status, (array) $bp->groups->valid_status ); 291 291 } 292 292 293 function groups_get_valid_status() { 294 global $bp; 295 296 return $bp->groups->valid_status; 297 } 298 299 /** 300 * Check a group status (eg 'private') against the whitelist of creation statuses. 301 * 302 * @param string $status Status to check. 303 * @return bool True if status is allowed, otherwise false. 304 */ 305 function groups_is_allowed_status( $status ) { 306 global $bp; 307 308 return in_array( $status, (array) $bp->groups->allowed_status ); 309 } 310 311 function groups_get_allowed_status() { 312 global $bp; 313 314 return $bp->groups->allowed_status; 315 } 316 317 318 /** 319 * Returns the default group status (eg 'public'). 320 * 321 * @return string First valid creation status 322 */ 323 function groups_get_default_creation_status() { 324 global $bp; 325 326 return apply_filters( 'groups_default_creation_status', 327 reset($bp->groups->allowed_status)); 328 } 329 330 /** 331 * Check if this group status (eg 'private') allows membership requests. 332 * 333 * @param string $status Status to check. 334 * @return bool True if status requires join moderation, otherwise false. 335 */ 336 function groups_is_membership_request_allowed_status( $status ) { 337 global $bp; 338 339 return in_array( $status, $bp->groups->membership_request_allowed_status ); 340 } 341 342 /** 343 * Check if membership request to this group status (eg 'private') is moderated. 344 * 345 * @param string $status Status to check. 346 * @return bool True if status allows joining, otherwise false. 347 */ 348 function groups_is_membership_request_moderated_status( $status ) { 349 global $bp; 350 351 return in_array( $status, $bp->groups->membership_request_moderated_status ); 352 } 353 354 355 /** 356 * Display membership request description for group status. 357 * 358 * @param string $status Status to check. 359 */ 360 function group_membership_request_description( $status ) { 361 if ( groups_is_membership_request_moderated_status( $status ) ) 362 _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); 363 elseif ( groups_is_membership_request_allowed_status( $status ) ) 364 _e( 'Any site member can join this group.', 'buddypress' ); 365 else 366 _e( 'Only users who are invited can join the group.', 'buddypress' ); 367 } 368 369 /** 370 * Display group listing visibility description for group status. 371 * 372 * @param string $status Status to check. 373 */ 374 function group_listing_visibility_description( $status ) { 375 if ( groups_is_hidden_group_status( $status ) ) 376 _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); 377 else 378 _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); 379 } 380 381 /** 382 * Display group content visibility description for group status. 383 * 384 * @param string $status Status to check. 385 */ 386 function group_content_visibility_description( $status ) { 387 if ( groups_is_private_group_status( $status ) ) 388 _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); 389 else 390 _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); 391 } 392 393 /** 394 * Check if this group status (eg 'private') make contents private. 395 * 396 * @param string $status Status to check. 397 * @return bool True if status deny content visibility to non-members 398 */ 399 function groups_is_private_group_status( $status ) { 400 global $bp; 401 402 return in_array( $status, $bp->groups->private_status ); 403 } 404 405 function bp_groups_is_private_group_sql($column, $mode = true) { 406 if (count($bp->groups->private_status) == 0) 407 return $mode ? '0=1' : '1=1'; 408 return $column 409 .($mode?" IN ('":" NOT IN ('") 410 .join("','", esc_sql($bp->groups->private_status) ) 411 ."')"; 412 } 413 414 415 /** 416 * Check if this group status (eg 'hidden') make group hidden to non-members. 417 * 418 * @param string $status Status to check. 419 * @return bool True if status deny listing visibility to non-members 420 */ 421 function groups_is_hidden_group_status( $status ) { 422 global $bp; 423 424 return in_array( $status, $bp->groups->hidden_status ); 425 } 426 427 function bp_groups_is_hidden_group_sql($column, $mode = true) { 428 if (count($bp->groups->hidden_status) == 0) 429 return $mode ? '0=1' : '1=1'; 430 return $column 431 .($mode?" IN ('":" NOT IN ('") 432 .join("','", esc_sql($bp->groups->hidden_status) ) 433 ."')"; 434 } 435 436 293 437 /** 294 438 * Provide a unique, sanitized version of a group slug. 295 439 * -
buddypress/bp-groups/bp-groups-loader.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-loader.php plugins/buddypress/bp-groups/bp-groups-loader.php
old new 80 80 public $valid_status; 81 81 82 82 /** 83 * Allowed group statuses (for non-super-admins) (Public, Private, Hidden). 84 * 85 * @since BuddyPress (1.5.0) 86 * @access public 87 * @var array 88 */ 89 public $allowed_status; 90 91 /** 92 * Group statuses who allows membership request (Public, Private). 93 * 94 * @since BuddyPress (2.1.0) 95 * @access public 96 * @var array 97 */ 98 public $membeship_request_allowed_status; 99 100 /** 101 * Group statuses who requires membership request moderation (Private). 102 * 103 * @since BuddyPress (2.1.0) 104 * @access public 105 * @var array 106 */ 107 public $membeship_request_moderated_status; 108 109 /** 110 * Group statuses hidden to non-members in directory 111 * 112 * @since BuddyPress (2.1.0) 113 * @access public 114 * @var array 115 */ 116 public $hidden_status; 117 118 /** 119 * Group statuses whose contents are hidden to non-members 120 * 121 * @since BuddyPress (2.1.0) 122 * @access public 123 * @var array 124 */ 125 public $private_status; 126 127 128 /** 83 129 * Start the groups component creation process. 84 130 * 85 131 * @since BuddyPress (1.5.0) … … 172 218 173 219 parent::setup_globals( $args ); 174 220 221 /* 222 * Initialize groups statuses 223 */ 224 $this->valid_status = apply_filters( 'groups_valid_status', array( 225 'public', 226 'private', 227 'hidden' 228 ) ); 229 230 $this->allowed_status = apply_filters( 'groups_allowed_status', array( 231 'public', 232 'private', 233 'hidden' 234 ) ); 235 236 237 $this->membership_request_allowed_status = apply_filters( 'groups_membership_request_allowed', array( 238 'public', 239 'private' 240 ) ); 241 242 $this->membership_request_moderated_status = apply_filters( 'groups_membership_request_moderated', array( 243 'private' 244 ) ); 245 246 $this->hidden_status = apply_filters( 'groups_hidden_status', array( 247 'hidden' 248 ) ); 249 250 $this->private_status = apply_filters( 'groups_private_status', array( 251 'private', 252 'hidden' 253 ) ); 254 255 256 // Auto join group when non group member performs group activity 257 $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true; 258 175 259 /** Single Group Globals **********************************************/ 176 260 177 261 // Are we viewing a single group? … … 213 297 $this->current_group->is_user_member = false; 214 298 215 299 // Should this group be visible to the logged in user? 216 if ( 'public' == $this->current_group->status || $this->current_group->is_user_member ) 217 $this->current_group->is_visible = true; 218 else 219 $this->current_group->is_visible = false; 300 $this->current_group->is_visible = ( $this->current_group->is_user_member || 301 !groups_is_hidden_group_status( $this->current_group->status ) ); 220 302 221 303 // If this is a private or hidden group, does the user have access? 222 if ( 'private' == $this->current_group->status || 'hidden' == $this->current_group->status) {304 if ( groups_is_private_group_status($this->current_group->status) ) { 223 305 if ( $this->current_group->is_user_member && is_user_logged_in() || bp_current_user_can( 'bp_moderate' ) ) 224 306 $this->current_group->user_has_access = true; 225 307 else … … 284 366 'position' => 30 285 367 ); 286 368 } 287 288 // Groups statuses289 $this->valid_status = apply_filters( 'groups_valid_status', array(290 'public',291 'private',292 'hidden'293 ) );294 295 // Auto join group when non group member performs group activity296 $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true;297 369 } 298 370 299 371 /** … … 440 512 if ( is_user_logged_in() && 441 513 ! $this->current_group->is_user_member && 442 514 ! groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) && 443 $this->current_group->status == 'private' && 515 groups_is_membership_request_allowed_status( $this->current_group->status ) && 516 groups_is_membership_request_moderated_status( $this->current_group->status ) && 444 517 ! groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id ) 445 518 ) { 446 519 -
buddypress/bp-groups/bp-groups-screens.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-screens.php plugins/buddypress/bp-groups/bp-groups-screens.php
old new 150 150 check_admin_referer( 'bp_forums_new_reply' ); 151 151 152 152 // Auto join this user if they are not yet a member of this group 153 if ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 153 if ( bp_groups_auto_join() && 154 !bp_current_user_can( 'bp_moderate' ) && 155 groups_is_membership_request_allowed_status($bp->groups->current_group->status) && 156 !groups_is_membership_request_moderated_status($bp->groups->current_group->status) && 157 !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 154 158 groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() ); 155 159 } 156 160 … … 372 376 if ( $user_is_banned ) { 373 377 $error_message = __( "You have been banned from this group.", 'buddypress' ); 374 378 375 } elseif ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 379 } elseif ( bp_groups_auto_join() && 380 !bp_current_user_can( 'bp_moderate' ) && 381 groups_is_membership_request_allowed_status($bp->groups->current_group->status) && 382 !groups_is_membership_request_moderated_status($bp->groups->current_group->status) && 383 !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { 376 384 // Auto join this user if they are not yet a member of this group 377 385 groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() ); 378 386 } … … 516 524 517 525 $bp = buddypress(); 518 526 519 if ( 'private' != $bp->groups->current_group->status)527 if ( !groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) ) 520 528 return false; 521 529 522 530 // If the user is already invited, accept invitation … … 628 636 629 637 // If the edit form has been submitted, save the edited details 630 638 if ( isset( $_POST['save'] ) ) { 639 640 // Check the nonce 641 if ( !check_admin_referer( 'groups_edit_group_settings' ) ) 642 return false; 643 631 644 $enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0; 632 645 633 646 // Checked against a whitelist for security 634 $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) ); 635 $status = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public'; 647 $status = groups_is_valid_status( $_POST['group-status'] ) ? $_POST['group-status'] : groups_get_default_creation_status(); 636 648 637 649 // Checked against a whitelist for security 638 650 $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) ); 639 651 $invite_status = isset( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members'; 640 652 641 // Check the nonce642 if ( !check_admin_referer( 'groups_edit_group_settings' ) )643 return false;644 645 653 if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) { 646 654 bp_core_add_message( __( 'There was an error updating group settings; please try again.', 'buddypress' ), 'error' ); 647 655 } else { … … 866 874 return false; 867 875 } 868 876 869 if ( ! bp_is_item_admin() || ( 'public' == $bp->groups->current_group->status ) ) { 877 if ( !bp_is_item_admin() || 878 !groups_is_membership_request_moderated_status( $bp->groups->current_group->status )) { 870 879 return false; 871 880 } 872 881 -
buddypress/bp-groups/bp-groups-template.php
diff -ur plugins.orig/buddypress/bp-groups/bp-groups-template.php plugins/buddypress/bp-groups/bp-groups-template.php
old new 573 573 if ( empty( $group ) ) 574 574 $group =& $groups_template->group; 575 575 576 if ( 'public' == $group->status) {576 if ( !groups_is_private_group_status( $group->status ) ) { 577 577 return true; 578 578 } else { 579 579 if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { … … 711 711 } else if ( 'private' == $group->status ) { 712 712 $type = __( "Private Group", "buddypress" ); 713 713 } else { 714 $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );714 $type = __( ucwords( $group->status ) .' Group', 'buddypress' ); 715 715 } 716 716 717 717 return apply_filters( 'bp_get_group_type', $type ); … … 2083 2083 2084 2084 <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/manage-members' ) ?>"><?php _e( 'Members', 'buddypress' ); ?></a></li> 2085 2085 2086 <?php if ( $groups_template->group->status == 'private') : ?>2086 <?php if ( groups_is_membership_request_moderated_status( $groups_template->group->status ) ) : ?> 2087 2087 2088 2088 <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/membership-requests' ) ?>"><?php _e( 'Requests', 'buddypress' ); ?></a></li> 2089 2089 … … 2404 2404 } else { 2405 2405 2406 2406 // Show different buttons based on group status 2407 switch ( $group->status ) { 2408 case 'hidden' : 2409 return false; 2410 break; 2411 2412 case 'public': 2413 $button = array( 2414 'id' => 'join_group', 2415 'component' => 'groups', 2416 'must_be_logged_in' => true, 2417 'block_self' => false, 2418 'wrapper_class' => 'group-button ' . $group->status, 2419 'wrapper_id' => 'groupbutton-' . $group->id, 2420 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ), 2421 'link_text' => __( 'Join Group', 'buddypress' ), 2422 'link_title' => __( 'Join Group', 'buddypress' ), 2423 'link_class' => 'group-button join-group', 2424 ); 2425 break; 2426 2427 case 'private' : 2407 if ( !groups_is_membership_request_allowed_status($group->status) ) { 2408 return false; 2409 } 2428 2410 2429 // Member has outstanding invitation - 2430 // show an "Accept Invitation" button 2431 if ( $group->is_invited ) { 2432 $button = array( 2433 'id' => 'accept_invite', 2434 'component' => 'groups', 2435 'must_be_logged_in' => true, 2436 'block_self' => false, 2437 'wrapper_class' => 'group-button ' . $group->status, 2438 'wrapper_id' => 'groupbutton-' . $group->id, 2439 'link_href' => add_query_arg( 'redirect_to', bp_get_group_permalink( $group ), bp_get_group_accept_invite_link( $group ) ), 2440 'link_text' => __( 'Accept Invitation', 'buddypress' ), 2441 'link_title' => __( 'Accept Invitation', 'buddypress' ), 2442 'link_class' => 'group-button accept-invite', 2443 ); 2444 2445 // Member has requested membership but request is pending - 2446 // show a "Request Sent" button 2447 } elseif ( $group->is_pending ) { 2448 $button = array( 2449 'id' => 'membership_requested', 2450 'component' => 'groups', 2451 'must_be_logged_in' => true, 2452 'block_self' => false, 2453 'wrapper_class' => 'group-button pending ' . $group->status, 2454 'wrapper_id' => 'groupbutton-' . $group->id, 2455 'link_href' => bp_get_group_permalink( $group ), 2456 'link_text' => __( 'Request Sent', 'buddypress' ), 2457 'link_title' => __( 'Request Sent', 'buddypress' ), 2458 'link_class' => 'group-button pending membership-requested', 2459 ); 2460 2461 // Member has not requested membership yet - 2462 // show a "Request Membership" button 2463 } else { 2464 $button = array( 2465 'id' => 'request_membership', 2466 'component' => 'groups', 2467 'must_be_logged_in' => true, 2468 'block_self' => false, 2469 'wrapper_class' => 'group-button ' . $group->status, 2470 'wrapper_id' => 'groupbutton-' . $group->id, 2471 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ), 2472 'link_text' => __( 'Request Membership', 'buddypress' ), 2473 'link_title' => __( 'Request Membership', 'buddypress' ), 2474 'link_class' => 'group-button request-membership', 2475 ); 2476 } 2411 if ( !groups_is_membership_request_moderated_status($group->status) ) { 2412 $button = array( 2413 'id' => 'join_group', 2414 'component' => 'groups', 2415 'must_be_logged_in' => true, 2416 'block_self' => false, 2417 'wrapper_class' => 'group-button ' . $group->status, 2418 'wrapper_id' => 'groupbutton-' . $group->id, 2419 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ), 2420 'link_text' => __( 'Join Group', 'buddypress' ), 2421 'link_title' => __( 'Join Group', 'buddypress' ), 2422 'link_class' => 'group-button join-group', 2423 ); 2424 } elseif ( $group->is_invited ) { 2425 // Member has outstanding invitation - 2426 // show an "Accept Invitation" button 2427 $button = array( 2428 'id' => 'accept_invite', 2429 'component' => 'groups', 2430 'must_be_logged_in' => true, 2431 'block_self' => false, 2432 'wrapper_class' => 'group-button ' . $group->status, 2433 'wrapper_id' => 'groupbutton-' . $group->id, 2434 'link_href' => add_query_arg( 'redirect_to', bp_get_group_permalink( $group ), bp_get_group_accept_invite_link( $group ) ), 2435 'link_text' => __( 'Accept Invitation', 'buddypress' ), 2436 'link_title' => __( 'Accept Invitation', 'buddypress' ), 2437 'link_class' => 'group-button accept-invite', 2438 ); 2439 2440 } elseif ( $group->is_pending ) { 2441 // Member has requested membership but request is pending - 2442 // show a "Request Sent" button 2443 $button = array( 2444 'id' => 'membership_requested', 2445 'component' => 'groups', 2446 'must_be_logged_in' => true, 2447 'block_self' => false, 2448 'wrapper_class' => 'group-button pending ' . $group->status, 2449 'wrapper_id' => 'groupbutton-' . $group->id, 2450 'link_href' => bp_get_group_permalink( $group ), 2451 'link_text' => __( 'Request Sent', 'buddypress' ), 2452 'link_title' => __( 'Request Sent', 'buddypress' ), 2453 'link_class' => 'group-button pending membership-requested', 2454 ); 2477 2455 2478 break; 2456 } else { 2457 // Member has not requested membership yet - 2458 // show a "Request Membership" button 2459 $button = array( 2460 'id' => 'request_membership', 2461 'component' => 'groups', 2462 'must_be_logged_in' => true, 2463 'block_self' => false, 2464 'wrapper_class' => 'group-button ' . $group->status, 2465 'wrapper_id' => 'groupbutton-' . $group->id, 2466 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ), 2467 'link_text' => __( 'Request Membership', 'buddypress' ), 2468 'link_title' => __( 'Request Membership', 'buddypress' ), 2469 'link_class' => 'group-button request-membership', 2470 ); 2479 2471 } 2480 2472 } 2481 2473 … … 2534 2526 if ( ! $group ) 2535 2527 $group =& $groups_template->group; 2536 2528 2537 if ( 'private' == $group->status) {2529 if ( groups_is_membership_request_moderated_status( $group->status ) ) { 2538 2530 if ( ! bp_group_has_requested_membership() ) { 2539 2531 if ( is_user_logged_in() && bp_group_is_invited() ) { 2540 2532 $message = __( 'You must accept your pending invitation before you can access this private group.', 'buddypress' ); -
buddypress/bp-templates/bp-legacy/buddypress/groups/create.php
diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php
old new 50 50 51 51 <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4> 52 52 53 <div class="radio"> 54 <label><input type="radio" name="group-status" value="public"<?php if ( 'public' == bp_get_new_group_status() || !bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong></label> 55 <ul> 56 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li> 57 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> 58 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li> 59 </ul> 60 61 62 <label> 63 <input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> 64 <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong> 65 </label> 66 <ul> 67 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li> 68 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> 69 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> 70 </ul> 71 53 <div class="radio"><?php 54 $new_status = bp_get_new_group_status(); 55 if (!$new_status) 56 $new_status = groups_get_default_creation_status(); 72 57 58 foreach ( groups_get_valid_status() as $status ) { 59 if ( is_super_admin() || groups_is_allowed_status( $status ) ) : ?> 73 60 <label> 74 <input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> 75 <strong><?php _e('This is a hidden group', 'buddypress' ); ?></strong> 76 </label> 61 <input type="radio" name="group-status" value="<?php echo esc_attr($status); ?>"<?php if ( $status == $new_status ) { ?> checked="checked"<?php } ?> /> <strong><?php _e( 'This is a '.$status.' group', 'buddypress' ); ?></strong></label> 77 62 <ul> 78 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li> 79 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li> 80 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> 81 </ul> 82 63 <li><?php group_membership_request_description( $status ); ?></li> 64 <li><?php group_listing_visibility_description( $status ); ?></li> 65 <li><?php group_content_visibility_description( $status ); ?></li> 66 </ul><?php 67 endif; 68 } ?> 83 69 </div> 84 70 85 71 <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4> … … 306 292 307 293 </div> 308 294 309 <?php do_action( 'bp_after_create_group_page' ); ?> 310 No newline at end of file 295 <?php do_action( 'bp_after_create_group_page' ); ?> -
buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php
diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php
old new 56 56 <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4> 57 57 58 58 <div class="radio"> 59 <?php 60 $current_group_status = bp_get_group_status(); 61 if (!is_super_admin() && !groups_is_allowed_status( $current_group_status ) ) { ?> 59 62 <label> 60 <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ); ?> /> 61 <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong> 62 <ul> 63 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li> 64 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> 65 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li> 66 </ul> 63 <input type="hidden" name="group-status" value="<?php 64 echo esc_attr($current_group_status); 65 ?>" /> 66 <strong><?php 67 _e( 'This is a '.$current_group_status.' group', 'buddypress' ); 68 ?></strong> 67 69 </label> 68 70 <ul> 71 <li><?php group_membership_request_description( $current_group_status ); ?></li> 72 <li><?php group_listing_visibility_description( $current_group_status ); ?></li> 73 <li><?php group_content_visibility_description( $current_group_status ); ?></li> 74 </ul> 75 <?php } else { 76 foreach ( groups_get_valid_status() as $status ) { 77 if ( is_super_admin() || groups_is_allowed_status( $status ) ) { ?> 69 78 <label> 70 <input type="radio" name="group-status" value=" private"<?php bp_group_show_status_setting( 'private'); ?> />71 <strong><?php _e( 'This is a privategroup', 'buddypress' ); ?></strong>79 <input type="radio" name="group-status" value="<?php echo esc_attr($current_group_status); ?>"<?php bp_group_show_status_setting( $status ); ?> /> 80 <strong><?php _e( 'This is a '.$status.' group', 'buddypress' ); ?></strong> 72 81 <ul> 73 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress'); ?></li>74 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress'); ?></li>75 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress'); ?></li>82 <li><?php group_membership_request_description( $current_group_status ); ?></li> 83 <li><?php group_listing_visibility_description( $current_group_status ); ?></li> 84 <li><?php group_content_visibility_description( $current_group_status ); ?></li> 76 85 </ul> 77 86 </label> 87 <?php 88 } 89 } 90 } 91 ?> 78 92 79 <label>80 <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ); ?> />81 <strong><?php _e( 'This is a hidden group', 'buddypress' ); ?></strong>82 <ul>83 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>84 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>85 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>86 </ul>87 </label>88 93 </div> 89 94 90 95 <hr /> -
buddypress/bp-templates/bp-legacy/buddypress-functions.php
diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress-functions.php plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php
old new 1188 1188 return; 1189 1189 1190 1190 if ( ! groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { 1191 if ( 'public' == $group->status ) { 1191 if ( groups_is_membership_request_allowed_status($group->status) ) { 1192 if ( !groups_is_membership_request_moderated_status($group->status) ) { 1192 1193 check_ajax_referer( 'groups_join_group' ); 1193 1194 1194 1195 if ( ! groups_join_group( $group->id ) ) { … … 1197 1198 echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; 1198 1199 } 1199 1200 1200 } elseif ( 'private' == $group->status ) { 1201 1201 } else { 1202 1202 // If the user has already been invited, then this is 1203 1203 // an Accept Invitation button 1204 1204 if ( groups_check_user_has_invite( bp_loggedin_user_id(), $group->id ) ) { … … 1209 1209 } else { 1210 1210 echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; 1211 1211 } 1212 1213 1212 // Otherwise, it's a Request Membership button 1214 1213 } else { 1215 1214 check_ajax_referer( 'groups_request_membership' ); … … 1217 1216 if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { 1218 1217 _e( 'Error requesting membership', 'buddypress' ); 1219 1218 } else { 1220 echo '<a id="group-' . esc_attr( $group->id ) . '" class="membership-requested " rel="membership-requested" title="' . __( 'Membership Requested', 'buddypress' ) . '" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Membership Requested', 'buddypress' ) . '</a>';1219 echo '<a id="group-' . esc_attr( $group->id ) . '" class="membership-requested disabled" rel="membership-requested" title="' . __( 'Membership Requested', 'buddypress' ) . '" href="' . bp_get_group_permalink( $group ) . '" onClick="return false;">' . __( 'Membership Requested', 'buddypress' ) . '</a>'; 1221 1220 } 1222 1221 } 1223 1222 } 1224 1223 } 1225 1224 } else { 1226 1225 check_ajax_referer( 'groups_leave_group' ); 1227 1226 1228 1227 if ( ! groups_leave_group( $group->id ) ) { 1228 1229 1229 _e( 'Error leaving group', 'buddypress' ); 1230 } elseif ( 'public' == $group->status) {1230 } elseif ( !groups_is_membership_request_moderated_status($group->status) ) { 1231 1231 echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; 1232 } elseif ( 'private' == $group->status ) { 1232 1233 } elseif ( groups_is_membership_request_allowed_status($group->status) ) { 1234 1233 1235 echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; 1234 1236 } 1235 1237 } -
buddypress/bp-themes/bp-default/groups/create.php
diff -ur plugins.orig/buddypress/bp-themes/bp-default/groups/create.php plugins/buddypress/bp-themes/bp-default/groups/create.php
old new 58 58 <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4> 59 59 60 60 <div class="radio"> 61 <label><input type="radio" name="group-status" value="public"<?php if ( 'public' == bp_get_new_group_status() || !bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> 62 <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong> 63 <ul> 64 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li> 65 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> 66 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li> 67 </ul> 68 </label> 69 70 <label><input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> 71 <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong> 72 <ul> 73 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li> 74 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> 75 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> 76 </ul> 77 </label> 61 <?php 62 global $bp; 78 63 79 <label><input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> 80 <strong><?php _e('This is a hidden group', 'buddypress'); ?></strong> 64 $new_group_status = bp_get_new_group_status(); 65 if ( !$new_group_status ) 66 $new_group_status = groups_get_default_creation_status(); 67 68 foreach ( $bp->groups->valid_status as $group_status ) { 69 if ( is_super_admin() || groups_is_allowed_status( $group_status ) ) { ?> 70 <label><input type="radio" name="group-status" value="<?php echo esc_attr($group_status) ?>"<?php if ( $group_status == $new_group_status ) { ?> checked="checked"<?php } ?> /> 71 <strong><?php _e( 'This is a '.$group_status.' group', 'buddypress' ); ?></strong> 81 72 <ul> 82 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>83 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>84 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>73 <li><?php group_membership_request_description( 'public' ); ?></li> 74 <li><?php group_listing_visibility_description( 'public' ); ?></li> 75 <li><?php group_content_visibility_description( 'public' ); ?></li> 85 76 </ul> 86 77 </label> 78 <?php 79 } 80 } 81 ?> 87 82 </div> 88 83 89 84 <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4> -
buddypress/bp-themes/bp-default/groups/single/admin.php
diff -ur plugins.orig/buddypress/bp-themes/bp-default/groups/single/admin.php plugins/buddypress/bp-themes/bp-default/groups/single/admin.php
old new 60 60 <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ); ?> /> 61 61 <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong> 62 62 <ul> 63 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>64 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>65 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>63 <li><?php group_membership_request_description( 'public' ); ?></li> 64 <li><?php group_listing_visibility_description( 'public' ); ?></li> 65 <li><?php group_content_visibility_description( 'public' ); ?></li> 66 66 </ul> 67 67 </label> 68 68 … … 70 70 <input type="radio" name="group-status" value="private"<?php bp_group_show_status_setting( 'private' ); ?> /> 71 71 <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong> 72 72 <ul> 73 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>74 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>75 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>73 <li><?php group_membership_request_description( 'private' ); ?></li> 74 <li><?php group_listing_visibility_description( 'private' ); ?></li> 75 <li><?php group_content_visibility_description( 'private' ); ?></li> 76 76 </ul> 77 77 </label> 78 78 … … 80 80 <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ); ?> /> 81 81 <strong><?php _e( 'This is a hidden group', 'buddypress' ); ?></strong> 82 82 <ul> 83 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>84 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>85 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>83 <li><?php group_membership_request_description( 'hidden' ); ?></li> 84 <li><?php group_listing_visibility_description( 'hidden' ); ?></li> 85 <li><?php group_content_visibility_description( 'hidden' ); ?></li> 86 86 </ul> 87 87 </label> 88 88 </div> -
buddypress/bp-themes/bp-default/_inc/ajax.php
diff -ur plugins.orig/buddypress/bp-themes/bp-default/_inc/ajax.php plugins/buddypress/bp-themes/bp-default/_inc/ajax.php
old new 735 735 return; 736 736 737 737 if ( ! groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { 738 if ( 'public' == $group->status ) { 738 if ( groups_is_membership_request_allowed_status( $group->status ) ) { 739 if ( ! groups_is_membership_request_moderated_status( $group->status ) ) { 739 740 check_ajax_referer( 'groups_join_group' ); 740 741 741 742 if ( ! groups_join_group( $group->id ) ) { … … 744 745 echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; 745 746 } 746 747 747 } else if ( 'private' == $group->status ){748 } else { 748 749 749 750 // If the user has already been invited, then this is 750 751 // an Accept Invitation button … … 768 769 } 769 770 } 770 771 } 771 772 } 772 773 } else { 773 774 check_ajax_referer( 'groups_leave_group' ); 774 775 775 776 if ( ! groups_leave_group( $group->id ) ) { 776 777 _e( 'Error leaving group', 'buddypress' ); 777 } elseif ( 'public' == $group->status ) { 778 echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; 779 } elseif ( 'private' == $group->status ) { 778 } elseif ( groups_is_membership_request_moderated_status( $group->status ) ) { 780 779 echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; 780 } elseif ( groups_is_membership_request_allowed_status( $group->status ) ) { 781 echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; 781 782 } 782 783 } 783 784