public static function get_events_listing() { $request_start = 0; $request_end = 0; $category = 0; $is_ajax = 0; if (isset($_REQUEST['is_ajax'])) { $is_ajax = (int) $_REQUEST['is_ajax']; } if (isset($_REQUEST['start'])) { $request_start = (int) $_REQUEST['start']; } if (isset($_REQUEST['end'])) { $request_end = (int) $_REQUEST['end']; } if (isset($_REQUEST['category'])) { $category = (int) $_REQUEST['category']; } $now = current_time('timestamp'); $start = $request_start != 0 ? $request_start : $now; $days_in_curr_month = date('t', @mktime(0, 0, 0, date("m", $start), 1, date("Y", $start))); $distance = 60 * 60 * 24 * $days_in_curr_month - 1; if ($request_end == 0) { $end = $start + $distance; } else { $end = $request_end; } if ($request_start == 0) { //current month $distance = $end - $start; } $events = self::get_events($start, $end, $category); //events filtering $filtered_events = array(); if (!empty($events)) { foreach ($events as $key => $value) { if ($value['end_mktime'] < $start) { unset($events[$key]); continue; } if ($_REQUEST['end'] > 0 && $value['start_mktime'] > $_REQUEST['end']) { unset($events[$key]); continue; } $filtered_events[] = $value; } } usort($filtered_events, function ($a, $b) { return $a['start_mktime'] < $b['start_mktime'] ? -1 : 1; }); $events = $filtered_events; $args = array(); $args['events'] = $events; $result = array(); $result['html'] = TMM::draw_free_page(TMM_EVENTS_PLUGIN_PATH . '/views/templates/events_list_part.php', $args); $result['count'] = count($events); $result['year'] = date("Y", $start); $result['month'] = TMM_Helper::get_monts_names(date("m", $start) - 1); $result['month_num'] = date("m", $start); $result['next_time'] = $end + 1; $result['prev_time'] = $end - $distance - 1; if ($result['prev_time'] < $now) { $result['prev_time'] = $now; } $result['prev_time'] = strtotime(date("Y", $result['prev_time']) . '-' . date("m", $result['prev_time']) . '-' . 1 . " " . 00 . ":" . 00 . ":" . 00, $now); if ($is_ajax) { echo json_encode($result); exit; } else { return $result['html']; } }