get( 'event_display' ); $args = [ 'eventDisplay' => $display, 'post_type' => Tribe__Events__Main::POSTTYPE, 'post_status' => $post_status, 'paged' => $tribe_paged, ]; // If the request is false or not set we assume the request is for all events, not just featured ones. if ( tribe( 'tec.featured_events' )->featured_events_requested() || ( isset( $this->args['featured'] ) && tribe_is_truthy( $this->args['featured'] ) ) ) { $args['featured'] = true; } else { /** * Unset due to how queries featured argument is expected to be non-existent. * * @see #127272 */ if ( isset( $args['featured'] ) ) { unset( $args['featured'] ); } } if ( (bool) tribe_get_request_var( 'tribeHideRecurrence' ) ) { $args['hide_subsequent_recurrences'] = true; } // Apply display and date. $date = tribe_get_request_var( 'tribe-bar-date', 'now' ); if ( 'now' === $date ) { /* * When defaulting to "now" let's round down to the lower half hour. * This way we avoid invalidating the hash on requests following each other * in reasonable (30') time. */ $date = Dates::build_date_object( 'now' ); $minutes = $date->format( 'm' ); $date->setTime( $date->format( 'H' ), $minutes - ( $minutes % 30 ) ); $date = $date->format( Dates::DBDATETIMEFORMAT ); } $args['eventDisplay'] = $display; if ( 'list' === $display ) { $args['ends_after'] = $date; $args['order'] = 'ASC'; } elseif ( 'past' === $display ) { $args['ends_before'] = $date; $args['order'] = 'DESC'; } elseif ( 'all' === $display ) { $args['start_date'] = $date; $args['order'] = 'ASC'; } // Check & set event category. if ( isset( $_POST['tribe_event_category'] ) ) { $args[ Tribe__Events__Main::TAXONOMY ] = $_POST['tribe_event_category']; } $args = apply_filters( 'tribe_events_listview_ajax_get_event_args', $args, $_POST ); $query = tribe_get_events( $args, true ); /* * The hash is used to detect whether the primary arguments in the query have changed (i.e. due to a filter * bar request); if they have, we want to go back to page 1. */ $hash_str = $query->builder->hash( [ 'exclude' => [ 'paged', 'start_date', 'ends_before', 'ends_after', ], ], $query ); if ( ! empty( $_POST['hash'] ) && $hash_str !== $_POST['hash'] ) { $tribe_paged = 1; $args['paged'] = 1; $query = tribe_get_events( $args, true ); } $response = [ 'html' => '', 'success' => true, 'max_pages' => $query->max_num_pages, 'hash' => $hash_str, 'tribe_paged' => $tribe_paged, 'total_count' => $query->found_posts, 'view' => 'list', ]; global $post; global $paged; global $wp_query; $wp_query = $query; if ( ! empty( $query->posts ) ) { $post = $query->posts[0]; } $paged = absint( $tribe_paged ); Tribe__Events__Main::instance()->displaying = apply_filters( 'tribe_events_listview_ajax_event_display', 'list', $args ); if ( ! empty( $_POST['tribe_event_display'] ) && 'past' === $_POST['tribe_event_display'] ) { $response['view'] = 'past'; } ob_start(); tribe_get_view( 'list/content' ); $response['html'] .= ob_get_clean(); apply_filters( 'tribe_events_ajax_response', $response ); header( 'Content-type: application/json' ); echo json_encode( $response ); die(); } } }