# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: \\UBU\www\sandbox\public_html\wp-content\plugins\buddypress\bp-groups
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: bp-groups-classes.php
--- bp-groups-classes.php Base (BASE)
+++ bp-groups-classes.php Locally Modified (Based On LOCAL)
@@ -421,12 +421,24 @@
 	function get_all( $limit = null, $page = null, $only_public = true, $sort_by = false, $order = false ) {
 		global $wpdb, $bp;
 
+		// TODO this optional where statement code should be refactored into its own generic function for re-use by many other functions
+		// default sql WHERE conditions are blank
+		$where_sql = null;
+		$where_conditions = array();
+
+		// limit results to public status
 		if ( $only_public )
-			$public_sql = $wpdb->prepare( " WHERE g.status = 'public'" );
+			$where_conditions[] = $wpdb->prepare( "g.status = 'public'" );
 
+		// limit results to non-hidden status
 		if ( !is_site_admin() )
-			$hidden_sql = $wpdb->prepare( " AND g.status != 'hidden'");
+			$where_conditions[] = $wpdb->prepare( "g.status != 'hidden'");
 
+		// build where sql statement if necessary
+		if ( !empty( $where_conditions ) ) {
+			$where_sql = 'WHERE ' . join( ' AND ', $where_conditions );
+		}
+
 		if ( $limit && $page )
 			$pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
 
@@ -437,17 +449,17 @@
 
 			switch ( $sort_by ) {
 				default:
-					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );
+					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$where_sql} {$order_sql} {$pag_sql}" );
 					break;
 				case 'members':
-					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'total_member_count' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
+					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'total_member_count' {$where_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
 					break;
 				case 'last_active':
-					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'last_activity' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
+					$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'last_activity' {$where_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
 					break;
 			}
 		} else {
-			$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );
\ No newline at end of file
+			$sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$where_sql} {$order_sql} {$pag_sql}" );
\ No newline at end of file
 		}
 
 		return $wpdb->get_results($sql);
