Пример #1
0
function _backend_load_event_of_date()
{
    if (isset($_POST['event_date']) && $_POST['event_date']) {
        TribeEventsQuery::init();
        $states[] = 'publish';
        if (0 < get_current_user_id()) {
            $states[] = 'private';
        }
        $args = array('post_status' => $states, 'eventDate' => $_POST["event_date"], 'eventDisplay' => 'day');
        TribeEvents::instance()->displaying = 'day';
        $query = TribeEventsQuery::getEvents($args, true);
        global $wp_query, $post;
        $wp_query = $query;
        add_filter('tribe_is_day', '__return_true');
        $html = '';
        if ($query->have_posts()) {
            while ($query->have_posts()) {
                $query->the_post();
                $html .= '<option value="' . get_the_ID() . '"> ' . get_the_title() . '</option>';
            }
            wp_reset_postdata();
        }
        $response = array('html' => $html, 'success' => true, 'total_count' => $query->found_posts, 'view' => 'day');
        header('Content-type: application/json');
        echo json_encode($response);
        die;
    }
}
Пример #2
0
 /**
  * AJAX handler for the Map view
  */
 function ajax_response()
 {
     $tribe_paged = !empty($_POST['tribe_paged']) ? $_POST['tribe_paged'] : 1;
     TribeEventsQuery::init();
     $defaults = array('post_type' => TribeEvents::POSTTYPE, 'posts_per_page' => tribe_get_option('postsPerPage', 10), 'paged' => $tribe_paged, 'post_status' => array('publish'), 'eventDisplay' => 'map');
     $view_state = 'map';
     /* if past view */
     if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') {
         $view_state = 'past';
         $defaults['eventDisplay'] = 'past';
     }
     if (isset($_POST['tribe_event_category'])) {
         $defaults[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
     }
     $query = TribeEventsQuery::getEvents($defaults, true);
     $have_events = 0 < $query->found_posts;
     if ($have_events && TribeEventsGeoLoc::instance()->is_geoloc_query()) {
         $lat = isset($_POST['tribe-bar-geoloc-lat']) ? $_POST['tribe-bar-geoloc-lat'] : 0;
         $lng = isset($_POST['tribe-bar-geoloc-lng']) ? $_POST['tribe-bar-geoloc-lng'] : 0;
         TribeEventsGeoLoc::instance()->assign_distance_to_posts($query->posts, $lat, $lng);
     } elseif (!$have_events && isset($_POST['tribe-bar-geoloc'])) {
         TribeEvents::setNotice('event-search-no-results', sprintf(__('No results were found for events in or near <strong>"%s"</strong>.', 'tribe-events-calendar-pro'), esc_html($_POST['tribe-bar-geoloc'])));
     } elseif (!$have_events && isset($_POST['tribe_event_category'])) {
         TribeEvents::setNotice('events-not-found', sprintf(__('No matching events listed under %s. Please try viewing the full calendar for a complete list of events.', 'tribe-events-calendar'), esc_html($_POST['tribe_event_category'])));
     } elseif (!$have_events) {
         TribeEvents::setNotice('event-search-no-results', __('There were no results found.', 'tribe-events-calendar-pro'));
     }
     $response = array('html' => '', 'markers' => array(), 'success' => true, 'tribe_paged' => $tribe_paged, 'max_pages' => $query->max_num_pages, 'total_count' => $query->found_posts, 'view' => $view_state);
     // @TODO: clean this up / refactor the following conditional
     if ($have_events) {
         global $wp_query, $post;
         $data = $query->posts;
         $post = $query->posts[0];
         $wp_query = $query;
         TribeEvents::instance()->displaying = 'map';
         ob_start();
         tribe_get_view('pro/map/content');
         $response['html'] .= ob_get_clean();
         $response['markers'] = TribeEventsGeoLoc::instance()->generate_markers($data);
     } else {
         global $wp_query;
         $wp_query = $query;
         TribeEvents::instance()->setDisplay();
         ob_start();
         tribe_get_view('pro/map/content');
         $response['html'] .= ob_get_clean();
     }
     $response = apply_filters('tribe_events_ajax_response', $response);
     header('Content-type: application/json');
     echo json_encode($response);
     exit;
 }
Пример #3
0
 /**
  * List view ajax handler
  *
  * @return void
  */
 function ajax_response()
 {
     TribeEventsQuery::init();
     $tribe_paged = !empty($_POST['tribe_paged']) ? intval($_POST['tribe_paged']) : 1;
     $args = array('eventDisplay' => 'list', 'post_type' => TribeEvents::POSTTYPE, 'post_status' => 'publish', 'paged' => $tribe_paged);
     // check & set past display
     if (isset($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') {
         $args['eventDisplay'] = 'past';
     }
     // check & set event category
     if (isset($_POST['tribe_event_category'])) {
         $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
     }
     $query = tribe_get_events($args, true);
     // $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 = $query->query_vars;
     $hash['paged'] = null;
     $hash['start_date'] = null;
     $hash['end_date'] = null;
     $hash_str = md5(maybe_serialize($hash));
     if (!empty($_POST['hash']) && $hash_str !== $_POST['hash']) {
         $tribe_paged = 1;
         $args['paged'] = 1;
         $query = TribeEventsQuery::getEvents($args, true);
     }
     $response = array('html' => '', 'success' => true, 'max_pages' => $query->max_num_pages, 'hash' => $hash_str, 'tribe_paged' => $tribe_paged, 'total_count' => $query->found_posts, 'view' => 'list');
     global $wp_query, $post, $paged;
     $wp_query = $query;
     if (!empty($query->posts)) {
         $post = $query->posts[0];
     }
     $paged = $tribe_paged;
     TribeEvents::instance()->displaying = 'list';
     if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') {
         $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;
 }
Пример #4
0
 /**
  * AJAX handler for Photo view
  *
  * @return void
  */
 function ajax_response()
 {
     $tec = TribeEvents::instance();
     TribeEventsQuery::init();
     $tribe_paged = !empty($_POST['tribe_paged']) ? intval($_POST['tribe_paged']) : 1;
     $args = array('eventDisplay' => 'list', 'post_type' => TribeEvents::POSTTYPE, 'post_status' => 'publish', 'paged' => $tribe_paged);
     $view_state = 'photo';
     if (isset($_POST['tribe_event_category'])) {
         $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
     }
     /* if past view */
     if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') {
         $view_state = 'past';
         $args['eventDisplay'] = 'past';
     }
     $query = TribeEventsQuery::getEvents($args, true);
     $hash = $query->query_vars;
     $hash['paged'] = null;
     $hash['start_date'] = null;
     $hash_str = md5(maybe_serialize($hash));
     if (!empty($_POST['hash']) && $hash_str !== $_POST['hash']) {
         $tribe_paged = 1;
         $args['paged'] = 1;
         $query = TribeEventsQuery::getEvents($args, true);
     }
     $response = array('html' => '', 'success' => true, 'max_pages' => $query->max_num_pages, 'hash' => $hash_str, 'tribe_paged' => $tribe_paged, 'view' => $view_state);
     global $wp_query, $post;
     $wp_query = $query;
     if (!empty($query->posts)) {
         $post = $query->posts[0];
     }
     add_filter('tribe_events_list_pagination', array('TribeEvents', 'clear_module_pagination'), 10);
     $tec->displaying = 'photo';
     ob_start();
     tribe_get_view('pro/photo/content');
     $response['html'] .= ob_get_clean();
     apply_filters('tribe_events_ajax_response', $response);
     header('Content-type: application/json');
     echo json_encode($response);
     die;
 }
