Function Reference: geodir_event_widget_events_get_order

Summary

This function has not been documented yet.

Source File

geodir_event_widget_events_get_order() is located in geodir_event_manager/gdevents_template_functions.php [Line: 1359]

Source Code

function geodir_event_widget_events_get_order( $query_args ) {
	global $wpdb, $plugin_prefix, $gd_query_args, $table;
	
	if ( empty( $gd_query_args ) || empty( $gd_query_args['is_geodir_loop'] ) ) {
		return $wpdb->posts . ".post_date DESC, ";
	}
	
	$table = $plugin_prefix . 'gd_event_detail';
	$current_date = date_i18n( 'Y-m-d', current_time( 'timestamp' ) );
	
	$sort_by = !empty( $query_args['order_by'] ) ? $query_args['order_by'] : '';
	
	switch ( $sort_by ) {
		case 'latest':
		case 'newest':
			$orderby = $wpdb->posts . ".post_date DESC, ";
		break;
		case 'featured':
			$orderby = $table . ".is_featured ASC, ";
		break;
		case 'high_review':
			$orderby = $table . ".rating_count DESC, " . $table . ".overall_rating DESC, ";
		break;
		case 'high_rating':
			$orderby = $table . ".overall_rating DESC, ";
		break;
		case 'random':
			$orderby = "RAND(), ";
		break;
		case 'upcoming':
			$orderby = "(CASE WHEN DATEDIFF(DATE(" . EVENT_SCHEDULE . ".event_date), '" . $current_date . "') < 0 THEN 1 ELSE 0 END), ABS(DATEDIFF(DATE(" . EVENT_SCHEDULE . ".event_date), '" . $current_date . "')) ASC, " . EVENT_SCHEDULE . ".event_starttime ASC, ";
		break;
		default:
			$orderby = $wpdb->posts . ".post_title ASC, ";
		break;
	}
	
	if ( $orderby != 'upcoming' ) {
		$orderby .= "(CASE WHEN DATEDIFF(DATE(" . EVENT_SCHEDULE . ".event_date), '" . $current_date . "') < 0 THEN 1 ELSE 0 END), ABS(DATEDIFF(DATE(" . EVENT_SCHEDULE . ".event_date), '" . $current_date . "')) ASC, " . EVENT_SCHEDULE . ".event_starttime ASC, ";
	}
	
	return $orderby;
}