PluginProbe
Themify Event Post / trunk
Themify Event Post vtrunk
1.3.7 trunk 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6
← All changes | includes/system.php +34 -39 1.3.2trunk View file →
@@ -42,8 +42,9 @@
42 42 include( $this->dir . 'includes/admin.php' );
43 43 new Themify_Event_Post_Admin();
44 44 } else {
45 45 add_action( 'pre_get_posts', [ $this, 'pre_get_posts' ] );
46 + add_filter( 'posts_clauses', 'themify_event_post_past_posts_clauses', 10, 2 );
46 47 }
47 48
48 49 add_action( 'after_setup_theme', array( $this, 'load_themify_library' ), 15 );
49 50 add_action( 'init', array( $this, 'i18n' ) );
@@ -50,8 +51,9 @@
50 51 add_shortcode( 'themify_event_post', array( $this, 'shortcode' ) );
51 52 add_filter( 'themify_metabox/fields/themify-meta-boxes', array( $this, 'themify_do_metaboxes' ), 10, 2 );
52 53 add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) );
53 54 add_filter( 'template_include', array( $this, 'template_include' ) );
55 + add_filter( 'post_class', array( $this, 'post_class' ) );
54 56
55 57 if ( current_user_can( 'publish_posts' ) && get_user_option( 'rich_editing' ) === 'true' ) {
56 58 include( $this->dir . 'includes/tinymce.php' );
57 59 new Themify_Events_Posts_TinyMCE();
@@ -265,9 +267,11 @@
265 267 return $html;
266 268 }
267 269
268 270 public function locate_template( $name ) {
269 - if( is_child_theme() && is_file( trailingslashit( get_stylesheet_directory() ) . trailingslashit( $this->pid ) . "{$name}.php" ) ) {
271 + if ( str_contains( $name, '../' ) ) {
272 + return false;
273 + } else if ( is_child_theme() && is_file( trailingslashit( get_stylesheet_directory() ) . trailingslashit( $this->pid ) . "{$name}.php" ) ) {
270 274 return trailingslashit( get_stylesheet_directory() ) . trailingslashit( $this->pid ) . "{$name}.php";
271 275 } else if( is_file( trailingslashit( get_template_directory() ) . trailingslashit( $this->pid ) . "{$name}.php" ) ) {
272 276 return trailingslashit( get_template_directory() ) . trailingslashit( $this->pid ) . "{$name}.php";
273 277 } else if( is_file( $this->get_template_dir() . "/{$name}.php" ) ) {
@@ -307,48 +311,39 @@
307 311 ) ) {
308 312 $order = $this->get_option( 'order', 'desc' );
309 313 $orderby = $this->get_option( 'orderby', 'date' );
310 314 $show = $this->get_option( 'show', 'all' );
315 + $now = current_time( 'Y-m-d H:i' );
316 + $event_meta = themify_event_post_build_event_meta_query( $show, $orderby, $now );
311 317
312 - $query->set( 'orderby', $orderby );
313 318 $query->set( 'order', $order );
314 - if ( $orderby === 'event_date' ) {
315 - $query->set( 'orderby', 'meta_value' );
316 - $query->set( 'meta_key', 'start_date' );
319 +
320 + if ( ! empty( $event_meta['past_filter'] ) ) {
321 + $query->set( 'tep_past_filter', true );
322 + if ( ! empty( $event_meta['event_date_order'] ) ) {
323 + $query->set( 'tep_event_date_order', true );
324 + $query->set( 'orderby', 'none' );
325 + }
326 + } else {
327 + if ( null !== $event_meta['meta_query'] ) {
328 + $query->set( 'meta_query', $event_meta['meta_query'] );
329 + }
330 + if ( null !== $event_meta['orderby'] ) {
331 + $query->set( 'orderby', $event_meta['orderby'] );
332 + } elseif ( $orderby !== 'event_date' ) {
333 + $query->set( 'orderby', $orderby );
334 + }
335 + if ( null !== $event_meta['meta_key'] ) {
336 + $query->set( 'meta_key', $event_meta['meta_key'] );
337 + }
317 338 }
318 - if ( $show === 'upcoming' ) {
319 - $query->set( 'meta_query', array(
320 - 'relation' => 'OR',
321 - array(
322 - 'key' => 'end_date',
323 - 'value' => date_i18n( 'Y-m-d H:i' ),
324 - 'compare' => '>='
325 - ),
326 - array(
327 - 'key' => 'start_date',
328 - 'value' => date_i18n( 'Y-m-d H:i' ),
329 - 'compare' => '>='
330 - ),
331 - array(
332 - 'key' => 'repeat',
333 - 'value' => 'none',
334 - 'compare' => '!='
335 - )
336 - ) );
337 - } elseif ( $show === 'past' ) {
338 - $query->set( 'meta_query', array(
339 - 'relation' => 'AND',
340 - array(
341 - 'key' => 'end_date',
342 - 'value' => date_i18n( 'Y-m-d H:i' ),
343 - 'compare' => '<'
344 - ),
345 - array(
346 - 'key' => 'end_date',
347 - 'value' => '',
348 - 'compare' => '!='
349 - ),
350 - ) );
351 - }
352 339 }
353 340 }
341 +
342 + function post_class( $classes ) {
343 + if ( get_post_type() === 'event' ) {
344 + $classes[] = themify_event_is_visible() ? 'tep_upcoming_event' : 'tep_past_event';
345 + }
346 +
347 + return $classes;
348 + }
354 349 }