function trav_tour_get_available_schedules($tour_data) { // validation if (empty($tour_data['tour_id'])) { return false; } $date_from = isset($tour_data['date_from']) ? trav_sanitize_date($tour_data['date_from']) : ''; $date_to = isset($tour_data['date_to']) ? trav_sanitize_date($tour_data['date_to']) : ''; if (trav_strtotime($date_from) > trav_strtotime($date_to)) { $date_from = ''; $date_to = ''; } // init variables global $wpdb; $tour_id = esc_sql(trav_tour_org_id($tour_data['tour_id'])); $st_id = empty($tour_data['st_id']) ? '' : esc_sql($tour_data['st_id']); $repeated = get_post_meta($tour_id, 'trav_tour_repeated', true); $where = "1=1"; if (!empty($tour_id)) { $where .= " AND schedules.tour_id={$tour_id}"; } if (!empty($st_id)) { $where .= " AND schedules.st_id={$st_id}"; } if (!empty($repeated)) { $date_from = empty($date_from) ? date('Y-m-d') : date('Y-m-d', trav_strtotime($date_from)); $date_to = empty($date_to) ? date('Y-m-d', strtotime('30 days')) : date('Y-m-d', trav_strtotime($date_to) + 86400); $from_date_obj = date_create_from_format('Y-m-d', $date_from); $to_date_obj = date_create_from_format('Y-m-d', $date_to); // has specified date $date_interval = DateInterval::createFromDateString('1 day'); $period = new DatePeriod($from_date_obj, $date_interval, $to_date_obj); $sql_check_date_parts = array(); $days = 0; foreach ($period as $dt) { $check_date = $dt->format("Y-m-d"); $sql_check_date_parts[] = "SELECT '{$check_date}' AS check_date"; $days++; } $sql_check_date = implode(' UNION ', $sql_check_date_parts); $sql = "SELECT schedules.*, check_dates.check_date, schedules.max_people - SUM( IFNULL(bookings.adults,0) ) - SUM( IFNULL(bookings.kids,0) ) AS available_seat FROM " . TRAV_TOUR_SCHEDULES_TABLE . " AS schedules\n\t\t\t\t\tINNER JOIN ({$sql_check_date}) AS check_dates\n\t\t\t\t\tON ( schedules.is_daily = 0 AND check_dates.check_date = schedules.tour_date ) OR ( schedules.is_daily = 1 AND check_dates.check_date >= schedules.tour_date AND check_dates.check_date <= schedules.date_to )\n\t\t\t\t\tLEFT JOIN " . TRAV_TOUR_BOOKINGS_TABLE . " AS bookings\n\t\t\t\t\tON bookings.tour_id = schedules.tour_id AND bookings.st_id = schedules.st_id AND bookings.tour_date = check_dates.check_date AND bookings.status<>0\n\t\t\t\t\tWHERE {$where}\n\t\t\t\t\tGROUP BY tour_id, st_id, check_date\n\t\t\t\t\tORDER BY st_id ASC, tour_date ASC"; } else { $today = date('Y-m-d', time()); $sql = "SELECT schedules.*, schedules.tour_date AS check_date, schedules.max_people - SUM( IFNULL(bookings.adults,0) ) - SUM( IFNULL(bookings.kids,0) ) AS available_seat FROM " . TRAV_TOUR_SCHEDULES_TABLE . " AS schedules\n\t\t\t\t\tLEFT JOIN " . TRAV_TOUR_BOOKINGS_TABLE . " AS bookings\n\t\t\t\t\tON schedules.tour_id = bookings.tour_id AND schedules.st_id = bookings.st_id AND bookings.tour_date = schedules.tour_date AND bookings.status<>0\n\t\t\t\t\tWHERE {$where} AND schedules.tour_date >= '{$today}'\n\t\t\t\t\tGROUP BY tour_id, st_id, tour_date\n\t\t\t\t\tORDER BY st_id ASC"; } $raw_schedules = $wpdb->get_results($sql, ARRAY_A); $schedules = array(); if (!empty($raw_schedules)) { foreach ($raw_schedules as $schedule) { $schedules[$schedule['st_id']][$schedule['check_date']] = $schedule; } } return $schedules; }
function trav_ajax_acc_check_room_availability() { if (!isset($_POST['_wpnonce']) || !isset($_POST['booking_no']) || !wp_verify_nonce($_POST['_wpnonce'], 'booking-' . $_POST['booking_no'])) { $result_json['success'] = 0; $result_json['result'] = __('Sorry, your nonce did not verify.', 'trav'); wp_send_json($result_json); } if (!isset($_POST['date_from']) || !isset($_POST['date_to']) || trav_strtotime($_POST['date_from']) >= trav_strtotime($_POST['date_to'])) { $result_json['success'] = 0; $result_json['result'] = __('Wrong Date Interval. Please check your dates.', 'trav'); wp_send_json($result_json); } global $wpdb; $booking_no = sanitize_text_field($_POST['booking_no']); $pin_code = sanitize_text_field($_POST['pin_code']); if (!($booking_data = trav_acc_get_booking_data($booking_no, $pin_code))) { $result_json['success'] = 0; $result_json['result'] = __('Wrong booking number and pin code.', 'trav'); wp_send_json($result_json); } $booking_data['date_from'] = trav_sanitize_date($_POST['date_from']); $booking_data['date_to'] = trav_sanitize_date($_POST['date_to']); $booking_data['rooms'] = sanitize_text_field($_POST['rooms']); $booking_data['adults'] = sanitize_text_field($_POST['adults']); $booking_data['kids'] = sanitize_text_field($_POST['kids']); $booking_data['child_ages'] = $_POST['child_ages']; $room_price_data = trav_acc_get_room_price_data($booking_data['accommodation_id'], $booking_data['room_type_id'], $booking_data['date_from'], $booking_data['date_to'], $booking_data['rooms'], $booking_data['adults'], $booking_data['kids'], $booking_data['child_ages'], $booking_no, $pin_code); if (!$room_price_data || !is_array($room_price_data)) { $result_json['success'] = 0; $result_json['result'] = __('The room is not available for the selected date, rooms and person. Please have another look at booking fields.', 'trav'); wp_send_json($result_json); } else { $tax_rate = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_tax_rate', true); $tax = 0; if (!empty($tax_rate)) { $tax = $tax_rate * $room_price_data['total_price'] / 100; } $total_price = $room_price_data['total_price'] + $tax; $return_html = '<dl class="other-details">'; $return_html .= '<dt class="feature">' . esc_html(trav_get_day_interval($booking_data['date_from'], $booking_data['date_to'])) . ' ' . __('night Stay', 'trav') . ':</dt><dd class="value">' . esc_html(trav_get_price_field($room_price_data['total_price'])) . '</dd>'; if (!empty($tax_rate)) { $return_html .= '<dt class="feature">' . __('taxes and fees', 'trav') . ':</dt><dd class="value">' . esc_html(trav_get_price_field($tax)) . '</dd>'; } $return_html .= '<dt class="feature">' . __('Total Price', 'trav') . '</dt><dd>' . esc_html(trav_get_price_field($total_price)) . '</dd>'; $return_html .= '</dl>'; $result_json['success'] = 1; $result_json['result'] = $return_html; wp_send_json($result_json); } }
get_header(); global $trav_options, $before_article, $after_article, $tour_list, $current_view, $date_from, $date_to, $language_count; $order_array = array('ASC', 'DESC'); $order_by_array = array('name' => 'tour_title', 'price' => 'cast(min_price as unsigned)'); $order_defaults = array('name' => 'ASC', 'price' => 'ASC'); $s = isset($_REQUEST['s']) ? sanitize_text_field($_REQUEST['s']) : ''; $min_price = isset($_REQUEST['min_price']) && is_numeric($_REQUEST['min_price']) ? sanitize_text_field($_REQUEST['min_price']) : 0; $max_price = isset($_REQUEST['max_price']) && (is_numeric($_REQUEST['max_price']) || $_REQUEST['max_price'] == 'no_max') ? sanitize_text_field($_REQUEST['max_price']) : 'no_max'; $order_by = isset($_REQUEST['order_by']) && array_key_exists($_REQUEST['order_by'], $order_by_array) ? sanitize_text_field($_REQUEST['order_by']) : 'name'; $order = isset($_REQUEST['order']) && in_array($_REQUEST['order'], $order_array) ? sanitize_text_field($_REQUEST['order']) : 'ASC'; $tour_type = isset($_REQUEST['tour_types']) ? is_array($_REQUEST['tour_types']) ? $_REQUEST['tour_types'] : array($_REQUEST['tour_types']) : array(); $current_view = isset($_REQUEST['view']) ? sanitize_text_field($_REQUEST['view']) : 'list'; $page = isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) && $_REQUEST['page'] >= 1 ? sanitize_text_field($_REQUEST['page']) : 1; $per_page = isset($trav_options['tour_posts']) && is_numeric($trav_options['tour_posts']) ? $trav_options['tour_posts'] : 12; $date_from = empty($_REQUEST['date_from']) || trav_sanitize_date($_REQUEST['date_from']) == '' ? date(trav_get_date_format('php')) : $_REQUEST['date_from']; $date_to = empty($_REQUEST['date_to']) || trav_sanitize_date($_REQUEST['date_to']) == '' || trav_strtotime($date_from) > trav_strtotime($_REQUEST['date_to']) ? date(trav_get_date_format('php'), trav_strtotime($date_from) + 86400 * 30) : $_REQUEST['date_to']; if (is_tax()) { $queried_taxonomy = get_query_var('taxonomy'); $queried_term = get_query_var('term'); $queried_term_obj = get_term_by('slug', $queried_term, $queried_taxonomy); if ($queried_term_obj) { if ($queried_taxonomy == 'tour_type' && !in_array($queried_term_obj->term_id, $tour_type)) { $tour_type[] = $queried_term_obj->term_id; } } } $tour_list = trav_tour_get_search_result(array('s' => $s, 'date_from' => $date_from, 'date_to' => $date_to, 'order_by' => $order_by_array[$order_by], 'order' => $order, 'last_no' => ($page - 1) * $per_page, 'per_page' => $per_page, 'min_price' => $min_price, 'max_price' => $max_price, 'tour_type' => $tour_type)); $count = trav_tour_get_search_result_count(array('min_price' => $min_price, 'max_price' => $max_price, 'tour_type' => $tour_type)); $before_article = ''; $after_article = ''; ?>
$per_page = isset($trav_options['acc_posts']) && is_numeric($trav_options['acc_posts']) ? $trav_options['acc_posts'] : 12; if (is_tax()) { $queried_taxonomy = get_query_var('taxonomy'); $queried_term = get_query_var('term'); $queried_term_obj = get_term_by('slug', $queried_term, $queried_taxonomy); if ($queried_term_obj) { if ($queried_taxonomy == 'accommodation_type' && !in_array($queried_term_obj->term_id, $acc_type)) { $acc_type[] = $queried_term_obj->term_id; } if ($queried_taxonomy == 'amenity' && !in_array($queried_term_obj->term_id, $amenities)) { $amenities[] = $queried_term_obj->term_id; } } } $date_from = isset($_REQUEST['date_from']) ? trav_sanitize_date($_REQUEST['date_from']) : ''; $date_to = isset($_REQUEST['date_to']) ? trav_sanitize_date($_REQUEST['date_to']) : ''; if (trav_strtotime($date_from) >= trav_strtotime($date_to)) { $date_from = ''; $date_to = ''; } $results = trav_acc_get_search_result($s, $date_from, $date_to, $rooms, $adults, $kids, $order_by_array[$order_by], $order, ($page - 1) * $per_page, $per_page, $min_price, $max_price, $rating, $acc_type, $amenities); $count = trav_acc_get_search_result_count($min_price, $max_price, $rating, $acc_type, $amenities); global $before_article, $after_article, $acc_list; $before_article = ''; $after_article = ''; $acc_list = array(); foreach ($results as $result) { $acc_list[] = $result->acc_id; } ?>