_is_event_page() ){
foreach( explode(' ', get_option('dbem_cp_events_body_class')) as $class ){
$classes[] = esc_attr($class);
}
}
return $classes;
}
/**
* Overrides the_excerpt if this is an event post type
*/
public static function get_the_excerpt($content){
global $post;
if( $post->post_type == EM_POST_TYPE_EVENT ){
$EM_Event = em_get_event($post);
$output = !empty($EM_Event->post_excerpt) ? get_option('dbem_event_excerpt_format'):get_option('dbem_event_excerpt_alt_format');
$content = $EM_Event->output($output);
}
return $content;
}
public static function the_excerpt($content){ return self::get_the_excerpt($content); }
public static function the_excerpt_rss( $content ){
global $post;
if( $post->post_type == EM_POST_TYPE_EVENT ){
if( get_option('dbem_cp_events_formats') ){
$EM_Event = em_get_event($post);
$content = $EM_Event->output( get_option ( 'dbem_rss_description_format' ), "rss");
$content = ent2ncr(convert_chars($content)); //Some RSS filtering
}
}
return $content;
}
public static function enable_the_content( $content ){
add_filter('the_content', array('EM_Event_Post','the_content'));
return $content;
}
public static function disable_the_content( $content ){
remove_filter('the_content', array('EM_Event_Post','the_content'));
return $content;
}
public static function the_content( $content ){
global $post, $EM_Event;
if( !empty($post) && $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);
//do a little check for preview mode and re-insert content from $post
if( !empty($_REQUEST['preview']) ){
//we don't do extra checks here because WP will have already done the work for us here...
$EM_Event->post_content = $post->post_content;
$EM_Event->post_content_filtered = $post->post_content_filtered;
}else{
$EM_Event->post_content = $content;
}
ob_start();
$args = array();
if( em_is_event_page() ){
$args['id'] = 6;
}
em_locate_template('templates/event-single.php',true, array('args' => $args));
$content = ob_get_clean();
}elseif( !post_password_required() ){
$EM_Event = em_get_event($post);
if( $EM_Event->event_rsvp && (!defined('EM_DISABLE_AUTO_BOOKINGSFORM') || !EM_DISABLE_AUTO_BOOKINGSFORM) ){
$content .= '
'.esc_html__('Bookings','events-manager').' ';
$content .= $EM_Event->output('#_BOOKINGFORM');
}
}
}
}
return $content;
}
public static function the_date( $the_date, $d = '', $post = null ){
$post = get_post( $post );
if( $post->post_type == EM_POST_TYPE_EVENT ){
$EM_Event = em_get_event($post);
if ( '' == $d ){
$the_date = $EM_Event->start()->i18n(get_option('date_format'));
}else{
$the_date = $EM_Event->start()->i18n($d);
}
}
return $the_date;
}
public static function the_time( $the_time, $f = '', $post = null ){
$post = get_post( $post );
if( $post->post_type == EM_POST_TYPE_EVENT ){
$EM_Event = em_get_event($post);
if ( '' == $f ){
$the_time = $EM_Event->start()->i18n(get_option('time_format'));
}else{
$the_time = $EM_Event->start()->i18n($f);
}
}
return $the_time;
}
public static 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 .= '';
foreach ( $categories as $category ) {
$thelist .= "\n\t";
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.' ';
}
}
$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;
}
public static function parse_query(){
global $wp_query;
//Search Query Filtering
if( is_admin() ){
if( !empty($wp_query->query_vars[EM_TAXONOMY_CATEGORY]) && is_numeric($wp_query->query_vars[EM_TAXONOMY_CATEGORY]) ){
//sorts out filtering admin-side as it searches by id
$term = get_term_by('id', $wp_query->query_vars[EM_TAXONOMY_CATEGORY], EM_TAXONOMY_CATEGORY);
$wp_query->query_vars[EM_TAXONOMY_CATEGORY] = ( $term !== false && !is_wp_error($term) )? $term->slug:0;
}
}
//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'))) ) {
$query = array();
//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
if( !empty($wp_query->query_vars['recurrence_id']) && is_numeric($wp_query->query_vars['recurrence_id']) ){
$query[] = array( 'key' => '_recurrence_id', 'value' => $wp_query->query_vars['recurrence_id'], 'compare' => '=' );
}
}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_archive_scope');
}else{
$scope = $wp_query->query_vars['scope'] = 'all'; //otherwise we'll get 404s for past events
}
}else{
$scope = $wp_query->query_vars['scope'];
}
}
if ( $scope == 'today' || $scope == 'tomorrow' || preg_match ( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) {
$EM_DateTime = new EM_DateTime($scope); //create default time in blog timezone
if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){
$query[] = array( 'key' => '_event_start_date', 'value' => $EM_DateTime->getDate() );
}else{
$query[] = array( 'key' => '_event_start_date', 'value' => $EM_DateTime->getDate(), 'compare' => '<=', 'type' => 'DATE' );
$query[] = array( 'key' => '_event_end_date', 'value' => $EM_DateTime->getDate(), 'compare' => '>=', 'type' => 'DATE' );
}
}elseif ($scope == "future" || $scope == 'past' ){
$EM_DateTime = new EM_DateTime(); //create default time in blog timezone
$EM_DateTime->setTimezone('UTC');
$compare = $scope == 'future' ? '>=' : '<';
if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){
$query[] = array( 'key' => '_event_start', 'value' => $EM_DateTime->getDateTime(), 'compare' => $compare, 'type' => 'DATETIME' );
}else{
$query[] = array( 'key' => '_event_end', 'value' => $EM_DateTime->getDateTime(), 'compare' => $compare, 'type' => 'DATETIME' );
}
}elseif ($scope == "month" || $scope == "next-month" || $scope == 'this-month'){
$EM_DateTime = new EM_DateTime(); //create default time in blog timezone
if( $scope == 'next-month' ) $EM_DateTime->add('P1M');
$start_month = $scope == 'this-month' ? $EM_DateTime->getDate() : $EM_DateTime->modify('first day of this month')->getDate();
$end_month = $EM_DateTime->modify('last day of this month')->getDate();
if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){
$query[] = array( 'key' => '_event_start_date', 'value' => array($start_month,$end_month), 'type' => 'DATE', 'compare' => 'BETWEEN');
}else{
$query[] = array( 'key' => '_event_start_date', 'value' => $end_month, 'compare' => '<=', 'type' => 'DATE' );
$query[] = array( 'key' => '_event_end_date', 'value' => $start_month, 'compare' => '>=', 'type' => 'DATE' );
}
}elseif ($scope == "week" || $scope == 'this-week'){
$EM_DateTime = new EM_DateTime(); //create default time in blog timezone
list($start_date, $end_date) = $EM_DateTime->get_week_dates( $scope );
if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){
$query[] = array( 'key' => '_event_start_date', 'value' => array($start_date,$end_date), 'type' => 'DATE', 'compare' => 'BETWEEN');
}else{
$query[] = array( 'key' => '_event_start_date', 'value' => $end_date, 'compare' => '<=', 'type' => 'DATE' );
$query[] = array( 'key' => '_event_end_date', 'value' => $start_date, 'compare' => '>=', 'type' => 'DATE' );
}
}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.
$EM_DateTime = new EM_DateTime(); //create default time in blog timezone
$months_to_add = $matches[1];
$start_month = $EM_DateTime->getDate();
$end_month = $EM_DateTime->add('P'.$months_to_add.'M')->format('Y-m-t');
if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){
$query[] = array( 'key' => '_event_start_date', 'value' => array($start_month,$end_month), 'type' => 'DATE', 'compare' => 'BETWEEN');
}else{
$query[] = array( 'key' => '_event_start_date', 'value' => $end_month, 'compare' => '<=', 'type' => 'DATE' );
$query[] = array( 'key' => '_event_end_date', 'value' => $start_month, 'compare' => '>=', 'type' => 'DATE' );
}
}elseif( !empty($scope) ){
$query = apply_filters('em_event_post_scope_meta_query', $query, $scope);
}
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
if( !empty($_REQUEST['orderby']) && $_REQUEST['orderby'] != 'date-time' ){
$wp_query->query_vars['orderby'] = sanitize_key($_REQUEST['orderby']);
}else{
$wp_query->query_vars['orderby'] = 'meta_value';
$wp_query->query_vars['meta_key'] = '_event_start_local';
$wp_query->query_vars['meta_type'] = 'DATETIME';
}
$wp_query->query_vars['order'] = (!empty($_REQUEST['order']) && preg_match('/^(ASC|DESC)$/i', $_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_order','ASC');
}else{
$wp_query->query_vars['orderby'] = 'meta_value';
$wp_query->query_vars['meta_key'] = '_event_start_local';
$wp_query->query_vars['meta_type'] = 'DATETIME';
}
$wp_query->query_vars['order'] = get_option('dbem_events_default_archive_order','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';
$wp_query->query_vars['order'] = 'ASC';
$wp_query->query_vars['meta_key'] = '_event_start_local';
$wp_query->query_vars['meta_type'] = 'DATETIME';
}
}
}
}
EM_Event_Post::init();
Activiteiten - Alles voor Elkaar