Пример #5
0
 /**
  * Generates the iCal file
  *
  * @static
  *
  * @param int|null $post If you want the ical file for a single event
  */
 public static function generate_ical_feed($post = null)
 {
     $tec = TribeEvents::instance();
     $wp_timezone = get_option('timezone_string');
     $events = '';
     $blogHome = get_bloginfo('url');
     $blogName = get_bloginfo('name');
     $event_display = !empty($_REQUEST['tribe_display']) ? $_REQUEST['tribe_display'] : 'upcoming';
     if ($event_display == 'list') {
         $event_display = 'upcoming';
     }
     if ($post) {
         $events_posts = array();
         $events_posts[] = $post;
     } else {
         TribeEventsQuery::init();
         $events_query = TribeEventsQuery::getEvents(array('posts_per_page' => -1, 'eventDisplay' => $event_display), true);
         $events_posts = $events_query->posts;
     }
     foreach ($events_posts as $event_post) {
         $startDate = $event_post->EventStartDate;
         $endDate = $event_post->EventEndDate;
         // convert 2010-04-08 00:00:00 to 20100408T000000 or YYYYMMDDTHHMMSS
         $startDate = str_replace(array('-', ' ', ':'), array('', 'T', ''), $startDate);
         $endDate = str_replace(array('-', ' ', ':'), array('', 'T', ''), $endDate);
         if (get_post_meta($event_post->ID, '_EventAllDay', true) == 'yes') {
             $startDate = substr($startDate, 0, 8);
             $endDate = substr($endDate, 0, 8);
             // endDate bumped ahead one day to counter iCal's off-by-one error
             $endDateStamp = strtotime($endDate);
             $endDate = date('Ymd', $endDateStamp + 86400);
             $type = 'DATE';
         } else {
             $type = 'DATE-TIME';
         }
         $description = preg_replace("/[\n\t\r]/", ' ', strip_tags($event_post->post_content));
         // add fields to iCal output
         $item = array();
         $item[] = "DTSTART;VALUE={$type}:" . $startDate;
         $item[] = "DTEND;VALUE={$type}:" . $endDate;
         $item[] = 'DTSTAMP:' . date('Ymd\\THis', time());
         $item[] = 'CREATED:' . str_replace(array('-', ' ', ':'), array('', 'T', ''), $event_post->post_date);
         $item[] = 'LAST-MODIFIED:' . str_replace(array('-', ' ', ':'), array('', 'T', ''), $event_post->post_modified);
         $item[] = 'UID:' . $event_post->ID . '-' . strtotime($startDate) . '-' . strtotime($endDate) . '@' . $blogHome;
         $item[] = 'SUMMARY:' . $event_post->post_title;
         $item[] = 'DESCRIPTION:' . str_replace(',', '\\,', $description);
         $item[] = 'LOCATION:' . html_entity_decode($tec->fullAddressString($event_post->ID), ENT_QUOTES);
         $item[] = 'URL:' . get_permalink($event_post->ID);
         $item = apply_filters('tribe_ical_feed_item', $item, $event_post);
         $events .= "BEGIN:VEVENT\r\n" . implode("\r\n", $item) . "\r\nEND:VEVENT\r\n";
     }
     header('Content-type: text/calendar; charset=UTF-8');
     header('Content-Disposition: attachment; filename="iCal-TribeEvents.ics"');
     $content = "BEGIN:VCALENDAR\r\n";
     $content .= "VERSION:2.0\r\n";
     $content .= 'PRODID:-//' . $blogName . ' - ECPv' . TribeEvents::VERSION . "//NONSGML v1.0//EN\r\n";
     $content .= "CALSCALE:GREGORIAN\r\n";
     $content .= "METHOD:PUBLISH\r\n";
     $content .= 'X-WR-CALNAME:' . apply_filters('tribe_ical_feed_calname', $blogName) . "\r\n";
     $content .= 'X-ORIGINAL-URL:' . $blogHome . "\r\n";
     $content .= 'X-WR-CALDESC:Events for ' . $blogName . "\r\n";
     if ($wp_timezone) {
         $content .= 'X-WR-TIMEZONE:' . $wp_timezone . "\r\n";
     }
     $content = apply_filters('tribe_ical_properties', $content);
     $content .= $events;
     $content .= 'END:VCALENDAR';
     echo $content;
     exit;
 }
