BP_Groups_List_Table::prepare_items()
Set up items for display in the list table.
Description
Handles filtering of data, sorting, pagination, and any other data manipulation required prior to rendering.
Source
File: bp-groups/classes/class-bp-groups-list-table.php
public function prepare_items() { global $groups_template; $screen = get_current_screen(); // Option defaults. $include_id = false; $search_terms = false; // Set current page. $page = $this->get_pagenum(); // Set per page from the screen options. $per_page = $this->get_items_per_page( str_replace( '-', '_', "{$screen->id}_per_page" ) ); // Sort order. $order = 'DESC'; if ( !empty( $_REQUEST['order'] ) ) { $order = ( 'desc' == strtolower( $_REQUEST['order'] ) ) ? 'DESC' : 'ASC'; } // Order by - default to newest. $orderby = 'last_activity'; if ( ! empty( $_REQUEST['orderby'] ) ) { switch ( $_REQUEST['orderby'] ) { case 'name' : $orderby = 'name'; break; case 'id' : $orderby = 'date_created'; break; case 'members' : $orderby = 'total_member_count'; break; case 'last_active' : $orderby = 'last_activity'; break; } } // Are we doing a search? if ( !empty( $_REQUEST['s'] ) ) $search_terms = $_REQUEST['s']; // Check if user has clicked on a specific group (if so, fetch only that group). if ( !empty( $_REQUEST['gid'] ) ) $include_id = (int) $_REQUEST['gid']; // Set the current view. if ( isset( $_GET['group_status'] ) && in_array( $_GET['group_status'], array( 'public', 'private', 'hidden' ) ) ) { $this->view = $_GET['group_status']; } // We'll use the ids of group status types for the 'include' param. $this->group_type_ids = BP_Groups_Group::get_group_type_ids(); // Pass a dummy array if there are no groups of this type. $include = false; if ( 'all' != $this->view && isset( $this->group_type_ids[ $this->view ] ) ) { $include = ! empty( $this->group_type_ids[ $this->view ] ) ? $this->group_type_ids[ $this->view ] : array( 0 ); } // Get group type counts for display in the filter tabs. $this->group_counts = array(); foreach ( $this->group_type_ids as $group_type => $group_ids ) { $this->group_counts[ $group_type ] = count( $group_ids ); } // Group types $group_type = false; if ( isset( $_GET['bp-group-type'] ) && null !== bp_groups_get_group_type_object( $_GET['bp-group-type'] ) ) { $group_type = $_GET['bp-group-type']; } // If we're viewing a specific group, flatten all activities into a single array. if ( $include_id ) { $groups = array( (array) groups_get_group( $include_id ) ); } else { $groups_args = array( 'include' => $include, 'per_page' => $per_page, 'page' => $page, 'orderby' => $orderby, 'order' => $order ); if ( $group_type ) { $groups_args['group_type'] = $group_type; } $groups = array(); if ( bp_has_groups( $groups_args ) ) { while ( bp_groups() ) { bp_the_group(); $groups[] = (array) $groups_template->group; } } } // Set raw data to display. $this->items = $groups; // Store information needed for handling table pagination. $this->set_pagination_args( array( 'per_page' => $per_page, 'total_items' => $groups_template->total_group_count, 'total_pages' => ceil( $groups_template->total_group_count / $per_page ) ) ); }
Changelog
Version | Description |
---|---|
BuddyPress 1.7.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.