Example #1
0
function dpProEventCalendar_datediffInWeeks($date1, $date2)
{
    if ($date1 > $date2) {
        return dpProEventCalendar_datediffInWeeks($date2, $date1);
    }
    if (method_exists('DateTime', 'createFromFormat')) {
        $first = DateTime::createFromFormat('Y-m-d H:i:s', $date1);
        $second = DateTime::createFromFormat('Y-m-d H:i:s', $date2);
    } else {
        $first = dpProEventCalendar_create_from_format('Y-m-d H:i:s', $date1);
        $second = dpProEventCalendar_create_from_format('Y-m-d H:i:s', $date2);
    }
    //return floor($first->diff($second)->days/7);
    /*echo "First: ".floor($first->diff($second)->days/7)."<br>";
    	echo "Second: ".floor(round(($second->format('U') - $first->format('U')) / (60*60*24) / 7) )."<br>";
    	die();*/
    return floor(round(($second->format('U') - $first->format('U')) / (60 * 60 * 24) / 7));
}
Example #2
0
    function upcomingCalendarLayout($return_data = false, $limit = '', $limit_description = '', $events_month = null, $events_month_end = null, $show_end_date = true, $filter_author = false, $auto_limit = true, $filter_map = false, $past = false)
    {
        global $wpdb, $dpProEventCalendar;
        $html = "";
        $list_limit = $this->limit;
        if (is_numeric($limit)) {
            $list_limit = $limit;
        }
        if (is_numeric($limit_description)) {
            $this->trim_words = $limit_description;
        }
        $args = array('posts_per_page' => -1, 'post_type' => 'pec-events', 'meta_key' => 'pec_date', 'order' => 'ASC', 'orderby' => 'meta_value');
        if (!empty($this->category)) {
            $category_slug = get_term_by('term_id', (int) $this->category, 'pec_events_category');
            $args['pec_events_category'] = $category_slug->slug;
            /*$args['tax_query'] = array(
            			array(
            				'taxonomy' => 'pec_events_category',
            				'field' => 'term_id',
            				'term' => $this->category
            			)
            		);*/
        }
        if (!is_null($events_month)) {
            $args['meta_query'][] = array('relation' => 'OR', array('key' => 'pec_date', 'value' => array($events_month, $events_month_end), 'compare' => 'BETWEEN', 'type' => 'DATETIME'), array('key' => 'pec_recurring_frecuency', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC'));
            $args['meta_query'][] = array('relation' => 'OR', array('key' => 'pec_end_date', 'value' => substr($events_month, 0, 10), 'compare' => '>=', 'type' => 'DATE'), array('key' => 'pec_end_date', 'value' => '0000-00-00', 'compare' => '='), array('key' => 'pec_end_date', 'value' => '', 'compare' => '='));
        } elseif ($past) {
            $args['meta_query'][] = array('key' => 'pec_date', 'value' => current_time('mysql'), 'compare' => '<=', 'type' => 'DATETIME');
        } else {
            $args['meta_query'][] = array('relation' => 'OR', array('key' => 'pec_date', 'value' => current_time('mysql'), 'compare' => '>=', 'type' => 'DATE'), array('key' => 'pec_recurring_frecuency', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC'));
            $args['meta_query'][] = array('relation' => 'OR', array('key' => 'pec_end_date', 'value' => current_time('mysql'), 'compare' => '>=', 'type' => 'DATE'), array('key' => 'pec_end_date', 'value' => '0000-00-00', 'compare' => '='), array('key' => 'pec_end_date', 'value' => '', 'compare' => '='));
        }
        if (!empty($this->event_id)) {
            $args['p'] = $this->event_id;
        }
        if (!empty($this->author)) {
            $args['author'] = $this->author;
        }
        if ($filter_author) {
            if (is_author()) {
                global $author_name, $author;
                $curauth = isset($_GET['author_name']) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
            } else {
                $curauth = get_userdata(intval($author));
            }
            if (is_numeric($this->author) && $this->author > 0) {
                $args['author'] = $this->author;
            } else {
                $args['author'] = $curauth->ID;
            }
        }
        if ($filter_map) {
            $args['meta_query'][] = array('key' => 'pec_map', 'value' => '', 'compare' => '!=');
        }
        // Check Calendar ID
        // XXXXXXXXXX
        $args['meta_query'][] = array('relation' => 'OR', array('key' => 'pec_id_calendar', 'value' => $this->id_calendar, 'compare' => 'LIKE'));
        //$events_obj = $wpdb->get_results($querystr);
        $events_obj = get_posts($args);
        /*echo '<!--';
        		print_r($args);
        		print_r($events_obj);
        		echo $GLOBALS['wp_query']->request;
        		echo '-->';*/
        if (count($events_obj) == 0) {
            $html .= '
			<div class="dp_pec_date_event dp_pec_isotope">
				<p class="dp_pec_event_no_events">' . $this->translation['TXT_NO_EVENTS_FOUND'] . '</p>
			</div>';
        } else {
            $order_events = array();
            foreach ($events_obj as $event) {
                $event->id_calendar = get_post_meta($event->ID, 'pec_id_calendar', true);
                $event->date = get_post_meta($event->ID, 'pec_date', true);
                $event->all_day = get_post_meta($event->ID, 'pec_all_day', true);
                $event->pec_daily_working_days = get_post_meta($event->ID, 'pec_daily_working_days', true);
                $event->pec_daily_every = get_post_meta($event->ID, 'pec_daily_every', true);
                $event->pec_weekly_every = get_post_meta($event->ID, 'pec_weekly_every', true);
                $event->pec_weekly_day = get_post_meta($event->ID, 'pec_weekly_day', true);
                $event->pec_monthly_every = get_post_meta($event->ID, 'pec_monthly_every', true);
                $event->pec_monthly_position = get_post_meta($event->ID, 'pec_monthly_position', true);
                $event->pec_monthly_day = get_post_meta($event->ID, 'pec_monthly_day', true);
                $event->pec_exceptions = get_post_meta($event->ID, 'pec_exceptions', true);
                $event->end_date = get_post_meta($event->ID, 'pec_end_date', true);
                $event->link = get_post_meta($event->ID, 'pec_link', true);
                $event->share = get_post_meta($event->ID, 'pec_share', true);
                $event->map = get_post_meta($event->ID, 'pec_map', true);
                $event->end_time_hh = get_post_meta($event->ID, 'pec_end_time_hh', true);
                $event->end_time_mm = get_post_meta($event->ID, 'pec_end_time_mm', true);
                $event->hide_time = get_post_meta($event->ID, 'pec_hide_time', true);
                $event->location = get_post_meta($event->ID, 'pec_location', true);
                $event->phone = get_post_meta($event->ID, 'pec_phone', true);
                $event->recurring_frecuency = get_post_meta($event->ID, 'pec_recurring_frecuency', true);
                $event->title = $event->post_title;
                $event->description = $event->post_content;
                if ($event->recurring_frecuency > 0) {
                    $enddate_orig = $event->end_date . " 23:59:59";
                    if ($event->all_day) {
                        $startdate_orig = date('Y-m-d') . " 00:00:00";
                    } else {
                        $startdate_orig = current_time('mysql');
                    }
                    if (!is_null($events_month)) {
                        $startdate_orig = $events_month;
                        $enddate_orig = $events_month_end;
                    }
                    if ($past) {
                        //$startdate_orig = date('Y-m-d H:i:s', strtotime('-30 days'));
                        $enddate_orig = current_time('mysql');
                        $startdate_orig = $enddate_orig;
                    }
                    switch ($event->recurring_frecuency) {
                        case 1:
                            $k = 1;
                            $startdate = $event->date;
                            if (strtotime($startdate) < strtotime($startdate_orig)) {
                                $startdate = $startdate_orig;
                            }
                            for ($i = 1; $i <= $list_limit; $i++) {
                                $eventdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($startdate)), date("i", strtotime($startdate)), 0, date("m", strtotime($startdate)), date("d", strtotime($startdate)) - 1 + $k, date("y", strtotime($startdate))));
                                //echo "DONE DAILY";
                                if ($eventdate != "" && $event->pec_exceptions != "") {
                                    $exceptions = explode(',', $event->pec_exceptions);
                                    if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                        continue;
                                    }
                                }
                                if ((strtotime($eventdate) <= strtotime($enddate_orig) && strtotime($eventdate) <= strtotime($event->end_date . " 23:59:59") || $event->end_date == '0000-00-00') && (strtotime($eventdate) >= strtotime($startdate_orig) && strtotime($eventdate) <= strtotime($enddate_orig))) {
                                    $order_events[strtotime($eventdate) . $event->ID] = new stdClass();
                                    $order_events[strtotime($eventdate) . $event->ID]->id = $event->ID;
                                    $order_events[strtotime($eventdate) . $event->ID]->recurring_frecuency = $event->recurring_frecuency;
                                    $order_events[strtotime($eventdate) . $event->ID]->date = $eventdate;
                                    $order_events[strtotime($eventdate) . $event->ID]->orig_date = $event->date;
                                    $order_events[strtotime($eventdate) . $event->ID]->start_date = $event->date;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_date = $event->end_date;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_hh = $event->end_time_hh;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_mm = $event->end_time_mm;
                                    $order_events[strtotime($eventdate) . $event->ID]->title = $event->title;
                                    $order_events[strtotime($eventdate) . $event->ID]->description = $event->description;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->hide_time = $event->hide_time;
                                    $order_events[strtotime($eventdate) . $event->ID]->location = $event->location;
                                    $order_events[strtotime($eventdate) . $event->ID]->phone = $event->phone;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->map = $event->map;
                                    $order_events[strtotime($eventdate) . $event->ID]->share = $event->share;
                                    $order_events[strtotime($eventdate) . $event->ID]->all_day = $event->all_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_working_days = $event->pec_daily_working_days;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_every = $event->pec_daily_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_every = $event->pec_weekly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_day = $event->pec_weekly_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_exceptions = $event->pec_exceptions;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_every = $event->pec_monthly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_position = $event->pec_monthly_position;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_day = $event->pec_monthly_day;
                                } elseif (strtotime($eventdate) < strtotime($startdate_orig)) {
                                    $i--;
                                }
                                $k++;
                            }
                            break;
                        case 2:
                            $startdate = $event->date;
                            if (strtotime($startdate) < strtotime($startdate_orig)) {
                                $weeksdiff = dpProEventCalendar_datediffInWeeks($startdate, $startdate_orig);
                                //echo "weeksdiff : ".$weeksdiff;
                                $startdate = date("Y-m-d H:i:s", strtotime('+' . ($weeksdiff - 1) . ' weeks', strtotime($startdate)));
                            }
                            $pec_weekly_day = $event->pec_weekly_day;
                            if (is_array($pec_weekly_day)) {
                                $last_day = date("Y-m-d H:i:s", mktime(date("H", strtotime($event->date)), date("i", strtotime($event->date)), 0, date("m", strtotime($event->date)), date("d", strtotime($event->date)), date("y", strtotime($event->date))) - 86400);
                                $original_date = $event->date;
                                //echo "XXXX".$original_date.'<br>';
                                $original_date = date("Y-m-d H:i:s", strtotime("-1 day", strtotime($original_date)));
                                for ($i = 1; $i <= $list_limit; $i++) {
                                    //echo "DONE WEEKLY 1";
                                    foreach ($pec_weekly_day as $week_day) {
                                        $day = "";
                                        switch ($week_day) {
                                            case 1:
                                                $day = "Monday";
                                                break;
                                            case 2:
                                                $day = "Tuesday";
                                                break;
                                            case 3:
                                                $day = "Wednesday";
                                                break;
                                            case 4:
                                                $day = "Thursday";
                                                break;
                                            case 5:
                                                $day = "Friday";
                                                break;
                                            case 6:
                                                $day = "Saturday";
                                                break;
                                            case 7:
                                                $day = "Sunday";
                                                break;
                                        }
                                        $event->date = date("Y-m-d H:i:s", strtotime("next " . $day, strtotime($original_date)));
                                        $eventdate = date("Y-m-d", strtotime($last_day . ' next ' . date("l", strtotime($event->date))));
                                        $eventdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($last_day)), date("i", strtotime($last_day)), 0, date("m", strtotime($eventdate)), date("d", strtotime($eventdate)), date("y", strtotime($eventdate))));
                                        $last_day = $eventdate;
                                        //echo "Event Date " . $eventdate;
                                        //echo " Event Date Orig " . $startdate.'<br><br>';
                                        if ((!is_null($events_month) || $past) && strtotime($eventdate) > strtotime($enddate_orig)) {
                                            break;
                                        }
                                        if ($eventdate != "" && $event->pec_exceptions != "") {
                                            $exceptions = explode(',', $event->pec_exceptions);
                                            if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                                $i--;
                                                continue;
                                            }
                                        }
                                        if (strtotime($eventdate) < strtotime($startdate_orig)) {
                                            $i--;
                                            continue;
                                        }
                                        if ($event->pec_weekly_every > 1 && (strtotime(substr($eventdate, 0, 11)) - strtotime(substr($event->date, 0, 11))) / (60 * 60 * 24) % ($event->pec_weekly_every * 7) != 0) {
                                            continue;
                                        }
                                        if ((strtotime($eventdate) <= strtotime($enddate_orig) && strtotime($eventdate) <= strtotime($event->end_date . " 23:59:59") || $event->end_date == '0000-00-00' || $event->end_date == '') && strtotime($eventdate) >= strtotime($startdate_orig)) {
                                            $order_events[strtotime($eventdate) . $event->ID] = new stdClass();
                                            $order_events[strtotime($eventdate) . $event->ID]->id = $event->ID;
                                            $order_events[strtotime($eventdate) . $event->ID]->recurring_frecuency = $event->recurring_frecuency;
                                            $order_events[strtotime($eventdate) . $event->ID]->date = $eventdate;
                                            $order_events[strtotime($eventdate) . $event->ID]->end_date = $event->end_date;
                                            $order_events[strtotime($eventdate) . $event->ID]->end_time_hh = $event->end_time_hh;
                                            $order_events[strtotime($eventdate) . $event->ID]->end_time_mm = $event->end_time_mm;
                                            $order_events[strtotime($eventdate) . $event->ID]->title = $event->title;
                                            $order_events[strtotime($eventdate) . $event->ID]->description = $event->description;
                                            $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                            $order_events[strtotime($eventdate) . $event->ID]->hide_time = $event->hide_time;
                                            $order_events[strtotime($eventdate) . $event->ID]->location = $event->location;
                                            $order_events[strtotime($eventdate) . $event->ID]->phone = $event->phone;
                                            $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                            $order_events[strtotime($eventdate) . $event->ID]->map = $event->map;
                                            $order_events[strtotime($eventdate) . $event->ID]->share = $event->share;
                                            $order_events[strtotime($eventdate) . $event->ID]->all_day = $event->all_day;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_daily_working_days = $event->pec_daily_working_days;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_daily_every = $event->pec_daily_every;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_every = $event->pec_weekly_every;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_day = $event->pec_weekly_day;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_exceptions = $event->pec_exceptions;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_every = $event->pec_monthly_every;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_position = $event->pec_monthly_position;
                                            $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_day = $event->pec_monthly_day;
                                        }
                                    }
                                }
                            } else {
                                $last_day = date("Y-m-d H:i:s", mktime(date("H", strtotime($startdate)), date("i", strtotime($startdate)), 0, date("m", strtotime($startdate)), date("d", strtotime($startdate)), date("y", strtotime($startdate))) - 86400);
                                for ($i = 1; $i <= $list_limit; $i++) {
                                    //echo "DONE WEEKLY 2";
                                    $eventdate = date("Y-m-d", strtotime($last_day . ' next ' . date("l", strtotime($startdate))));
                                    $eventdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($last_day)), date("i", strtotime($last_day)), 0, date("m", strtotime($eventdate)), date("d", strtotime($eventdate)), date("y", strtotime($eventdate))));
                                    $last_day = $eventdate;
                                    if ((!is_null($events_month) || $past) && strtotime($eventdate) > strtotime($enddate_orig)) {
                                        break;
                                    }
                                    if ($eventdate != "" && $event->pec_exceptions != "") {
                                        $exceptions = explode(',', $event->pec_exceptions);
                                        if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                            $i--;
                                            continue;
                                        }
                                    }
                                    if (strtotime($eventdate) < strtotime($startdate_orig)) {
                                        $i--;
                                        continue;
                                    }
                                    if ($event->pec_weekly_every > 1 && (strtotime(substr($eventdate, 0, 11)) - strtotime(substr($event->date, 0, 11))) / (60 * 60 * 24) % ($event->pec_weekly_every * 7) != 0) {
                                        //echo "DATEDIFF: ".(strtotime(substr($eventdate,0,11)) - strtotime(substr($event->date,0,11))) / (60 * 60 * 24);
                                        continue;
                                    }
                                    if ((strtotime($eventdate) <= strtotime($enddate_orig) && strtotime($eventdate) <= strtotime($event->end_date . " 23:59:59") || $event->end_date == '0000-00-00' || $event->end_date == '') && strtotime($eventdate) >= strtotime($startdate_orig)) {
                                        $order_events[strtotime($eventdate) . $event->ID] = new stdClass();
                                        $order_events[strtotime($eventdate) . $event->ID]->id = $event->ID;
                                        $order_events[strtotime($eventdate) . $event->ID]->recurring_frecuency = $event->recurring_frecuency;
                                        $order_events[strtotime($eventdate) . $event->ID]->date = $eventdate;
                                        $order_events[strtotime($eventdate) . $event->ID]->end_date = $event->end_date;
                                        $order_events[strtotime($eventdate) . $event->ID]->end_time_hh = $event->end_time_hh;
                                        $order_events[strtotime($eventdate) . $event->ID]->end_time_mm = $event->end_time_mm;
                                        $order_events[strtotime($eventdate) . $event->ID]->title = $event->title;
                                        $order_events[strtotime($eventdate) . $event->ID]->description = $event->description;
                                        $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                        $order_events[strtotime($eventdate) . $event->ID]->hide_time = $event->hide_time;
                                        $order_events[strtotime($eventdate) . $event->ID]->location = $event->location;
                                        $order_events[strtotime($eventdate) . $event->ID]->phone = $event->phone;
                                        $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                        $order_events[strtotime($eventdate) . $event->ID]->map = $event->map;
                                        $order_events[strtotime($eventdate) . $event->ID]->share = $event->share;
                                        $order_events[strtotime($eventdate) . $event->ID]->all_day = $event->all_day;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_daily_working_days = $event->pec_daily_working_days;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_daily_every = $event->pec_daily_every;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_every = $event->pec_weekly_every;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_day = $event->pec_weekly_day;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_exceptions = $event->pec_exceptions;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_every = $event->pec_monthly_every;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_position = $event->pec_monthly_position;
                                        $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_day = $event->pec_monthly_day;
                                    }
                                }
                            }
                            break;
                        case 3:
                            $startdate = $event->date;
                            if (strtotime($startdate) < strtotime($startdate_orig)) {
                                $startdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($event->date)), date("i", strtotime($event->date)), 0, date("m", strtotime($startdate_orig)), date("d", strtotime($event->date)), date("y", strtotime($startdate_orig))));
                            }
                            $counter_m = 1;
                            if (isset($events_month) || $event->pec_monthly_day != "" && $event->pec_monthly_position != "") {
                                $counter_m = 0;
                            }
                            for ($i = 1; $i <= $list_limit; $i++) {
                                //echo "DONE MONTHLY";
                                $eventdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($startdate)), date("i", strtotime($startdate)), 0, date("m", strtotime($startdate)) + (strtotime($startdate) < time() && !isset($events_month) || $i > 1 ? $counter_m : 0), date("d", strtotime($startdate)), date("y", strtotime($startdate))));
                                if ($eventdate != "" && $event->pec_exceptions != "") {
                                    $exceptions = explode(',', $event->pec_exceptions);
                                    if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                        $i--;
                                        continue;
                                    }
                                }
                                //$html .= $event->pec_monthly_day. " - " .$event->pec_monthly_position;
                                if ($event->pec_monthly_day != "" && $event->pec_monthly_position != "") {
                                    $eventdate = str_replace(substr($eventdate, 5, 5), date('m-d', strtotime($event->pec_monthly_position . ' ' . $event->pec_monthly_day . ' of ' . date("F Y", strtotime($eventdate)))), $eventdate);
                                    if ($eventdate != "" && $event->pec_exceptions != "") {
                                        if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                            //$i--;
                                            $counter_m++;
                                            continue;
                                        }
                                    }
                                    if (strtotime($eventdate) > strtotime($enddate_orig) && ($event->end_date != '0000-00-00' && $event->end_date != '')) {
                                        break;
                                    }
                                    //$html .= $eventdate."XXX";
                                }
                                if ((!is_null($events_month) || $past) && strtotime($eventdate) > strtotime($enddate_orig)) {
                                    break;
                                }
                                if ($event->pec_monthly_every > 1 && !is_int((date('m', strtotime($eventdate)) - date('m', strtotime(substr($event->date, 0, 11)))) / $event->pec_monthly_every)) {
                                    $counter_m++;
                                    continue;
                                }
                                if (strtotime($startdate) < current_time('timestamp') || $i > 1) {
                                    $counter_m++;
                                }
                                if ((strtotime($eventdate) <= strtotime($enddate_orig) && strtotime($eventdate) <= strtotime($event->end_date . " 23:59:59") || $event->end_date == '0000-00-00' || $event->end_date == '') && strtotime($eventdate) >= strtotime($startdate_orig)) {
                                    $order_events[strtotime($eventdate) . $event->ID] = new stdClass();
                                    $order_events[strtotime($eventdate) . $event->ID]->id = $event->ID;
                                    $order_events[strtotime($eventdate) . $event->ID]->recurring_frecuency = $event->recurring_frecuency;
                                    $order_events[strtotime($eventdate) . $event->ID]->date = $eventdate;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_date = $event->end_date;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_hh = $event->end_time_hh;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_mm = $event->end_time_mm;
                                    $order_events[strtotime($eventdate) . $event->ID]->title = $event->title;
                                    $order_events[strtotime($eventdate) . $event->ID]->description = $event->description;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->hide_time = $event->hide_time;
                                    $order_events[strtotime($eventdate) . $event->ID]->location = $event->location;
                                    $order_events[strtotime($eventdate) . $event->ID]->phone = $event->phone;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->map = $event->map;
                                    $order_events[strtotime($eventdate) . $event->ID]->share = $event->share;
                                    $order_events[strtotime($eventdate) . $event->ID]->all_day = $event->all_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_working_days = $event->pec_daily_working_days;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_every = $event->pec_daily_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_every = $event->pec_weekly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_day = $event->pec_weekly_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_exceptions = $event->pec_exceptions;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_every = $event->pec_monthly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_position = $event->pec_monthly_position;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_day = $event->pec_monthly_day;
                                }
                            }
                            break;
                        case 4:
                            $counter_y = 1;
                            if (isset($events_month)) {
                                $counter_y = 0;
                            }
                            for ($i = 1; $i <= $list_limit; $i++) {
                                $eventdate = date("Y-m-d H:i:s", mktime(date("H", strtotime($event->date)), date("i", strtotime($event->date)), 0, date("m", strtotime($event->date)), date("d", strtotime($event->date)), date("y") + (strtotime($event->date) < time() && !isset($events_month) || $i > 1 ? $counter_y : 0)));
                                if ($eventdate != "" && $event->pec_exceptions != "") {
                                    $exceptions = explode(',', $event->pec_exceptions);
                                    if (in_array(substr($eventdate, 0, 10), $exceptions)) {
                                        $i--;
                                        continue;
                                    }
                                }
                                if (strtotime($eventdate) > strtotime($enddate_orig)) {
                                    $i--;
                                    break;
                                }
                                if ((!is_null($events_month) || $past) && strtotime($eventdate) > strtotime($enddate_orig)) {
                                    break;
                                }
                                if (strtotime($event->date) < time() || $i > 1) {
                                    $counter_y++;
                                }
                                if ((strtotime($eventdate) <= strtotime($enddate_orig) && strtotime($eventdate) <= strtotime($event->end_date . " 23:59:59") || $event->end_date == '0000-00-00' || $event->end_date == '') && strtotime($eventdate) >= strtotime($startdate_orig)) {
                                    $order_events[strtotime($eventdate) . $event->ID] = new stdClass();
                                    $order_events[strtotime($eventdate) . $event->ID]->id = $event->ID;
                                    $order_events[strtotime($eventdate) . $event->ID]->recurring_frecuency = $event->recurring_frecuency;
                                    $order_events[strtotime($eventdate) . $event->ID]->date = $eventdate;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_date = $event->end_date;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_hh = $event->end_time_hh;
                                    $order_events[strtotime($eventdate) . $event->ID]->end_time_mm = $event->end_time_mm;
                                    $order_events[strtotime($eventdate) . $event->ID]->title = $event->title;
                                    $order_events[strtotime($eventdate) . $event->ID]->description = $event->description;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->hide_time = $event->hide_time;
                                    $order_events[strtotime($eventdate) . $event->ID]->location = $event->location;
                                    $order_events[strtotime($eventdate) . $event->ID]->phone = $event->phone;
                                    $order_events[strtotime($eventdate) . $event->ID]->link = $event->link;
                                    $order_events[strtotime($eventdate) . $event->ID]->map = $event->map;
                                    $order_events[strtotime($eventdate) . $event->ID]->share = $event->share;
                                    $order_events[strtotime($eventdate) . $event->ID]->all_day = $event->all_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_working_days = $event->pec_daily_working_days;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_daily_every = $event->pec_daily_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_every = $event->pec_weekly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_weekly_day = $event->pec_weekly_day;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_exceptions = $event->pec_exceptions;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_every = $event->pec_monthly_every;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_position = $event->pec_monthly_position;
                                    $order_events[strtotime($eventdate) . $event->ID]->pec_monthly_day = $event->pec_monthly_day;
                                }
                            }
                            break;
                    }
                } else {
                    $enddate_orig = $event->end_date . " 23:59:59";
                    if ($event->all_day) {
                        $startdate_orig = date('Y-m-d') . " 00:00:00";
                    } else {
                        $startdate_orig = current_time('mysql');
                    }
                    if (!is_null($events_month)) {
                        $startdate_orig = $events_month;
                        $enddate_orig = $events_month_end;
                    }
                    if ($past) {
                        //$startdate_orig = date('Y-m-d H:i:s', strtotime('-30 days'));
                        $enddate_orig = current_time('mysql');
                        $startdate_orig = $enddate_orig;
                        if (strtotime($event->date) > strtotime($startdate_orig)) {
                            continue;
                        }
                    } else {
                        if (strtotime($event->date) < strtotime($startdate_orig)) {
                            continue;
                        }
                    }
                    $order_events[strtotime($event->date) . $event->ID] = $event;
                }
            }
            if (!function_exists('dp_pec_cmp')) {
                function dp_pec_cmp($a, $b)
                {
                    $a = strtotime($a->date);
                    $b = strtotime($b->date);
                    if ($a == $b) {
                        return 0;
                    }
                    return $a < $b ? -1 : 1;
                }
            }
            if (!function_exists('dp_pec_cmp_reverse')) {
                function dp_pec_cmp_reverse($a, $b)
                {
                    $a = strtotime($a->date);
                    $b = strtotime($b->date);
                    if ($a == $b) {
                        return 0;
                    }
                    return $a < $b ? 1 : -1;
                }
            }
            if ($past || !is_null($events_month)) {
                usort($order_events, "dp_pec_cmp_reverse");
            } else {
                usort($order_events, "dp_pec_cmp");
            }
            //ksort($order_events, SORT_NUMERIC);
            if ($return_data) {
                if ($limit != '' && $auto_limit) {
                    $order_events = array_slice($order_events, 0, $limit);
                }
                return $order_events;
            }
            $event_counter = 1;
            if (empty($order_events)) {
                $html .= '
				<div class="dp_pec_date_event dp_pec_isotope">
					<p class="dp_pec_event_no_events">' . $this->translation['TXT_NO_EVENTS_FOUND'] . '</p>
				</div>';
            } else {
                $event_reg = array();
                foreach ($order_events as $event) {
                    if ($event->id == "") {
                        $event->id = $event->ID;
                    }
                    if ($event_counter > $list_limit) {
                        break;
                    }
                    if ($event_counter == 1 && $this->calendar_obj->ical_active && is_null($events_month)) {
                        $html .= "<a class='dpProEventCalendar_feed' href='" . dpProEventCalendar_plugin_url('includes/ical.php?calendar_id=' . $this->id_calendar) . "'>iCal</a>";
                    }
                    if ($event_counter == 1 && $this->calendar_obj->rss_active && is_null($events_month)) {
                        $html .= "<a class='dpProEventCalendar_feed' href='" . dpProEventCalendar_plugin_url('includes/rss.php?calendar_id=' . $this->id_calendar) . "'>RSS</a>";
                    }
                    if ($event_counter == 1 && $this->calendar_obj->subscribe_active && is_null($events_month)) {
                        $html .= "<a class='dpProEventCalendar_feed dpProEventCalendar_subscribe' href='javascript:void(0);'>" . $this->translation['TXT_SUBSCRIBE'] . "</a>";
                    }
                    $all_working_days = '';
                    if ($event->pec_daily_working_days && $event->recurring_frecuency == 1) {
                        $all_working_days = $this->translation['TXT_ALL_WORKING_DAYS'];
                        $event->date = $event->orig_date;
                    }
                    $html .= "<div class='clear'></div>";
                    if ($this->calendar_obj->format_ampm) {
                        $time = date('h:i A', strtotime($event->date));
                    } else {
                        $time = date('H:i', strtotime($event->date));
                    }
                    $start_day = date('d', strtotime($event->date));
                    $start_month = date('n', strtotime($event->date));
                    $end_date = '';
                    if ($event->end_date != "" && $event->end_date != "0000-00-00" && $show_end_date) {
                        $end_day = date('d', strtotime($event->end_date));
                        $end_month = date('n', strtotime($event->end_date));
                        //$end_date = ' / <br />'.$end_day.' '.substr($this->translation['MONTHS'][($end_month - 1)], 0, 3);
                        $end_date = ' - ' . date_i18n(get_option('date_format'), strtotime($event->end_date));
                    }
                    //$start_date = $start_day.' '.substr($this->translation['MONTHS'][($start_month - 1)], 0, 3);
                    $start_date = date_i18n(get_option('date_format'), strtotime($event->date));
                    if ($start_date == $end_day . ' ' . substr($this->translation['MONTHS'][$end_month - 1], 0, 3)) {
                        $end_date = "";
                    }
                    if ($event->recurring_frecuency != 1) {
                        $end_date = "";
                    } elseif (in_array($event->id, $event_reg)) {
                        continue;
                    }
                    $end_time = "";
                    if ($event->end_time_hh != "" && $event->end_time_mm != "") {
                        $end_time = str_pad($event->end_time_hh, 2, "0", STR_PAD_LEFT) . ":" . str_pad($event->end_time_mm, 2, "0", STR_PAD_LEFT);
                    }
                    if ($end_time != "") {
                        if ($this->calendar_obj->format_ampm) {
                            $end_time_tmp = date('h:i A', strtotime("2000-01-01 " . $end_time . ":00"));
                        } else {
                            $end_time_tmp = date('H:i', strtotime("2000-01-01 " . $end_time . ":00"));
                        }
                        $end_time = " - " . $end_time_tmp;
                        if ($end_time_tmp == $time) {
                            $end_time = "";
                        }
                    }
                    if ($event->all_day) {
                        $time = $this->translation['TXT_ALL_DAY'];
                        $end_time = "";
                    }
                    $html .= '
					<div class="dp_pec_date_event dp_pec_upcoming dp_pec_isotope">';
                    $post_thumbnail_id = get_post_thumbnail_id($event->id);
                    $image_attributes = wp_get_attachment_image_src($post_thumbnail_id, 'large');
                    if ($post_thumbnail_id) {
                        $html .= '<div class="dp_pec_event_photo">';
                        $html .= '<img src="' . $image_attributes[0] . '" alt="" />';
                        $html .= '</div>';
                    }
                    //<a href="'.get_permalink($event->id).'"></a>
                    $title = '<span class="dp_pec_event_title_sp">' . $event->title . '</span>';
                    if ($this->calendar_obj->link_post) {
                        $title = '<a href="' . get_permalink($event->id) . '">' . $title . '</a>';
                    }
                    $edit_button = $this->getEditRemoveButtons($event);
                    $html .= '
						<h1 class="dp_pec_event_title">' . $title . '</h1><div class="dp_pec_clear"></div>' . $edit_button . '<div class="dp_pec_clear"></div>';
                    if ($this->calendar_obj->show_author) {
                        $author = get_userdata(get_post_field('post_author', $event->id));
                        $html .= '<span class="pec_author">' . $this->translation['TXT_BY'] . ' ' . $author->display_name . '</span>';
                    }
                    $html .= '
						<span><i class="fa fa-clock-o"></i>' . $start_date . $end_date . '<br>' . $all_working_days . ' ';
                    if ($this->calendar_obj->show_time && !$event->hide_time || $event->all_day) {
                        $html .= $time . $end_time;
                    }
                    $html .= '</span>';
                    if ($event->location != '') {
                        $html .= '
						<span class="dp_pec_event_location">' . $event->location . '</span>';
                    }
                    if ($event->phone != '') {
                        $html .= '
						<span class="dp_pec_event_phone">' . $event->phone . '</span>';
                    }
                    $category = get_the_terms($event->id, 'pec_events_category');
                    if (!empty($category)) {
                        $category_count = 0;
                        $html .= '
							<span class="dp_pec_event_categories">';
                        if ($event->location != '') {
                            $html .= '<br>';
                        }
                        foreach ($category as $cat) {
                            if ($category_count > 0) {
                                $html .= " / ";
                            }
                            $html .= $cat->name;
                            $category_count++;
                        }
                        $html .= '
							</span>';
                    }
                    if (is_array($dpProEventCalendar['custom_fields_counter'])) {
                        $counter = 0;
                        foreach ($dpProEventCalendar['custom_fields_counter'] as $key) {
                            $field_value = get_post_meta($event->id, 'pec_custom_' . $dpProEventCalendar['custom_fields']['id'][$counter], true);
                            if ($field_value != "") {
                                $html .= '<div class="pec_event_page_custom_fields"><strong>' . $dpProEventCalendar['custom_fields']['name'][$counter] . '</strong>';
                                if ($dpProEventCalendar['custom_fields']['type'][$counter] == 'checkbox') {
                                    $html .= '<i class="fa fa-check"></i>';
                                } else {
                                    $html .= '<p>' . $field_value . '</p>';
                                }
                                $html .= '</div>';
                            }
                            $counter++;
                        }
                    }
                    if ($this->limit_description > 0) {
                        $event->description = force_balance_tags(html_entity_decode(wp_trim_words(htmlentities($event->description), $this->limit_description)));
                    }
                    $event_desc = nl2br(strip_tags(str_replace("</p>", "<br />", preg_replace("/<p[^>]*?>/", "", $event->description)), '<iframe><strong><h1><h2><h3><h4><h5><h6><h7><b><i><em><pre><code><del><ins><img><a><ul><li><ol><blockquote><br><hr><span><p>'));
                    $html .= $this->getBookingButton($event->id);
                    if ($this->limit_description > 0) {
                        $event_desc = force_balance_tags(html_entity_decode(wp_trim_words(htmlentities($event_desc), $this->limit_description)));
                    }
                    $html .= '
						<div class="dp_pec_event_description">
							' . do_shortcode($event_desc) . '
						</div>';
                    if ($event->map != '') {
                        $html .= '
						<div class="dp_pec_date_event_map_overlay" onClick="style.pointerEvents=\'none\'"></div>
						<iframe class="dp_pec_date_event_map_iframe" width="100%" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&source=s_q&q=' . urlencode($event->map) . '&ie=UTF8&output=embed"></iframe>';
                    }
                    $html .= $this->getRating($event->id);
                    $html .= '
						<div class="dp_pec_date_event_icons">';
                    $html .= $this->getEventShare($event);
                    if ($event->link != '') {
                        $html .= '
						<a class="dp_pec_date_event_link" href="' . $event->link . '" target="_blank"></a>';
                    }
                    $html .= '
						</div>';
                    $html .= '
					</div>';
                    $event_reg[] = $event->id;
                    $event_counter++;
                }
            }
        }
        return $html;
    }