Пример #6
0
 /**
  * AJAX handler for tribe_event_day (dayview navigation)
  * This loads up the day view shard with all the appropriate events for the day
  *
  * @return void
  */
 function ajax_response()
 {
     if (isset($_POST['eventDate']) && $_POST['eventDate']) {
         TribeEventsQuery::init();
         $states[] = 'publish';
         if (0 < get_current_user_id()) {
             $states[] = 'private';
         }
         $args = array('post_status' => $states, 'eventDate' => $_POST["eventDate"], 'eventDisplay' => 'day');
         TribeEvents::instance()->displaying = 'day';
         if (isset($_POST['tribe_event_category'])) {
             $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
         }
         $query = TribeEventsQuery::getEvents($args, true);
         global $wp_query, $post;
         $wp_query = $query;
         add_filter('tribe_is_day', '__return_true');
         // simplest way to declare that this is a day view
         ob_start();
         tribe_get_view('day/content');
         $response = array('html' => ob_get_clean(), 'success' => true, 'total_count' => $query->found_posts, 'view' => 'day');
         apply_filters('tribe_events_ajax_response', $response);
         header('Content-type: application/json');
         echo json_encode($response);
         die;
     }
 }
 /**
  * AJAX handler for tribe_event_day (dayview navigation)
  * This loads up the day view shard with all the appropriate events for the day
  *
  * @return void
  * @author Timothy Wood
  * @since 3.0
  */
 function wp_ajax_tribe_event_day()
 {
     if (isset($_POST["eventDate"]) && $_POST["eventDate"]) {
         if (class_exists('TribeEventsFilterView')) {
             TribeEventsFilterView::instance()->createFilters(null, true);
         }
         TribeEventsQuery::init();
         add_filter('tribe_events_pre_get_posts', array($this, 'pre_get_posts'));
         $args = array('post_status' => array('publish', 'private', 'future'), 'eventDate' => $_POST["eventDate"], 'eventDisplay' => 'day');
         if (isset($_POST['tribe_event_category'])) {
             $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
         }
         $query = TribeEventsQuery::getEvents($args, true);
         global $wp_query, $post;
         $wp_query = $query;
         if (have_posts()) {
             the_post();
             // TODO: why is this here?
             rewind_posts();
             // so we don't skip the first post when rendering
         }
         add_filter('tribe_is_day', '__return_true');
         // simplest way to declare that this is a day view
         TribeEventsTemplates::getTemplateHierarchy('day', '', 'pro', $this->pluginPath);
         ob_start();
         tribe_get_view('day/content');
         $response = array('html' => ob_get_clean(), 'success' => true, 'total_count' => $query->found_posts, 'view' => 'day');
         apply_filters('tribe_events_ajax_response', $response);
         header('Content-type: application/json');
         echo json_encode($response);
         die;
     }
 }
 public function setup_list($template_file)
 {
     if (basename(dirname($template_file)) . '/' . basename($template_file) == 'mini-calendar/list.php') {
         if ($this->args['count'] == 0) {
             return;
         }
         // make sure the widget taxonomy filter setting is respected
         add_action('pre_get_posts', array($this, 'set_count'), 1000);
         global $wp_query;
         // hijack the main query to load the events via provided $args
         if (!is_null($this->args)) {
             $query_args = array('posts_per_page' => $this->args['count'], 'tax_query' => $this->args['tax_query'], 'eventDisplay' => 'custom', 'start_date' => $this->get_month(), 'post_status' => array('publish'), 'is_tribe_mini_calendar' => true, 'tribeHideRecurrence' => false);
             // set end date if initial load, or ajax month switch
             if (!defined('DOING_AJAX') || defined('DOING_AJAX') && $_POST['action'] == 'tribe-mini-cal') {
                 $query_args['end_date'] = substr_replace($this->get_month(TribeDateUtils::DBDATEFORMAT), TribeDateUtils::getLastDayOfMonth(strtotime($this->get_month())), -2);
                 // @todo use tribe_events_end_of_day() ?
                 $query_args['end_date'] = TribeDateUtils::endOfDay($query_args['end_date']);
             }
             $wp_query = TribeEventsQuery::getEvents($query_args, true);
         }
     }
 }
Пример #9
0
 /**
  * The Calendar View AJAX Handler.
  *
  * @return void
  * @since 3.0
  */
 function calendar_ajax_call()
 {
     if (isset($_POST["eventDate"]) && $_POST["eventDate"]) {
         TribeEventsQuery::init();
         // set the global query var for eventDisplay
         $query_args = array('post_type' => self::POSTTYPE, 'eventDisplay' => 'month', 'eventDate' => $_POST['eventDate']);
         $this->displaying = 'month';
         if (isset($_POST['tribe_event_category'])) {
             $query_args['tribe_events_cat'] = $_POST['tribe_event_category'];
         }
         query_posts($query_args);
         ob_start();
         tribe_get_view('month/content');
         $response = array('html' => ob_get_clean(), 'success' => true, 'view' => 'month');
         apply_filters('tribe_events_ajax_response', $response);
         header('Content-type: application/json');
         echo json_encode($response);
         die;
     }
 }
 public function getEvents($args = '')
 {
     $tribe_ecp = TribeEvents::instance();
     $defaults = array('posts_per_page' => tribe_get_option('postsPerPage', 10), 'post_type' => TribeEvents::POSTTYPE, 'orderby' => 'event_date', 'order' => 'ASC');
     $args = wp_parse_args($args, $defaults);
     return TribeEventsQuery::getEvents($args);
 }
 /**
  * Run on applied action init
  */
 public function init()
 {
     $this->pluginName = __('The Events Calendar', 'tribe-events-calendar');
     $this->rewriteSlug = $this->getRewriteSlug();
     $this->rewriteSlugSingular = $this->getRewriteSlugSingular();
     $this->taxRewriteSlug = $this->getTaxRewriteSlug();
     $this->tagRewriteSlug = $this->getTagRewriteSlug();
     $this->monthSlug = sanitize_title(__('month', 'tribe-events-calendar'));
     $this->listSlug = sanitize_title(__('list', 'tribe-events-calendar'));
     $this->upcomingSlug = sanitize_title(__('upcoming', 'tribe-events-calendar'));
     $this->pastSlug = sanitize_title(__('past', 'tribe-events-calendar'));
     $this->daySlug = sanitize_title(__('day', 'tribe-events-calendar'));
     $this->todaySlug = sanitize_title(__('today', 'tribe-events-calendar'));
     $this->singular_venue_label = $this->get_venue_label_singular();
     $this->plural_venue_label = $this->get_venue_label_plural();
     $this->singular_organizer_label = $this->get_organizer_label_singular();
     $this->plural_organizer_label = $this->get_organizer_label_plural();
     $this->postTypeArgs['rewrite']['slug'] = sanitize_title($this->rewriteSlugSingular);
     $this->postVenueTypeArgs['rewrite']['slug'] = sanitize_title($this->singular_venue_label);
     $this->postVenueTypeArgs['show_in_nav_menus'] = class_exists('TribeEventsPro') ? true : false;
     $this->postOrganizerTypeArgs['rewrite']['slug'] = sanitize_title($this->singular_organizer_label);
     $this->postOrganizerTypeArgs['show_in_nav_menus'] = class_exists('TribeEventsPro') ? true : false;
     $this->postVenueTypeArgs['public'] = class_exists('TribeEventsPro') ? true : false;
     $this->postOrganizerTypeArgs['public'] = class_exists('TribeEventsPro') ? true : false;
     $this->currentDay = '';
     $this->errors = '';
     TribeEventsQuery::init();
     Tribe__Events__Backcompat::init();
     Tribe__Events__Credits::init();
     $this->registerPostType();
     self::debug(sprintf(__('Initializing Tribe Events on %s', 'tribe-events-calendar'), date('M, jS \\a\\t h:m:s a')));
     $this->maybeMigrateDatabase();
     $this->maybeSetTECVersion();
 }
Пример #12
0
 /**
  * Accepts an array of query arguments, retrieves them, and returns the html for those events in list view
  *
  * Optional inline example:
  * < code >
  * <?php
  * echo myfunction();
  * ?>
  * </ code >
  *
  * @param array $args       Args to be passed to TribeEventsQuery::getEvents()
  * @param bool  $initialize Whether the list view template class needs to be included and initialized
  *
  * @return string
  **/
 function tribe_include_view_list($args = null, $initialize = true)
 {
     global $wp_query;
     // hijack the main query to load the events via provided $args
     if (!is_null($args) || !($wp_query->tribe_is_event || $wp_query->tribe_is_event_category)) {
         $reset_q = $wp_query;
         $wp_query = TribeEventsQuery::getEvents($args, true);
     }
     // single-event notices are jumping in on this init when loading as a module
     TribeEvents::removeNotice('event-past');
     // get the list view template
     ob_start();
     if ($initialize) {
         tribe_initialize_view('Tribe_Events_List_Template');
     }
     tribe_get_view('list/content');
     $list_view_html = ob_get_clean();
     // fix the error of our ways
     if (!empty($reset_q)) {
         $wp_query = $reset_q;
     }
     // return the parsed template
     return $list_view_html;
 }
