/** * Set any query flags * * @param WP_Query $query * * @return void **/ public static function parse_query($query) { // set paged if ($query->is_main_query() && isset($_GET['tribe_paged'])) { $query->set('paged', $_REQUEST['tribe_paged']); } // Add tribe events post type to tag queries if ($query->is_tag && (array) $query->get('post_type') != array(TribeEvents::POSTTYPE)) { $types = $query->get('post_type'); if (empty($types)) { $types = array('post'); } if (is_array($types)) { $types[] = TribeEvents::POSTTYPE; } else { if (is_string($types)) { $types = array($types, TribeEvents::POSTTYPE); } else { if ($types != 'any') { $types = array('post', TribeEvents::POSTTYPE); } } } $query->set('post_type', $types); } $types = !empty($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array(); // check if any possiblity of this being an event query $query->tribe_is_event = in_array(TribeEvents::POSTTYPE, $types) && count($types) < 2 ? true : false; $query->tribe_is_multi_posttype = in_array(TribeEvents::POSTTYPE, $types) && count($types) >= 2 || in_array('any', $types) ? true : false; if ('default' === $query->get('eventDisplay')) { $query->set('eventDisplay', TribeEvents::instance()->default_view()); } // check if any possiblity of this being an event category $query->tribe_is_event_category = !empty($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 // is the query pulling posts from the past if ($query->is_main_query() && !empty($_REQUEST['tribe_event_display']) && $_REQUEST['tribe_event_display'] == 'past') { $query->tribe_is_past = true; } elseif (tribe_is_ajax_view_request() && $query->get('eventDisplay') == 'past') { $query->tribe_is_past = true; } else { $query->tribe_is_past = isset($query->tribe_is_past) ? $query->tribe_is_past : false; } // never allow 404 on month view if ($query->is_main_query() && $query->get('eventDisplay') == 'month' && !$query->is_tax && !$query->tribe_is_event_category) { $query->is_post_type_archive = true; $query->queried_object = get_post_type_object(TribeEvents::POSTTYPE); $query->queried_object_id = 0; } // 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; do_action('tribe_events_parse_query', $query); } }
/** * Get the correct internal page template * * @return string Template class */ public static function get_current_template_class() { $class = ''; // list view if (tribe_is_list_view() || tribe_is_showing_all() || tribe_is_ajax_view_request('list')) { $class = 'Tribe__Events__Template__List'; } elseif (tribe_is_month() || tribe_is_ajax_view_request('month')) { $class = 'Tribe__Events__Template__Month'; } elseif (tribe_is_day() || tribe_is_ajax_view_request('day')) { $class = 'Tribe__Events__Template__Day'; } elseif (is_singular(Tribe__Events__Main::POSTTYPE)) { $class = 'Tribe__Events__Template__Single_Event'; } // apply filters // @todo remove deprecated filter in 3.4 return apply_filters('tribe_events_current_template_class', apply_filters('tribe_current_events_template_class', $class)); }
/** * Specify the PHP class for the current page template * * @param string $class The current class we are filtering. * * @return string The class. */ public function get_current_template_class($class) { // venue view if (is_singular(Tribe__Events__Main::VENUE_POST_TYPE)) { $class = 'Tribe__Events__Pro__Templates__Single_Venue'; } elseif (is_singular(Tribe__Events__Main::ORGANIZER_POST_TYPE)) { $class = 'Tribe__Events__Pro__Templates__Single_Organizer'; } elseif (tribe_is_week() || tribe_is_ajax_view_request('week')) { $class = 'Tribe__Events__Pro__Templates__Week'; } elseif (tribe_is_photo() || tribe_is_ajax_view_request('photo')) { $class = 'Tribe__Events__Pro__Templates__Photo'; } elseif (tribe_is_map() || tribe_is_ajax_view_request('map')) { $class = 'Tribe__Events__Pro__Templates__Map'; } return $class; }
/** * Get the first day of the week from a provided date * * @param null|mixed $date given date or week # (week # assumes current year) * * @return string * @todo move logic to Tribe__Events__Date_Utils */ function tribe_get_first_week_day($date = null) { global $wp_query; $offset = 7 - get_option('start_of_week', 0); if (tribe_is_ajax_view_request()) { $date = is_null($date) ? $_REQUEST['eventDate'] : $date; } else { $date = is_null($date) ? $wp_query->get('start_date') : $date; } try { $date = new DateTime($date); } catch (exception $e) { $date = new DateTime(); } // Clone to avoid altering the original date $r = clone $date; $r->modify(-(($date->format('w') + $offset) % 7) . 'days'); return apply_filters('tribe_get_first_week_day', $r->format('Y-m-d')); }