post_type == EM_POST_TYPE_EVENT ){ $template = locate_template(array('page.php','index.php'),false); } return $template; } function the_content( $content ){ global $post, $EM_Event; if( $post->post_type == EM_POST_TYPE_EVENT ){ if( is_archive() || is_search() ){ if(get_option('dbem_cp_events_archive_formats')){ $EM_Event = em_get_event($post); $content = $EM_Event->output(get_option('dbem_event_list_item_format')); } }else{ if( get_option('dbem_cp_events_formats') && !post_password_required() ){ $EM_Event = em_get_event($post); //general defaults $args = array( 'owner' => false, 'pagination' => 1 ); ob_start(); em_locate_template('templates/event-single.php',true, array('args'=>$args)); $content = ob_get_clean(); } } } return $content; } function the_date( $the_date, $d = '' ){ global $post; if( $post->post_type == EM_POST_TYPE_EVENT ){ $EM_Event = em_get_event($post); if ( '' == $d ){ $the_date = date(get_option('date_format'), $EM_Event->start); }else{ $the_date = date($d, $EM_Event->start); } } return $the_date; } function the_category( $thelist, $separator = '', $parents='' ){ global $post, $wp_rewrite; if( $post->post_type == EM_POST_TYPE_EVENT ){ $EM_Event = em_get_event($post); $categories = $EM_Event->get_categories(); if( empty($categories) ) return ''; /* Copied from get_the_category_list function, with a few minor edits to make urls work, and removing parent stuff (for now) */ $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'rel="category tag"' : 'rel="category"'; $thelist = ''; if ( '' == $separator ) { $thelist .= ''; } else { $i = 0; foreach ( $categories as $category ) { if ( 0 < $i ) $thelist .= $separator; switch ( strtolower( $parents ) ) { case 'multiple': $thelist .= 'name ) ) . '" ' . $rel . '>' . $category->name.''; break; case 'single': $thelist .= 'name ) ) . '" ' . $rel . '>'; $thelist .= "$category->name"; break; case '': default: $thelist .= 'name ) ) . '" ' . $rel . '>' . $category->name.''; } ++$i; } } /* End copying */ } return $thelist; } function parse_query( ){ global $wp_query; //Search Query Filtering if( !empty($wp_query->query_vars['s']) && !get_option('dbem_cp_events_search_results') ){ $wp_query->query_vars['post_type'] = array_diff( get_post_types(array('exclude_from_search' => false)), array(EM_POST_TYPE_EVENT)); } //Scoping if( !empty($wp_query->query_vars['post_type']) && ($wp_query->query_vars['post_type'] == EM_POST_TYPE_EVENT || $wp_query->query_vars['post_type'] == 'event-recurring') && (empty($wp_query->query_vars['post_status']) || !in_array($wp_query->query_vars['post_status'],array('trash','pending','draft'))) ) { //Let's deal with the scope - default is future if( is_admin() ){ $scope = $wp_query->query_vars['scope'] = (!empty($_REQUEST['scope'])) ? $_REQUEST['scope']:'future'; //TODO limit what a user can see admin side for events/locations/recurring events }else{ if( !empty($wp_query->query_vars['calendar_day']) ) $wp_query->query_vars['scope'] = $wp_query->query_vars['calendar_day']; if( empty($wp_query->query_vars['scope']) ){ if( is_archive() ){ $scope = $wp_query->query_vars['scope'] = get_option('dbem_events_page_scope'); }else{ $scope = $wp_query->query_vars['scope'] = 'all'; //otherwise we'll get 404s for past events } }else{ $scope = $wp_query->query_vars['scope']; } } $query = array(); $time = current_time('timestamp'); if ( preg_match ( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) { $today = strtotime($scope); $tomorrow = $today + 60*60*24-1; if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => array($today,$tomorrow), 'compare' => 'BETWEEN' ); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); } }elseif ($scope == "future"){ $today = strtotime(date('Y-m-d', $time)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '>=' ); }else{ $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); } }elseif ($scope == "past"){ $today = strtotime(date('Y-m-d', $time)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<' ); }else{ $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '<' ); } }elseif ($scope == "today"){ $today = strtotime(date('Y-m-d', $time)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ //date must be only today $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '='); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); } }elseif ($scope == "tomorrow"){ $tomorrow = strtotime(date('Y-m-d',$time+60*60*24)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ //date must be only tomorrow $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '='); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $tomorrow, 'compare' => '>=' ); } }elseif ($scope == "month"){ $start_month = strtotime(date('Y-m-d',$time)); $end_month = strtotime(date('Y-m-t',$time)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); } }elseif ($scope == "next-month"){ $start_month_timestamp = strtotime('+1 month', $time); //get the end of this month + 1 day $start_month = strtotime(date('Y-m-1',$start_month_timestamp)); $end_month = strtotime(date('Y-m-t',$start_month_timestamp)); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); } }elseif( preg_match('/(\d\d?)\-months/',$scope,$matches) ){ // next x months means this month (what's left of it), plus the following x months until the end of that month. $months_to_add = $matches[1]; $start_month = strtotime(date('Y-m-d',$time)); $end_month = strtotime(date('Y-m-t',strtotime("+$months_to_add month", $time))); if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); }else{ $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); } } if( !empty($query) && is_array($query) ){ $wp_query->query_vars['meta_query'] = $query; } if( is_admin() ){ //admin areas don't need special ordering, so make it simple $wp_query->query_vars['orderby'] = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby']:'meta_value_num'; $wp_query->query_vars['meta_key'] = '_start_ts'; $wp_query->query_vars['order'] = (!empty($_REQUEST['order'])) ? $_REQUEST['order']:'ASC'; }else{ if( get_option('dbem_events_default_archive_orderby') == 'title'){ $wp_query->query_vars['orderby'] = 'title'; $wp_query->query_vars['order'] = get_option('dbem_events_default_archive_orderby','ASC'); }else{ $wp_query->query_vars['orderby'] = 'meta_value_num'; $wp_query->query_vars['meta_key'] = '_start_ts'; } $wp_query->query_vars['order'] = get_option('dbem_events_default_archive_orderby','ASC'); } }elseif( !empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] == EM_POST_TYPE_EVENT ){ $wp_query->query_vars['scope'] = 'all'; if( $wp_query->query_vars['post_status'] == 'pending' ){ $wp_query->query_vars['orderby'] = 'meta_value_num'; $wp_query->query_vars['order'] = 'ASC'; $wp_query->query_vars['meta_key'] = '_start_ts'; } } } } EM_Event_Post::init();