Пример #13
0
 /**
  * Sets up an array of $days based on the current query, that can be used in the calendar loop
  *
  * @return void
  **/
 public function setup_view()
 {
     do_action('log', 'setup view month view args', 'tribe-month', self::$args);
     $requested_date = isset(self::$args['eventDate']) ? self::$args['eventDate'] : tribe_get_month_view_date();
     $first_day_of_month = date('Y-m-01', strtotime($requested_date));
     do_action('log', 'eventDate', 'tribe-events-query', $first_day_of_month);
     // get all upcoming ids to hide so we're not querying 31 times
     self::$hide_upcoming_ids = TribeEventsQuery::getHideFromUpcomingEvents();
     $year = date('Y', strtotime($first_day_of_month));
     $month = date('m', strtotime($first_day_of_month));
     $startOfWeek = get_option('start_of_week', 0);
     self::get_daily_counts($first_day_of_month);
     if (empty(self::$tribe_bar_args)) {
         foreach ($_REQUEST as $key => $value) {
             if ($value && strpos($key, 'tribe') === 0 && $key != 'tribe-bar-date') {
                 self::$tribe_bar_args[$key] = $value;
             }
         }
     }
     // Var'ng up days, months and years
     self::$today = date_i18n('d');
     self::$current_month = date_i18n('m');
     self::$current_year = date_i18n('Y');
     // single dimensional array of days for the month
     $days = array();
     // setup counters
     $rawOffset = date('w', strtotime($first_day_of_month)) - $startOfWeek;
     $prev_month_offset = (int) ($rawOffset < 0 ? $rawOffset + 7 : $rawOffset);
     // month begins on day x
     $days_in_month = (int) date('t', strtotime($first_day_of_month));
     $days_in_calendar = $days_in_month + $prev_month_offset;
     while ($days_in_calendar % 7 > 0) {
         $days_in_calendar++;
     }
     $cur_calendar_day = 0;
     // fill month with required days for previous month
     if ($prev_month_offset > 0) {
         $days = array_fill(0, $prev_month_offset, array('date' => 'previous'));
     }
     // get $cur_calendar_day up to speed
     $cur_calendar_day += $prev_month_offset;
     $empty_query = new WP_Query();
     // add days for this month
     for ($i = 0; $i < $days_in_month; $i++) {
         $day = $i + 1;
         $date = date('Y-m-d', strtotime("{$year}-{$month}-{$day}"));
         $total_events = !empty(self::$event_daily_counts[$date]) ? self::$event_daily_counts[$date] : 0;
         $days[] = array('daynum' => $day, 'date' => $date, 'events' => $total_events ? self::get_daily_events($date) : $empty_query, 'total_events' => $total_events, 'view_more' => self::view_more_link($date, self::$tribe_bar_args));
     }
     // get $cur_calendar_day up to speed
     $cur_calendar_day += $days_in_month;
     // check if $cur_calendar_day is less than $days_in_calendar, if so, add days for next month
     if ($cur_calendar_day < $days_in_calendar) {
         $days = array_merge($days, array_fill($cur_calendar_day, $days_in_calendar - $cur_calendar_day, array('date' => 'next')));
     }
     // store set of found days for use in calendar loop functions
     self::$calendar_days = $days;
 }
 /**
  * Generates the iCal file
  *
  * @static
  *
  * @param int|null $post If you want the ical file for a single event
  */
 public static function generate_ical_feed($post = null)
 {
     $tec = TribeEvents::instance();
     $wp_timezone = get_option('timezone_string');
     $events = '';
     $blogHome = get_bloginfo('url');
     $blogName = get_bloginfo('name');
     $event_display = !empty($_REQUEST['tribe_display']) ? $_REQUEST['tribe_display'] : 'upcoming';
     if ($event_display == 'list') {
         $event_display = 'upcoming';
     }
     if ($post) {
         $events_posts = array();
         $events_posts[] = $post;
     } else {
         TribeEventsQuery::init();
         $events_query = TribeEventsQuery::getEvents(array('posts_per_page' => -1, 'eventDisplay' => $event_display), true);
         $events_posts = $events_query->posts;
     }
     foreach ($events_posts as $event_post) {
         $startDate = $event_post->EventStartDate;
         $endDate = $event_post->EventEndDate;
         // convert 2010-04-08 00:00:00 to 20100408T000000 or YYYYMMDDTHHMMSS
         $startDate = str_replace(array('-', ' ', ':'), array('', 'T', ''), $startDate);
         $endDate = str_replace(array('-', ' ', ':'), array('', 'T', ''), $endDate);
         if (get_post_meta($event_post->ID, '_EventAllDay', true) == 'yes') {
             $startDate = substr($startDate, 0, 8);
             $endDate = substr($endDate, 0, 8);
             // endDate bumped ahead one day to counter iCal's off-by-one error
             $endDateStamp = strtotime($endDate);
             $endDate = date('Ymd', $endDateStamp + 86400);
             $type = 'DATE';
         } else {
             $type = 'DATE-TIME';
         }
         $description = preg_replace("/[\n\t\r]/", ' ', strip_tags($event_post->post_content));
         // add fields to iCal output
         $item = array();
         $item[] = "DTSTART;VALUE={$type}:" . $startDate;
         $item[] = "DTEND;VALUE={$type}:" . $endDate;
         $item[] = 'DTSTAMP:' . date('Ymd\\THis', time());
         $item[] = 'CREATED:' . str_replace(array('-', ' ', ':'), array('', 'T', ''), $event_post->post_date);
         $item[] = 'LAST-MODIFIED:' . str_replace(array('-', ' ', ':'), array('', 'T', ''), $event_post->post_modified);
         $item[] = 'UID:' . $event_post->ID . '-' . strtotime($startDate) . '-' . strtotime($endDate) . '@' . $blogHome;
         $item[] = 'SUMMARY:' . $event_post->post_title;
         $item[] = 'DESCRIPTION:' . str_replace(',', '\\,', $description);
         $item[] = 'URL:' . get_permalink($event_post->ID);
         // add location if available
         $location = $tec->fullAddressString($event_post->ID);
         if (!empty($location)) {
             $item[] = 'LOCATION:' . html_entity_decode($location, ENT_QUOTES);
         }
         // add geo coordinates if available
         if (class_exists('TribeEventsGeoLoc')) {
             $long = TribeEventsGeoLoc::instance()->get_lng_for_event($event_post->ID);
             $lat = TribeEventsGeoLoc::instance()->get_lat_for_event($event_post->ID);
             if (!empty($long) && !empty($lat)) {
                 $item[] = sprintf('GEO:%s;%s', $long, $lat);
             }
         }
         // add categories if available
         $event_cats = (array) wp_get_object_terms($event_post->ID, TribeEvents::TAXONOMY, array('fields' => 'names'));
         if (!empty($event_cats)) {
             $item[] = 'CATEGORIES:' . html_entity_decode(join(',', $event_cats), ENT_QUOTES);
         }
         // add featured image if available
         if (has_post_thumbnail($event_post->ID)) {
             $thumbnail_id = get_post_thumbnail_id($event_post->ID);
             $thumbnail_url = wp_get_attachment_url($thumbnail_id);
             $thumbnail_mime_type = get_post_mime_type($thumbnail_id);
             $item[] = apply_filters('tribe_ical_feed_item_thumbnail', sprintf('ATTACH;FMTTYPE=%s:%s', $thumbnail_mime_type, $thumbnail_url), $event_post->ID);
         }
         // add organizer if available
         $organizer_email = tribe_get_organizer_email($event_post->ID);
         if ($organizer_email) {
             $organizer_name = tribe_get_organizer($event_post->ID);
             if ($organizer_name) {
                 $item[] = sprintf('ORGANIZER;CN=%s:MAILTO:%s', $organizer_name, $organizer_email);
             } else {
                 $item[] = sprintf('ORGANIZER:MAILTO:%s', $organizer_email);
             }
         }
         $item = apply_filters('tribe_ical_feed_item', $item, $event_post);
         $events .= "BEGIN:VEVENT\r\n" . implode("\r\n", $item) . "\r\nEND:VEVENT\r\n";
     }
     header('Content-type: text/calendar; charset=UTF-8');
     header('Content-Disposition: attachment; filename="iCal-TribeEvents.ics"');
     $content = "BEGIN:VCALENDAR\r\n";
     $content .= "VERSION:2.0\r\n";
     $content .= 'PRODID:-//' . $blogName . ' - ECPv' . TribeEvents::VERSION . "//NONSGML v1.0//EN\r\n";
     $content .= "CALSCALE:GREGORIAN\r\n";
     $content .= "METHOD:PUBLISH\r\n";
     $content .= 'X-WR-CALNAME:' . apply_filters('tribe_ical_feed_calname', $blogName) . "\r\n";
     $content .= 'X-ORIGINAL-URL:' . $blogHome . "\r\n";
     $content .= 'X-WR-CALDESC:Events for ' . $blogName . "\r\n";
     if ($wp_timezone) {
         $content .= 'X-WR-TIMEZONE:' . $wp_timezone . "\r\n";
     }
     $content = apply_filters('tribe_ical_properties', $content);
     $content .= $events;
     $content .= 'END:VCALENDAR';
     echo $content;
     exit;
 }
