Example #1
0
 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;
 }
Example #2
0
 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);
     }
 }
Example #3
0
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;
}
?>