Your IP : 216.73.216.95


Current Path : /var/www/html/anwc/wp-content/themes/khore/event-framework/helpers/cpt/
Upload File :
Current File : /var/www/html/anwc/wp-content/themes/khore/event-framework/helpers/cpt/sessions.php

<?php

class EF_Session_Helper {

    private static $field_types = array(
        'home'     => 'session_home',
        'date'     => 'session_date',
        'time'     => 'session_time',
        'end_time' => 'session_end_time',
        'speakers' => 'session_speakers_list',
        'code'     => 'session_registration_code',
        'text'     => 'session_registration_text',
    );

    public static function get_meta($id, $meta_key, $order = null) {
        echo self::print_meta($id, $meta_key, $order);
    }

    public static function print_meta($id, $meta_key) {
        $post_meta_key = $meta_key;

        if (isset(self::$field_types[$meta_key])) {
            $post_meta_key = self::$field_types[$meta_key];
        }

        if (!is_null($order)) {
            $post_meta_key .= $order;
        }

        return get_post_meta(get_the_ID(), $post_meta_key, true);
    }

    public static function get_sessions_loop() {
        $session_loop = new WP_Query(
                array(
            'post_type'  => 'session',
            'nopaging'   => true,
            'meta_query' => array(
                array(
                    'key'     => 'session_date',
                    'compare' => 'EXISTS',
                ),
                array(
                    'key'     => 'session_time',
                    'compare' => 'EXISTS',
                ),
            ),
            'meta_key'   => 'session_date',
            'orderby'    => 'meta_value',
            'order'      => 'DESC'
                )
        );

        return $session_loop;
    }

    public static function ef_sessions_posts_fields($sql) {
        global $wpdb;

        return $sql . ", $wpdb->postmeta.meta_value as time, mt1.meta_value as date";
    }

    public static function ef_sessions_posts_orderby($sql) {
        global $wpdb;

        return "mt1.meta_value ASC, $wpdb->postmeta.meta_value ASC";
    }