Пример #15
0
 /**
  * The Calendar View AJAX Handler.
  *
  * @return void
  * @since 3.0
  */
 function calendar_ajax_call()
 {
     if (isset($_POST["eventDate"]) && $_POST["eventDate"]) {
         TribeEventsQuery::init();
         global $wp_query;
         // set the global query var for eventDisplay
         $wp_query->set('eventDisplay', 'month');
         if (!empty($_REQUEST['eventDate'])) {
             $wp_query->set('eventDate', $_REQUEST['eventDate']);
         }
         if (isset($_POST['tribe_event_category'])) {
             $wp_query->set(TribeEvents::TAXONOMY, $_POST['tribe_event_category']);
         }
         if (class_exists('TribeEventsFilterView')) {
             TribeEventsFilterView::instance()->createFilters(null, true);
         }
         $wp_query->tribe_is_event_query = true;
         $this->setDisplay();
         ob_start();
         tribe_get_view('month/content');
         $response = array('html' => ob_get_clean(), 'success' => true, 'view' => 'month');
         apply_filters('tribe_events_ajax_response', $response);
         header('Content-type: application/json');
         echo json_encode($response);
         die;
     }
 }
 function fetch_upcoming()
 {
     $query = array('paged' => false, 'posts_per_page' => 1, 'eventDisplay' => 'list');
     $upcoming = TribeEventsQuery::getEvents($query, true);
     return $upcoming;
 }
 /**
  * AJAX handler for the Map view
  */
 function ajax_tribe_geosearch()
 {
     if (class_exists('TribeEventsFilterView')) {
         TribeEventsFilterView::instance()->createFilters(null, true);
         $this->setup_geoloc_filter_in_filters();
     }
     $tribe_paged = !empty($_POST["tribe_paged"]) ? $_POST["tribe_paged"] : 1;
     TribeEventsQuery::init();
     $defaults = array('post_type' => TribeEvents::POSTTYPE, 'orderby' => 'event_date', 'order' => 'ASC', 'posts_per_page' => tribe_get_option('postsPerPage', 10), 'paged' => $tribe_paged, 'post_status' => array('publish'), 'eventDisplay' => 'map');
     $view_state = 'map';
     /* if past view */
     if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') {
         $view_state = 'past';
         add_filter('tribe_events_pre_get_posts', array($this, 'set_past_events_query'));
     }
     $query = TribeEventsQuery::getEvents($defaults, true);
     if ($this->is_geoloc_query() && $query->found_posts > 0) {
         $lat = isset($_POST['tribe-bar-geoloc-lat']) ? $_POST['tribe-bar-geoloc-lat'] : 0;
         $lng = isset($_POST['tribe-bar-geoloc-lng']) ? $_POST['tribe-bar-geoloc-lng'] : 0;
         $this->order_posts_by_distance($query->posts, $lat, $lng);
     }
     $response = array('html' => '', 'markers' => array(), 'success' => true, 'tribe_paged' => $tribe_paged, 'max_pages' => $query->max_num_pages, 'total_count' => $query->found_posts, 'view' => $view_state);
     if ($query->found_posts > 0) {
         global $wp_query, $post;
         $data = $query->posts;
         $post = $query->posts[0];
         $wp_query = $query;
         TribeEvents::instance()->setDisplay();
         ob_start();
         tribe_get_view('map/content');
         $response['html'] .= ob_get_clean();
         $response['markers'] = $this->generate_markers($data);
     } else {
         global $wp_query;
         $wp_query = $query;
         TribeEvents::instance()->setDisplay();
         ob_start();
         tribe_get_view('map/content');
         $response['html'] .= ob_get_clean();
     }
     apply_filters('tribe_events_ajax_response', $response);
     header('Content-type: application/json');
     echo json_encode($response);
     exit;
 }
