Function Reference: geodir_buddypress_get_bp_listings
Summary
Query listings to display on member profile.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $plugin_prefix
- (string) (required) Geodirectory plugin table prefix.
- Default: None
- $table_prefix
- (string) (required) WordPress Database Table prefix.
- Default: None
- $geodir_post_type
- (string) (required) Post type.
- Default: None
- $table
- (string) (required) Listing table name.
- Default: None
- $paged
- (int) (required) Global variable contains the page number of a listing of posts.
- Default: None
Package
GeoDirectory_BuddyPress_Integration
Parameters
- $query_args
- (array) (required) Query args.
- Default: None
Return Values
- (int|mixed)
- Query results.
Change Log
Since: 1.0.0
Filters
‘geodir_filter_bp_listings_fields’ [Line: 1146]
‘geodir_filter_bp_listings_join’ [Line: 1166]
‘geodir_filter_bp_listings_where’ [Line: 1193]
‘geodir_filter_bp_listings_groupby’ [Line: 1197]
‘geodir_buddypress_posts_orderby’ [Line: 1199]
‘geodir_filter_bp_listings_orderby’ [Line: 1200]
‘geodir_filter_widget_listings_limit’ [Line: 1216]
Source File
geodir_buddypress_get_bp_listings() is located in geodir_buddypress/includes/gdbuddypress_functions.php [Line: 1133]
Source Code
function geodir_buddypress_get_bp_listings( $query_args = array() ) {
global $wpdb, $plugin_prefix, $table_prefix, $geodir_post_type, $table, $paged;
$current_geodir_post_type = $geodir_post_type;
$current_table = $table;
$GLOBALS['gd_query_args_bp'] = $query_args;
$gd_query_args_widgets = $query_args;
$post_type = $query_args['post_type'];
$geodir_post_type = $post_type;
$table = $plugin_prefix . $post_type . '_detail';
$fields = $wpdb->posts . ".*, " . $table . ".*";
$fields = apply_filters( 'geodir_filter_bp_listings_fields', $fields, $table, $post_type );
$join = "INNER JOIN " . $table ." ON (" . $table .".post_id = " . $wpdb->posts . ".ID)";
if ( $post_type == 'gd_event' && defined( 'EVENT_SCHEDULE' ) ) {
$fields .= ", " . EVENT_SCHEDULE . ".*";
$join .= " INNER JOIN " . EVENT_SCHEDULE ." ON (" . EVENT_SCHEDULE .".event_id = " . $wpdb->posts . ".ID)";
}
########### WPML ###########
if ( function_exists( 'icl_object_id' ) ) {
global $sitepress;
$lang_code = ICL_LANGUAGE_CODE;
$default_lang_code = $sitepress->get_default_language();
if( $lang_code ) {
$join .= " JOIN ".$table_prefix."icl_translations icl_t ON icl_t.element_id = ".$table_prefix."posts.ID";
}
}
########### WPML ###########
$join = apply_filters( 'geodir_filter_bp_listings_join', $join, $post_type );
$post_status = is_super_admin() ? " OR " . $wpdb->posts . ".post_status = 'private'" : '';
if ( bp_loggedin_user_id() && bp_displayed_user_id() == bp_loggedin_user_id() ) {
$post_status .= " OR " . $wpdb->posts . ".post_status = 'draft' OR " . $wpdb->posts . ".post_status = 'private'";
}
$where = " AND ( " . $wpdb->posts . ".post_status = 'publish' " . $post_status . " ) AND " . $wpdb->posts . ".post_type = '" . $post_type . "'";
// filter favorites
if ( isset( $query_args['filter_favorite'] ) && $query_args['filter_favorite'] == 1 ) {
$user_fav_posts = get_user_meta( (int)bp_displayed_user_id(), 'gd_user_favourite_post', true );
$user_fav_posts = !empty( $user_fav_posts ) ? implode( "','", $user_fav_posts ) : "-1";
$where .= " AND " . $wpdb->posts . ".ID IN ('" . $user_fav_posts . "')";
} else {
$where .= " AND " . $wpdb->posts . ".post_author = " . (int)bp_displayed_user_id();
}
########### WPML ###########
if ( function_exists( 'icl_object_id' ) ) {
if ( $lang_code ) {
$where .= " AND icl_t.language_code = '$lang_code' ";
}
}
########### WPML ###########
$where = apply_filters( 'geodir_filter_bp_listings_where', $where, $post_type );
$where = $where != '' ? " WHERE 1=1 " . $where : '';
$groupby = " GROUP BY $wpdb->posts.ID ";
$groupby = apply_filters( 'geodir_filter_bp_listings_groupby', $groupby, $post_type );
$orderby = apply_filters( 'geodir_buddypress_posts_orderby', '' );
$orderby = apply_filters( 'geodir_filter_bp_listings_orderby', $orderby, $table, $post_type );
$orderby = $orderby != '' ? " ORDER BY " . $orderby : '';
$posts_per_page = !empty( $query_args['posts_per_page'] ) ? $query_args['posts_per_page'] : 5;
// Paging
$limit = '';
if ( $posts_per_page > 0 ) {
$page = absint( $paged );
if ( !$page ) {
$page = 1;
}
$pgstrt = absint( ( $page - 1 ) * $posts_per_page ) . ', ';
$limit = " LIMIT " . $pgstrt . $posts_per_page;
}
$limit = apply_filters( 'geodir_filter_widget_listings_limit', $limit, $posts_per_page, $post_type );
if ( isset( $query_args['count_only'] ) && !empty( $query_args['count_only'] ) ) {
$fields = $wpdb->posts . ".ID";
$orderby = "";
$limit = "";
}
$sql = "SELECT SQL_CALC_FOUND_ROWS " . $fields . " FROM " . $wpdb->posts . "
" . $join . "
" . $where . "
" . $groupby . "
" . $orderby . "
" . $limit;
//echo 'sql : '; print_r($sql); echo '
';// exit;
$rows = $wpdb->get_results($sql);
if ( isset( $query_args['count_only'] ) && !empty( $query_args['count_only'] ) ) {
$rows = !empty( $rows ) ? count( $rows ) : 0;
}
unset( $GLOBALS['gd_query_args_bp'] );
unset( $gd_query_args_bp );
global $geodir_post_type, $table;
$geodir_post_type = $current_geodir_post_type;
$table = $current_table;
return $rows;
}