    public static function ef_get_session_dates() {
        global $wpdb;

        $metas = $wpdb->get_results(
                "SELECT DISTINCT meta_value
				FROM $wpdb->postmeta
				INNER JOIN $wpdb->posts ON $wpdb->postmeta.post_id = $wpdb->posts.ID
				WHERE
				$wpdb->posts.post_type = 'session' AND
				$wpdb->posts.post_status = 'publish' AND
				$wpdb->postmeta.meta_key = 'session_date' AND
				$wpdb->postmeta.meta_value != ''
				ORDER BY meta_value ASC");

        return $metas;
    }

    public static function ef_ajax_get_schedule() {
        $ret = array(
            'sessions' => array(),
            'strings'  => array(
                'more_info' => __('More info', 'dxef')
            )
        );

        $timestamp      = !empty($_POST['data-timestamp']) ? $_POST['data-timestamp'] : 0;
        $location       = !empty($_POST['data-location']) && ctype_digit($_POST['data-location']) ? intval($_POST['data-location']) : '0';
        $track          = !empty($_POST['data-track']) && ctype_digit($_POST['data-track']) ? intval($_POST['data-track']) : '0';
        $wp_time_format = get_option("time_format");

        add_filter('posts_fields', array('EF_Session_Helper', 'ef_sessions_posts_fields'));
        add_filter('posts_orderby', array('EF_Session_Helper', 'ef_sessions_posts_orderby'));

        $session_loop_args = array(
            'post_type'   => 'session',
            'post_status' => 'publish',
            'nopaging'    => true,
            'meta_query'  => array(
                array(
                    'key'     => 'session_time',
                    'compare' => 'EXISTS',
                ),
                array(
                    'key'     => 'session_date',
                    'compare' => 'EXISTS',
                )
            ),
            'tax_query'   => array(),
            //'meta_key' => 'session_date',
            'orderby'     => 'meta_value',
            'order'       => 'ASC'
        );

        if ($timestamp > 0)
            $session_loop_args['meta_query'][] = array(
                'key'   => 'session_date',
                'value' => $timestamp
            );
        if ($location > 0)
            $session_loop_args['tax_query'][]  = array(
                'taxonomy' => 'session-location',
                'field'    => 'id',
                'terms'    => $location
            );
        if ($track > 0)
            $session_loop_args['tax_query'][]  = array(
                'taxonomy' => 'session-track',
                'field'    => 'id',
                'terms'    => $track
            );
        $sessions_loop                     = new WP_Query($session_loop_args);

        remove_filter('posts_fields', array('EF_Session_Helper', 'ef_sessions_posts_fields'));
        remove_filter('posts_orderby', array('EF_Session_Helper', 'ef_sessions_posts_orderby'));

        while ($sessions_loop->have_posts()) {
            $sessions_loop->the_post();
            global $post;

            $time = $post->time;
            if (!empty($time)) {
                $time_parts = explode(':', $time);
                if (count($time_parts) == 2)
                    $time       = date($wp_time_format, mktime($time_parts[0], $time_parts[1], 0));
            }

            $end_time = $post->session_end_time;
            if (!empty($end_time)) {
                $time_parts = explode(':', $end_time);
                if (count($time_parts) == 2)
                    $end_time   = date($wp_time_format, mktime($time_parts[0], $time_parts[1], 0));
            }

            $locations = wp_get_post_terms(get_the_ID(), 'session-location');
            if ($locations && count($locations) > 0)
                $location  = $locations[0];
            $tracks    = wp_get_post_terms(get_the_ID(), 'session-track');
            if ($tracks && count($tracks) > 0) {
                foreach ($tracks as $track)
                    $track->color = EF_Taxonomy_Helper::ef_get_term_meta('session-track-metas', $track->term_id, 'session_track_color');
                $track        = $tracks[0]->term_id;
            }
            $speakers_list = get_post_meta(get_the_ID(), 'session_speakers_list', true);
            $speakers      = array();
            if ($speakers_list && count($speakers_list) > 0) {
                foreach ($speakers_list as $speaker_id)
                    $speakers[] = array(
                        'post_title' => get_the_title($speaker_id),
                        'featured'   => get_post_meta($speaker_id, 'speaker_keynote', true),
                        'url'        => get_permalink($speaker_id),
                        'post_image' => catch_that_image(get_the_post_thumbnail($speaker_id, apply_filters('ef_schedule_speakers_thumbnail_size', 'khore-speaker'), array('alt' => get_the_title($speaker_id), 'class' => apply_filters('ef_schedule_speakers_thumbnail_class', ''))))
                    );
            }

            $session_date = get_post_meta(get_the_ID(), 'session_date', true);

            if (empty($session_date)) {
                // If session date is empty, get the Post publish time
                $session_date = get_the_date(get_option(' date_format'), $post->ID);
            } else {
                // else get the session_date
                $session_date = date_i18n(get_option('date_format'), $session_date);
            }

            array_push($ret['sessions'], array(
                'post_title'   => get_the_title(),
                'post_excerpt' => get_the_excerpt(),
                'url'          => get_permalink(get_the_ID()),
                'time'         => $time,
                'id'           => get_the_ID(),
                'end_time'     => $end_time,
                'date'         => $session_date,
                'location'     => $location ? $location->name : '',
                'color'        => $track ? EF_Taxonomy_Helper::ef_get_term_meta('session-track-metas', $track, 'session_track_color') : '',
                'tracks'       => $tracks,
                'speakers'     => $speakers,
                'thumbnail'    => catch_that_image(get_the_post_thumbnail(get_the_ID(), apply_filters('ef_schedule_sessions_thumbnail_size', 'thumbnail')))
            ));
        }

        echo json_encode($ret);
        die;
    }

}