Пример #18
0
 /**
  * Template tag to get related posts for the current post.
  *
  * @since 1.1
  * @author Paul Hughes
  * @param int $count number of related posts to return.
  * @param int|obj $post the post to get related posts to, defaults to current global $post
  * @return array the related posts.
  */
 function tribe_get_related_posts($count = 3, $post = false)
 {
     $post_id = TribeEvents::postIdHelper($post);
     $tags = wp_get_post_tags($post_id, array('fields' => 'ids'));
     $categories = wp_get_object_terms($post_id, TribeEvents::TAXONOMY, array('fields' => 'ids'));
     if (!$tags && !$categories) {
         return;
     }
     $args = array('posts_per_page' => $count, 'post__not_in' => array($post_id), 'eventDisplay' => 'upcoming', 'tax_query' => array('relation' => 'OR'), 'orderby' => 'rand');
     if ($tags) {
         $args['tax_query'][] = array('taxonomy' => 'post_tag', 'field' => 'id', 'terms' => $tags);
     }
     if ($categories) {
         $args['tax_query'][] = array('taxonomy' => TribeEvents::TAXONOMY, 'field' => 'id', 'terms' => $categories);
     }
     $args = apply_filters('tribe_related_posts_args', $args);
     if ($args) {
         $posts = TribeEventsQuery::getEvents($args);
     } else {
         $posts = array();
     }
     return apply_filters('tribe_get_related_posts', $posts);
 }
 /**
  * Is hooked by init() filter to parse the WP_Query arguments for main and alt queries.
  *
  * @param object  $query WP_Query object args supplied or default
  * @return object $query (modified)
  */
 public static function pre_get_posts($query)
 {
     // setup static const to preserve query type through hooks
     self::$is_event = $query->tribe_is_event;
     self::$is_event_category = $query->tribe_is_event_category;
     self::$is_event_venue = $query->tribe_is_event_venue;
     self::$is_event_organizer = $query->tribe_is_event_organizer;
     self::$is_event_query = $query->tribe_is_event_query;
     if ($query->is_main_query() && is_home()) {
         // check option for including events in the main wordpress loop, if true, add events post type
         if (tribe_get_option('showEventsInMainLoop', false)) {
             $query->query_vars['post_type'] = isset($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array('post');
             $query->query_vars['post_type'][] = TribeEvents::POSTTYPE;
             $query->tribe_is_multi_posttype = true;
         }
     }
     if ($query->tribe_is_multi_posttype) {
         do_action('log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype);
         add_filter('posts_fields', array(__CLASS__, 'multi_type_posts_fields'), 10, 2);
         add_filter('posts_join', array(__CLASS__, 'posts_join'), 10, 2);
         add_filter('posts_join', array(__CLASS__, 'posts_join_orderby'), 10, 2);
         add_filter('posts_distinct', array(__CLASS__, 'posts_distinct'));
         add_filter('posts_groupby', array(__CLASS__, 'posts_groupby'), 10, 2);
         add_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2);
         do_action('tribe_events_pre_get_posts', $query);
         return;
     }
     if ($query->tribe_is_event || $query->tribe_is_event_category) {
         self::$start_date = null;
         self::$end_date = null;
         if (!($query->is_main_query() && $query->get('eventDisplay') == 'month')) {
             add_filter('posts_fields', array(__CLASS__, 'posts_fields'), 10, 2);
             add_filter('posts_join', array(__CLASS__, 'posts_join'), 10, 2);
             add_filter('posts_join', array(__CLASS__, 'posts_join_orderby'), 10, 2);
             add_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2);
             add_filter('posts_distinct', array(__CLASS__, 'posts_distinct'));
             add_filter('posts_groupby', array(__CLASS__, 'posts_groupby'), 10, 2);
         } else {
             // reduce number of queries triggered by main WP_Query on month view
             $query->set('posts_per_page', 1);
             $query->set('no_found_rows', true);
             $query->set('cache_results', false);
             $query->set('update_post_meta_cache', false);
             $query->set('update_post_term_cache', false);
             $query->set('meta_query', array(array('key' => '_EventStartDate', 'type' => 'DATETIME')));
             do_action('tribe_events_pre_get_posts', $query);
             return $query;
         }
         // if a user selects a date in the event bar we want it to persist as long as possible
         if (!empty($_REQUEST['tribe-bar-date'])) {
             $query->set('eventDate', $_REQUEST['tribe-bar-date']);
         }
         // if a user provides a search term we want to use that in the search params
         if (!empty($_REQUEST['tribe-bar-search'])) {
             $query->query_vars['s'] = $_REQUEST['tribe-bar-search'];
         }
         $query->query_vars['eventDisplay'] = !empty($query->query_vars['eventDisplay']) ? $query->query_vars['eventDisplay'] : TribeEvents::instance()->displaying;
         if (!empty($query->query_vars['eventDisplay'])) {
             switch ($query->query_vars['eventDisplay']) {
                 case 'custom':
                     // if set this allows for a custom query to not be burdened with these settings
                     break;
                 case 'all':
                     $query->set('orderby', self::set_orderby());
                     $query->set('order', self::set_order());
                     break;
                 case 'single-event':
                     if ($query->get('eventDate') != '') {
                         $query->set('start_date', $query->get('eventDate'));
                         $query->set('eventDate', $query->get('eventDate'));
                         self::$start_date = $query->get('start_date');
                     }
                     break;
                 case 'upcoming':
                 case 'past':
                 default:
                     // default display query
                     $tribe_paged = !empty($_REQUEST['tribe_paged']) ? $_REQUEST['tribe_paged'] : $query->get('paged');
                     $query->set('paged', $tribe_paged);
                     $event_date = $query->get('eventDate') != '' ? $query->get('eventDate') : date_i18n(TribeDateUtils::DBDATETIMEFORMAT);
                     if (!$query->tribe_is_past) {
                         $query->set('start_date', $event_date);
                         $query->set('end_date', '');
                         $query->set('order', self::set_order());
                     } else {
                         $query->set('start_date', '');
                         $query->set('end_date', $event_date);
                         $query->set('order', self::set_order('DESC'));
                     }
                     $query->set('orderby', self::set_orderby());
                     $query->set('hide_upcoming', true);
                     self::$start_date = $query->get('start_date');
                     self::$end_date = $query->get('end_date');
                     break;
                     $query->set('eventDate', '');
             }
         } else {
             $query->set('hide_upcoming', true);
             $query->set('start_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT));
             $query->set('orderby', self::set_orderby());
             $query->set('order', self::set_order());
             self::$start_date = $query->get('start_date');
         }
         // eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually
         if (!in_array($query->get(TribeEvents::TAXONOMY), array('', '-1'))) {
             $tax_query[] = array('taxonomy' => TribeEvents::TAXONOMY, 'field' => is_numeric($query->get(TribeEvents::TAXONOMY)) ? 'id' : 'slug', 'terms' => $query->get(TribeEvents::TAXONOMY), 'include_children' => false);
         }
         // Only add the postmeta hack if it's not the main admin events list
         // Because this method filters out drafts without EventStartDate.
         // For this screen we're doing the JOIN manually in TribeEventsAdminList
         $screen = !is_admin() || defined('DOING_AJAX') && DOING_AJAX ? null : get_current_screen();
         if (empty($screen) || $screen->id != 'edit-tribe_events') {
             $meta_query[] = array('key' => '_EventStartDate', 'type' => 'DATETIME');
         }
     }
     // filter by Venue ID
     if ($query->tribe_is_event_query && $query->get('venue') != '') {
         $meta_query[] = array('key' => '_EventVenueID', 'value' => $query->get('venue'));
     }
     // filter by Organizer ID
     if ($query->tribe_is_event_query && $query->get('organizer') != '') {
         $meta_query[] = array('key' => '_EventOrganizerID', 'value' => $query->get('organizer'));
     }
     // proprietary metaKeys go to standard meta
     if ($query->tribe_is_event_query && $query->get('metaKey') != '') {
         $meta_query[] = array('key' => $query->get('metaKey'), 'value' => $query->get('metaValue'));
     }
     // enable pagination setup
     if ($query->tribe_is_event_query && $query->get('numResults') != '') {
         $query->set('posts_per_page', $query->get('numResults'));
     } elseif ($query->tribe_is_event_query && $query->get('posts_per_page') == '') {
         $query->set('posts_per_page', (int) tribe_get_option('postsPerPage', 10));
     }
     // hide upcoming events from query (only not in admin)
     if ($query->tribe_is_event_query && $query->get('hide_upcoming')) {
         $hide_upcoming_ids = self::getHideFromUpcomingEvents();
         if (!empty($hide_upcoming_ids)) {
             $query->set('post__not_in', $hide_upcoming_ids);
         }
     }
     if ($query->tribe_is_event_query && !empty($meta_query)) {
         // setup default relation for meta queries
         $meta_query['relation'] = 'AND';
         $meta_query_combined = array_merge((array) $meta_query, (array) $query->get('meta_query'));
         $query->set('meta_query', $meta_query_combined);
     }
     if ($query->tribe_is_event_query && !empty($tax_query)) {
         // setup default relation for tax queries
         $tax_query_combined = array_merge((array) $tax_query, (array) $query->get('tax_query'));
         $query->set('tax_query', $tax_query_combined);
     }
     if ($query->tribe_is_event_query) {
         add_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2);
     }
     // if is in the admin remove the event date & upcoming filters, unless is an ajax call
     global $current_screen;
     if (is_admin() && $query->tribe_is_event_query && !empty($current_screen->id) && $current_screen->id == 'edit-' . TribeEvents::POSTTYPE) {
         if (!defined('DOING_AJAX') || defined('DOING_AJAX') && !DOING_AJAX) {
             // remove_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
             remove_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2);
             remove_filter('posts_fields', array(__CLASS__, 'posts_fields'));
             remove_filter('posts_distinct', array(__CLASS__, 'posts_distinct'));
             remove_filter('posts_groupby', array(__CLASS__, 'posts_groupby'));
             $query->set('post__not_in', '');
             // set the default order for posts within admin lists
             if (!isset($query->query['order'])) {
                 $query->set('order', 'DESC');
             } else {
                 // making sure we preserve the order supplied by the query string even if it is overwritten above
                 $query->set('order', $query->query['order']);
             }
         }
     }
     if ($query->tribe_is_event_query) {
         do_action('tribe_events_pre_get_posts', $query);
     }
     return $query;
 }
