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;
}