Function Reference: geodir_event_get_widget_events

Summary

This function has not been documented yet.

Filters

‘geodir_event_filter_widget_events_fields’ [Line: 1315]

‘geodir_event_filter_widget_events_join’ [Line: 1319]

‘geodir_event_filter_widget_events_where’ [Line: 1322]

Source File

geodir_event_get_widget_events() is located in geodir_event_manager/gdevents_template_functions.php [Line: 1307]

Source Code

function geodir_event_get_widget_events( $query_args, $count_only = false ) {
	global $wpdb, $plugin_prefix;
	$GLOBALS['gd_query_args'] = $query_args;
	$gd_query_args = $query_args;
	
	$table = $plugin_prefix . 'gd_event_detail';
	
	$fields = $wpdb->posts . ".*, " . $table . ".*, " . EVENT_SCHEDULE . ".*";
	$fields = apply_filters( 'geodir_event_filter_widget_events_fields', $fields );
	
	$join = "INNER JOIN " . $table ." ON (" . $table .".post_id = " . $wpdb->posts . ".ID)";
	$join .= " INNER JOIN " . EVENT_SCHEDULE ." ON (" . EVENT_SCHEDULE .".event_id = " . $wpdb->posts . ".ID)";
	$join = apply_filters( 'geodir_event_filter_widget_events_join', $join );
	
	$where = " AND " . $wpdb->posts . ".post_status = 'publish' AND " . $wpdb->posts . ".post_type = 'gd_event'";
	$where = apply_filters( 'geodir_event_filter_widget_events_where', $where );
	$where = $where != '' ? " WHERE 1=1 " . $where : '';
				
	if ($count_only) {
		$sql = "SELECT COUNT(DISTINCT(CONCAT(" . $wpdb->posts . ".ID, '-', " . EVENT_SCHEDULE . ".event_date))) AS total FROM " . $wpdb->posts . "
			" . $join . "
			" . $where;
		$rows = (int)$wpdb->get_var($sql);
	} else {
		$groupby = "";
		$groupby = apply_filters( 'geodir_event_filter_widget_events_groupby', $groupby );
	
		$orderby = geodir_event_widget_events_get_order( $query_args );
		$orderby = apply_filters( 'geodir_event_filter_widget_events_orderby', $orderby );
		$orderby .= $wpdb->posts . ".post_title ASC";
		$orderby = $orderby != '' ? " ORDER BY " . $orderby : '';
			
		$limit = !empty( $query_args['posts_per_page'] ) ? $query_args['posts_per_page'] : 5;
		$limit = apply_filters( 'geodir_event_filter_widget_events_limit', $limit );
		
		$page = !empty($query_args['pageno']) ? absint($query_args['pageno']) : 1;
		if ( !$page )
			$page = 1;
		
		$limit = (int)$limit > 0 ? " LIMIT " . absint( ( $page - 1 ) * (int)$limit ) . ", " . (int)$limit : "";
		
		$sql = "SELECT SQL_CALC_FOUND_ROWS " . $fields . " FROM " . $wpdb->posts . "
			" . $join . "
			" . $where . "
			" . $groupby . "
			" . $orderby . "
			" . $limit;	
		$rows = $wpdb->get_results($sql);
	}
		
	return $rows;
}