Пример #20
0
 * @version    $Id$
 * @package    wpbase
 * @author     WPOpal  Team <wpopal@gmail.com, support@wpopal.com>
 * @copyright  Copyright (C) 2015 wpopal.com. All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * @website  http://www.wpopal.com
 * @support  http://www.wpopal.com/support/forum.html
 */
$atts = vc_map_get_attributes($this->getShortcode(), $atts);
extract($atts);
TribeEventsQuery::init();
$states[] = 'publish';
$args = array('post_status' => $states, 'eventDate' => $event_date, 'eventDisplay' => 'day', 'orderby' => 'date', 'order' => 'DESC', 'post_type' => 'tribe_events', 'post__in' => wp_parse_id_list($event_ids));
TribeEvents::instance()->displaying = 'day';
$query = TribeEventsQuery::getEvents($args, true);
$_id = training_wpo_makeid();
?>
<div class="widget wpo-event-of-date <?php 
echo esc_attr($el_class);
?>
">
   <?php 
if ($title) {
    ?>
      <h3 class="widget-title visual-title <?php 
    echo esc_attr($size) . ' ' . $alignment;
    ?>
">
      </h3>
   <?php 
Пример #21
0
 /**
  * Is hooked by init() filter to parse the WP_Query arguments for main and alt queries.
  *
  * @param object  $query WP_Query object args supplied or default
  * @return object $query (modified)
  */
 public function pre_get_posts($query)
 {
     global $wp_the_query;
     $types = !empty($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array();
     // is the query pulling posts from the past
     $query->tribe_is_past = !empty($query->query_vars['tribe_is_past']) ? $query->query_vars['tribe_is_past'] : false;
     // check if any possiblity of this being an event query
     $query->tribe_is_event = in_array(TribeEvents::POSTTYPE, $types) ? true : false;
     // check if any possiblity of this being an event category
     $query->tribe_is_event_category = isset($query->query_vars[TribeEvents::TAXONOMY]) && $query->query_vars[TribeEvents::TAXONOMY] != '' ? true : false;
     $query->tribe_is_event_venue = in_array(TribeEvents::VENUE_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_organizer = in_array(TribeEvents::ORGANIZER_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_query = $query->tribe_is_event || $query->tribe_is_event_category || $query->tribe_is_event_venue || $query->tribe_is_event_organizer ? true : false;
     // move along, this is not the query you are looking for
     // setup static const to preserve query type through hooks
     self::$is_event = $query->tribe_is_event;
     self::$is_event_category = $query->tribe_is_event_category;
     self::$is_event_venue = $query->tribe_is_event_venue;
     self::$is_event_organizer = $query->tribe_is_event_organizer;
     self::$is_event_query = $query->tribe_is_event_query;
     if ($query === $wp_the_query && $query->is_main_query() && tribe_get_option('showEventsInMainLoop', false) && !is_page() && !is_admin() && !is_single() && !is_singular() && (is_home() && !$query->tribe_is_event_query || is_archive() || is_category() || is_tax())) {
         $query->query_vars['post_type'] = isset($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array('post');
         $query->query_vars['post_type'][] = TribeEvents::POSTTYPE;
     }
     if ($query->tribe_is_event || $query->tribe_is_event_category) {
         self::$start_date = null;
         self::$end_date = null;
         add_filter('posts_join', array(__CLASS__, 'posts_join'), 10, 2);
         add_filter('posts_join', array(__CLASS__, 'posts_join_orderby'), 10, 2);
         add_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2);
         add_filter('posts_fields', array(__CLASS__, 'posts_fields'), 10, 2);
         add_filter('posts_distinct', array(__CLASS__, 'posts_distinct'));
         add_filter('posts_groupby', array(__CLASS__, 'posts_groupby'), 10, 2);
         // if a user selects a date in the event bar we want it to persist as long as possible
         if (!empty($_REQUEST['tribe-bar-date'])) {
             $query->set('eventDate', $_REQUEST['tribe-bar-date']);
         }
         // if a user provides a search term we want to use that in the search params
         if (!empty($_REQUEST['tribe-bar-search'])) {
             $query->query_vars['s'] = $_REQUEST['tribe-bar-search'];
         }
         $query->query_vars['eventDisplay'] = !empty($query->query_vars['eventDisplay']) ? $query->query_vars['eventDisplay'] : TribeEvents::instance()->displaying;
         if (!empty($query->query_vars['eventDisplay'])) {
             switch ($query->query_vars['eventDisplay']) {
                 case 'custom':
                     // if set this allows for a custom query to not be burdened with these settings
                     break;
                 case 'past':
                     // setup past event display query
                     $query->set('end_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT));
                     $query->set('orderby', self::set_orderby());
                     $query->set('order', self::set_order('DESC'));
                     self::$end_date = $query->get('end_date');
                     $query->tribe_is_past = true;
                     break;
                 case 'all':
                     $query->set('orderby', self::set_orderby());
                     $query->set('order', self::set_order());
                     break;
                 case 'month':
                     $start_date = substr_replace(date_i18n(TribeDateUtils::DBDATEFORMAT), '01', -2);
                     $passed_date = $query->get('eventDate') ? substr_replace(date_i18n(TribeDateUtils::DBDATEFORMAT, strtotime($query->get('eventDate'))), '01', -2) : false;
                     $start_date = $passed_date ? $passed_date : $start_date;
                     $query->set('start_date', $start_date);
                     $query->set('eventDate', $start_date);
                     $query->set('end_date', date('Y-m-d', strtotime(TribeEvents::instance()->nextMonth($start_date)) - 24 * 3600));
                     if ($query->is_main_query()) {
                         $query->set('posts_per_page', 1);
                         // we're going to do this day-by-day later, so limit or order necessary for this
                         $query->set('no_found_rows', TRUE);
                     } else {
                         $query->set('orderby', self::set_orderby());
                         $query->set('order', self::set_order());
                         $query->set('posts_per_page', -1);
                         // get all events for the month
                     }
                     self::$start_date = $query->get('start_date');
                     self::$end_date = $query->get('end_date');
                     break;
                 case 'single-event':
                     if ($query->get('eventDate') != '') {
                         $query->set('start_date', $query->get('eventDate'));
                         $query->set('eventDate', $query->get('eventDate'));
                         self::$start_date = $query->get('start_date');
                     }
                     break;
                 case 'upcoming':
                 default:
                     // default display query
                     $start_date = date_i18n(TribeDateUtils::DBDATETIMEFORMAT);
                     $start_date = $query->get('eventDate') != '' ? $query->get('eventDate') : $start_date;
                     $query->set('hide_upcoming', true);
                     $query->set('start_date', $start_date);
                     $query->set('orderby', self::set_orderby());
                     $query->set('order', self::set_order());
                     self::$start_date = $query->get('start_date');
                     break;
             }
         } else {
             $query->set('hide_upcoming', true);
             $query->set('start_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT));
             $query->set('orderby', self::set_orderby());
             $query->set('order', self::set_order());
             self::$start_date = $query->get('start_date');
         }
         // eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually
         if (!in_array($query->get(TribeEvents::TAXONOMY), array('', '-1'))) {
             $tax_query[] = array('taxonomy' => TribeEvents::TAXONOMY, 'field' => is_numeric($query->get(TribeEvents::TAXONOMY)) ? 'id' : 'slug', 'terms' => $query->get(TribeEvents::TAXONOMY), 'include_children' => false);
         }
         $meta_query[] = array('key' => '_EventStartDate', 'type' => 'DATETIME');
     }
     // filter by Venue ID
     if ($query->tribe_is_event_query && $query->get('venue') != '') {
         $meta_query[] = array('key' => '_EventVenueID', 'value' => $query->get('venue'));
     }
     // filter by Organizer ID
     if ($query->tribe_is_event_query && $query->get('organizer') != '') {
         $meta_query[] = array('key' => '_EventOrganizerID', 'value' => $query->get('organizer'));
     }
     // proprietary metaKeys go to standard meta
     if ($query->tribe_is_event_query && $query->get('metaKey') != '') {
         $meta_query[] = array('key' => $query->get('metaKey'), 'value' => $query->get('metaValue'));
     }
     // enable pagination setup
     if ($query->tribe_is_event_query && $query->get('numResults') != '') {
         $query->set('posts_per_page', $query->get('numResults'));
     } elseif ($query->tribe_is_event_query && $query->get('posts_per_page') == '') {
         $query->set('posts_per_page', (int) tribe_get_option('postsPerPage', 10));
     }
     // hide upcoming events from query (only not in admin)
     if ($query->tribe_is_event_query && $query->get('hide_upcoming')) {
         $hide_upcoming_ids = self::getHideFromUpcomingEvents();
         if (!empty($hide_upcoming_ids)) {
             $query->set('post__not_in', $hide_upcoming_ids);
         }
     }
     if ($query->tribe_is_event_query && !empty($meta_query)) {
         // setup default relation for meta queries
         $meta_query['relation'] = 'AND';
         $meta_query_combined = array_merge((array) $meta_query, (array) $query->get('meta_query'));
         $query->set('meta_query', $meta_query_combined);
     }
     if ($query->tribe_is_event_query && !empty($tax_query)) {
         // setup default relation for tax queries
         $tax_query_combined = array_merge((array) $tax_query, (array) $query->get('tax_query'));
         $query->set('tax_query', $tax_query_combined);
     }
     if ($query->tribe_is_event_query) {
         add_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2);
     }
     // if is in the admin remove the event date & upcoming filters, unless is an ajax call
     global $current_screen;
     if (is_admin() && $query->tribe_is_event_query && !empty($current_screen->id) && $current_screen->id == 'edit-' . TribeEvents::POSTTYPE) {
         if (!defined('DOING_AJAX') || defined('DOING_AJAX') && !DOING_AJAX) {
             // remove_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
             remove_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2);
             remove_filter('posts_fields', array(__CLASS__, 'posts_fields'));
             remove_filter('posts_distinct', array(__CLASS__, 'posts_distinct'));
             remove_filter('posts_groupby', array(__CLASS__, 'posts_groupby'));
             $query->set('post__not_in', '');
             // set the default order for posts within admin lists
             if (!isset($query->query['order'])) {
                 $query->set('order', 'DESC');
             } else {
                 // making sure we preserve the order supplied by the query string even if it is overwritten above
                 $query->set('order', $query->query['order']);
             }
         }
     }
     // check if is_event_query === true and hook filter
     if ($query->tribe_is_event_query) {
         // fixing is_home param
         $query->is_home = !empty($query->query_vars['is_home']) ? $query->query_vars['is_home'] : false;
         apply_filters('tribe_events_pre_get_posts', $query);
     }
     return $query;
 }