* @package WordPress
 * @subpackage Traveler
 * @since 1.0
 *
 * hotel cart item html
 *
 * Created by ShineTheme
 *
 */
if (isset($item_id) and $item_id) {
    $item = STCart::find_item($item_id);
    $hotel = $item_id;
    $room_id = $item['data']['room_id'];
    $check_in = strtotime($item['data']['check_in']);
    $check_out = strtotime($item['data']['check_out']);
    $date_diff = STDate::date_diff($check_in, $check_out);
    $data_price = $item['data']['data_price'];
    $data_price = str_ireplace("\\", '', $data_price);
    $data_price = unserialize($data_price);
    $info_price = $data_price['info_price'];
    $info_price = TravelerObject::st_conver_info_price($info_price);
    ?>
    <header class="clearfix">
        <?php 
    if (get_post_status($hotel)) {
        ?>
        <a class="booking-item-payment-img" href="#">
            <?php 
        echo get_the_post_thumbnail($hotel, array(98, 74, 'bfi_thumb' => true));
        ?>
        </a>
 /**
  * @since 1.1.0
  **/
 function add_to_cart()
 {
     if (STInput::request('action') == 'rental_add_cart') {
         if (!STInput::request('start') or !STInput::request('end')) {
             STTemplate::set_message(st_get_language('check_in_and_check_out_are_required'), 'danger');
             return;
         }
         $today = strtotime(date('m/d/Y'));
         $check_in = TravelHelper::convertDateFormat(STInput::request('start'));
         $rental_id = STInput::request('item_id');
         $booking_period = get_post_meta($rental_id, 'rentals_booking_period', true);
         $period = STDate::date_diff($today, $check_in);
         if ($booking_period && $period < $booking_period) {
             STTemplate::set_message(sprintf(__('Booking is only accepted %d day(s) before today.', ST_TEXTDOMAIN), $booking_period), 'danger');
             return;
         }
         $adult = intval(STInput::request('adult'));
         $children = intval(STInput::request('children'));
         if (get_post_meta($rental_id, 'rental_max_adult', true)) {
             $max_adult = intval(get_post_meta($rental_id, 'rental_max_adult', true));
             if ($adult > $max_adult) {
                 STTemplate::set_message(sprintf(__('A maximum number of adult(s): %d', ST_TEXTDOMAIN), $max_adult), 'danger');
                 return;
             }
         }
         if (get_post_meta($rental_id, 'rental_max_children', true)) {
             $max_children = intval(get_post_meta($rental_id, 'rental_max_children', true));
             if ($children > $max_children) {
                 STTemplate::set_message(sprintf(__('A maximum number of children: %d', ST_TEXTDOMAIN), $max_children), 'danger');
                 return;
             }
         }
         $validate = $this->do_add_to_cart(array('item_id' => STInput::request('item_id'), 'number_room' => STInput::request('number_room'), 'price' => STInput::request('price'), 'start' => TravelHelper::convertDateFormat(STInput::request('start')), 'end' => TravelHelper::convertDateFormat(STInput::request('end')), 'adult' => STInput::request('adult'), 'children' => STInput::request('children')));
         if ($validate) {
             $link = STCart::get_cart_link();
             wp_safe_redirect($link);
             die;
         }
     }
 }
Example #3
0
echo esc_html($title);
?>
',
                animate: true,
                seriesDefaults: {
                    pointLabels: {show: true},
                    <?php 
if ($type == 'quarter') {
    ?>
                    renderer: $.jqplot.BarRenderer,
                    <?php 
} elseif ($type == 'year' and STInput::request('year_end') - STInput::request('year_start') < 4) {
    ?>
                    renderer: $.jqplot.BarRenderer,
                    <?php 
} elseif ($type == 'custom_date' and $number_days = STDate::date_diff(strtotime(STInput::request('date_start')), strtotime(STInput::request('date_end'))) <= 7) {
    ?>
                    renderer: $.jqplot.BarRenderer,
                    <?php 
}
?>
                    rendererOptions: {fillToZero: true}
                },
                legend: {
                    show: true,
                    placement: 'insideGrid'
                },
                series: data_lable,
                axes: {
                    xaxis: {
                        renderer: $.jqplot.CategoryAxisRenderer,
Example #4
0
 function is_booking_period($item_id = '', $t = '', $c = '')
 {
     $today = strtotime($t);
     $check_in = strtotime($c);
     $booking_period = intval(get_post_meta($item_id, 'hotel_booking_period', TRUE));
     $period = STDate::date_diff($today, $check_in);
     if ($period < $booking_period) {
         return $booking_period;
     }
     return FALSE;
 }
Example #5
0
 static function get_default_info_reports($type, $date_start = false, $date_end = false)
 {
     $data = array('post_type' => array('st_hotel' => array('ids' => array(), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'date' => array()), 'st_rental' => array('ids' => array(), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'date' => array()), 'st_cars' => array('ids' => array(), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'date' => array()), 'st_activity' => array('ids' => array(), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'date' => array()), 'st_tours' => array('ids' => array(), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'date' => array())), 'number_orders' => 0, 'number_items' => 0, 'average_total' => 0, 'average_daily_sale' => 0);
     $list_partner = st()->get_option('list_partner');
     $array_partner = array();
     if (!empty($list_partner)) {
         foreach ($list_partner as $key => $value) {
             $id = 'st_' . $value['id_partner'];
             if ($value['id_partner'] == 'car' or $value['id_partner'] == 'tour') {
                 $id = 'st_' . $value['id_partner'] . 's';
             }
             $array_partner[$id] = $value['title'];
         }
     }
     foreach ($data['post_type'] as $k => $v) {
         if (isset($array_partner[$k])) {
             if ($type != '15days' and $type != 'custom_date') {
                 // add 12 month
                 for ($i = 1; $i <= 12; $i++) {
                     $data['post_type'][$k]['date'][$i] = array('number_order' => 0, 'number_items' => 0, 'average_total' => 0);
                     // add day
                     if ($i == 2) {
                         $day = 28;
                     } else {
                         $day = 31;
                     }
                     for ($j = 1; $j <= $day; $j++) {
                         $data['post_type'][$k]['date'][$i]['day'][$j] = array('number_order' => 0, 'number_items' => 0, 'average_total' => 0);
                     }
                 }
             } else {
                 $number_days = STDate::date_diff(strtotime($date_start), strtotime($date_end));
                 for ($i = 0; $i <= $number_days; $i++) {
                     $next_day = date('m-d-Y', strtotime($date_start . "+" . $i . " days"));
                     if (empty($data['post_type'][$k]['date'][$next_day])) {
                         $data['post_type'][$k]['date'][$next_day] = array('number_orders' => 0, 'number_items' => 0, 'average_total' => 0);
                     }
                 }
             }
         } else {
             unset($data['post_type'][$k]);
         }
     }
     return $data;
 }
Example #6
0
 function do_add_to_cart()
 {
     $pass_validate = true;
     $item_id = STInput::request('item_id');
     $number = STInput::request('number');
     $discount = STInput::request('discount');
     $price = STInput::request('price');
     if (!empty($discount)) {
         $price_sale = $price - $price * ($discount / 100);
         $data = array('discount' => $discount, 'price_sale' => $price_sale);
     }
     $data['check_in'] = STInput::request('check_in');
     $data['check_out'] = STInput::request('check_out');
     $data['type_tour'] = STInput::request('type_tour');
     $data['type_price'] = STInput::request('type_price');
     if ($data['type_price'] == 'people_price') {
         $prices = self::get_price_person($item_id);
         $data['adult_price'] = $prices['adult'];
         $data['child_price'] = $prices['child'];
         $data['discount'] = $prices['discount'];
         $data['adult_number'] = STInput::request('adult_number', 1);
         $data['child_number'] = STInput::request('children_number', 0);
     }
     $data['duration'] = STInput::request('duration');
     $type_tour = STInput::request('type_tour');
     $today = strtotime(date('m/d/Y', time()));
     if ($type_tour == 'daily_tour') {
         $check_in = strtotime(TravelHelper::convertDateFormat(STInput::request('check_in')));
     } else {
         $check_in = strtotime(get_post_meta($item_id, 'check_in', true));
     }
     $booking_period = intval(get_post_meta($item_id, 'tours_booking_period', true));
     $period = STDate::date_diff($today, $check_in);
     $expired = $check_in - $today;
     if ($type_tour == 'daily_tour') {
         if ($booking_period && $period < $booking_period) {
             STTemplate::set_message(sprintf(__('Booking is only accepted %d day(s) before today.', ST_TEXTDOMAIN), $booking_period), 'danger');
             return;
         }
     } else {
         if ($expired < 0) {
             STTemplate::set_message(__('This tour has expired', ST_TEXTDOMAIN), 'danger');
             $pass_validate = false;
             return;
         }
     }
     if ($pass_validate) {
         $pass_validate = apply_filters('st_tour_add_cart_validate', $pass_validate, $data);
     }
     if ($pass_validate) {
         STCart::add_cart($item_id, $number, $price, $data);
     }
     return $pass_validate;
 }
 * hotel payment item row
 *
 * Created by ShineTheme
 *
 */
$order_token_code = STInput::get('order_token_code');
if ($order_token_code) {
    $order_code = STOrder::get_order_id_by_token($order_token_code);
}
$hotel_id = $key;
$object_id = $key;
$total = 0;
$room_id = $data['data']['room_id'];
$check_in = $data['data']['check_in'];
$check_out = $data['data']['check_out'];
$datediff = STDate::date_diff(strtotime($check_in), strtotime($check_out));
$number = $data['number'];
$price = $data['price'];
if (!$number) {
    $number = 1;
}
/*if($datediff>=1)
{
    $total+= ($price)*$datediff*$number;
}else{
    $total+= $price*$number;
}*/
$hotel_link = '';
if (isset($hotel_id) and $hotel_id) {
    $hotel_link = get_permalink($hotel_id);
}
Example #8
0
 static function get_coupon_value($coupon, $total = false, $cart_items = array(), $customer_email = false, $check_in = null)
 {
     if (!$total) {
         $total = STCart::get_total_with_out_tax();
     }
     if (empty($cart_items)) {
         $cart_items = STCart::get_items();
     }
     $coupon_object = get_page_by_title($coupon, OBJECT, 'st_coupon_code');
     if (!$coupon_object) {
         return array('status' => 0, 'message' => __('Coupon Not Found', ST_TEXTDOMAIN));
     }
     $discount_value = 0;
     $coupon_post_id = $coupon_object->ID;
     $discount_type = get_post_meta($coupon_post_id, 'discount_type', true);
     //$booking_type_available = get_post_meta($coupon_post_id,'booking_type_available',true);
     $amount = get_post_meta($coupon_post_id, 'amount', true);
     $expiry_date = get_post_meta($coupon_post_id, 'expiry_date', true);
     $minimum_spend = get_post_meta($coupon_post_id, 'minimum_spend', true);
     $maximum_spend = get_post_meta($coupon_post_id, 'maximum_spend', true);
     $required_porduct = get_post_meta($coupon_post_id, 'include_products', true);
     $exclude_products = get_post_meta($coupon_post_id, 'exclude_products', true);
     $limit_per_coupon = get_post_meta($coupon_post_id, 'limit_per_coupon', true);
     $limit_per_user = get_post_meta($coupon_post_id, 'limit_per_user', true);
     //Validate Expiry Date
     if ($expiry_date) {
         $datediff = STDate::date_diff2($expiry_date, date('Y-m-d'));
         if ($datediff <= 1) {
             return array('status' => 0, 'message' => __('This coupon is expired', ST_TEXTDOMAIN));
         }
     }
     //Validate Minium Spend
     if ($minimum_spend) {
         if ($minimum_spend > $total) {
             return array('status' => 0, 'message' => sprintf(__('This coupon is only applicable for bills spent over %s', ST_TEXTDOMAIN), TravelHelper::format_money($minimum_spend)));
         }
     }
     //Validate Maximum Spend
     if ($maximum_spend) {
         if ($maximum_spend < $total) {
             return array('status' => 0, 'message' => sprintf(__('This coupon is only applicable for bills spent less than %s', ST_TEXTDOMAIN), TravelHelper::format_money($maximum_spend)));
         }
     }
     //Validate Required Product
     if ($required_porduct) {
         $ids = explode(',', $required_porduct);
         $products_name = array();
         $check = array();
         foreach ($ids as $key) {
             if (self::_check_in_items($key, $cart_items)) {
                 $check[] = 1;
             }
             $products_name[] = "<a class='dotted_bottom' href='" . get_permalink($key) . "' target='_blank'>" . get_the_title($key) . "</a>";
         }
         if (empty($check)) {
             return array('status' => 0, 'message' => sprintf(__('This coupon is required %s in the cart', ST_TEXTDOMAIN), implode(', ', $products_name)));
         }
     }
     //Validate Exclude Product
     if ($exclude_products) {
         $ids = explode(',', $exclude_products);
         $products_name = array();
         $check = array();
         foreach ($ids as $key) {
             if (self::_check_in_items($key, $cart_items)) {
                 $check[] = 1;
             }
             $products_name[] = "<a class='dotted_bottom' href='" . get_permalink($key) . "' target='_blank'>" . get_the_title($key) . "</a>";
         }
         if (!empty($check)) {
             return array('status' => 0, 'message' => sprintf(__('This coupon is required %s NOT in the cart', ST_TEXTDOMAIN), implode(', ', $products_name)));
         }
     }
     //Validate Used Time
     $coupon_code = $coupon_object->post_title;
     if ($limit_per_coupon) {
         global $wpdb;
         $query = "\r\n                    SELECT  count({$wpdb->prefix}posts.ID) as total\r\n                    FROM    {$wpdb->prefix}posts\r\n                    join {$wpdb->prefix}postmeta on {$wpdb->prefix}postmeta.post_id = {$wpdb->prefix}posts.ID and {$wpdb->prefix}postmeta.meta_key = 'coupon_code' \r\n                    and {$wpdb->prefix}postmeta.meta_value = '{$coupon_code}'\r\n                    WHERE  post_type = 'st_order'";
         $result = $wpdb->get_results($query);
         $count_used = 0;
         if (!empty($result) and is_array($result)) {
             foreach ($result as $key => $value) {
                 $count_used += $value->total;
             }
         }
         if ($count_used >= $limit_per_coupon) {
             return array('status' => 0, 'message' => __('This coupon is reach the limit of usage', ST_TEXTDOMAIN));
         }
     }
     // Validate Per User
     if ($limit_per_user and is_user_logged_in()) {
         /*$q_arg=array(
                             'post_type'=>'st_order'
                         );
         
                         if(is_user_logged_in()){
                             $q_arg['meta_key']='id_user';
                             $q_arg['meta_value']=get_current_user_id();
                         }elseif($customer_email){
                             $q_arg['meta_key']='st_email';
                             $q_arg['meta_value']=$customer_email;
                         }*/
         $q_arg = array('post_type' => 'st_order', 'meta_query' => array('relation' => 'AND', array('key' => 'coupon_code', 'value' => $coupon_code, 'type' => 'CHAR', 'compare' => '='), array('key' => 'id_user', 'value' => get_current_user_id(), 'compare' => '=')));
         $query = new WP_Query($q_arg);
         if ($query->found_posts >= $limit_per_user) {
             return array('status' => 0, 'message' => __('This coupon is reach the limit of usage per user', ST_TEXTDOMAIN));
         }
     }
     if ($amount) {
         switch ($discount_type) {
             case "cart_percent":
                 if ($amount < 100) {
                     $discount_value = $total / 100 * $amount;
                 } else {
                     $discount_value = $total;
                 }
                 break;
                 // Currently, Only one product in cart, so dont need to use bellow discount type
                 //                case "product_amount":
                 //                    $discount_value=self::_get_product_discount($amount,explode(',',$required_porduct),$cart_items,'amount');
                 //                    break;
                 //                case "product_percent":
                 //                    $discount_value=self::_get_product_discount($amount,explode(',',$required_porduct),$cart_items,'percent');
                 //                    break;
                 // Default: Card Discount
             // Currently, Only one product in cart, so dont need to use bellow discount type
             //                case "product_amount":
             //                    $discount_value=self::_get_product_discount($amount,explode(',',$required_porduct),$cart_items,'amount');
             //                    break;
             //                case "product_percent":
             //                    $discount_value=self::_get_product_discount($amount,explode(',',$required_porduct),$cart_items,'percent');
             //                    break;
             // Default: Card Discount
             default:
                 $discount_value = $amount > $total ? $total : $amount;
                 break;
         }
     }
     $result = apply_filters('st_get_coupon_value', array('status' => 1, 'value' => $discount_value, 'coupon' => $coupon, 'total' => $total, 'cart_items' => $cart_items));
     return array('status' => $result['status'], 'value' => isset($result['value']) ? $result['value'] : 0, 'message' => isset($result['message']) ? $result['message'] : 0, 'data' => isset($result['data']) ? $result['data'] : 0);
 }
Example #9
0
 /**
  *
  *
  * @since 1.1.3
  * */
 static function get_equipment_line_item($price, $unit, $start_timestamp, $end_timestamp)
 {
     switch ($unit) {
         case "per_day":
             $diff = STDate::timestamp_diff_day($start_timestamp, $end_timestamp);
             if (!$diff) {
                 $diff = 1;
             }
             return (double) $unit * $diff;
             break;
         case "per_hour":
             $diff = STDate::timestamp_diff($start_timestamp, $end_timestamp);
             if (!$diff) {
                 $diff = 1;
             }
             return (double) $price * $diff;
             break;
         default:
             return (double) $price;
             break;
     }
 }
Example #10
0
 /**
  *
  *
  * */
 static function get_hotel_price($data, $price, $number = 1)
 {
     $default = array('check_in' => false, 'check_out' => false);
     extract(wp_parse_args($data, $default));
     //Check datediff and price per date
     if ($check_in and $check_out) {
         $datediff = STDate::date_diff(strtotime($check_in), strtotime($check_out));
         if ($datediff >= 1) {
             return $price * $datediff * $number;
         } else {
             return $price * $number;
         }
     } else {
         return $price * $number;
     }
 }
Example #11
0
 static function get_date_diff($start, $end, $unit = false)
 {
     if (!$unit) {
         $unit = self::get_price_unit();
     }
     $format = '%H';
     $datediff = STDate::timestamp_diff($start, $end);
     switch ($unit) {
         case "day":
             $diff_number = ceil($datediff / 24);
             break;
         case "per_day":
             $diff_number = ceil($datediff / 24);
             break;
         case "hour":
             $diff_number = ceil($datediff);
             break;
         case "per_hour":
             $diff_number = ceil($datediff);
             break;
         default:
             $diff_number = $datediff;
             break;
     }
     if ($diff_number < 0) {
         $diff_number = 0;
     }
     if (self::check_booking_days_included()) {
         $diff_number += 1;
     }
     return $diff_number;
 }
Example #12
0
 function ajax_search_room()
 {
     if (st_is_ajax() and STInput::post('room_search')) {
         if (!wp_verify_nonce(STInput::post('room_search'), 'room_search')) {
             $result = array('status' => 0, 'data' => "");
             echo json_encode($result);
             die;
         }
         $result = array('status' => 1, 'data' => "");
         $hotel_id = get_the_ID();
         $post = STInput::request();
         $post['room_parent'] = $hotel_id;
         //Check Date
         $today = date('m/d/Y');
         $check_in = strtotime(TravelHelper::convertDateFormat($post['start']));
         $check_out = strtotime(TravelHelper::convertDateFormat($post['end']));
         $date_diff = STDate::date_diff($check_in, $check_out);
         $booking_period = $this->is_booking_period($hotel_id, $today, $post['start']);
         if ($booking_period) {
             $result = array('status' => 0, 'data' => st()->load_template('hotel/elements/loop-room-none'), 'message' => sprintf(__('Booking is only accepted %d day(s) before today.', ST_TEXTDOMAIN), $booking_period));
             echo json_encode($result);
             die;
         }
         if ($date_diff < 1) {
             $result = array('status' => 0, 'data' => "", 'message' => __('Make sure your check-out date is at least 1 day after check-in.', ST_TEXTDOMAIN), 'more-data' => $date_diff);
             echo json_encode($result);
             die;
         }
         query_posts($this->search_room($post));
         $post['check_in'] = date('d-m-Y', strtotime($post['start']));
         $post['check_out'] = date('d-m-Y', strtotime($post['end']));
         global $wp_query;
         if (have_posts()) {
             while (have_posts()) {
                 the_post();
                 $result['data'] .= st()->load_template('hotel/elements/loop-room-item');
             }
         } else {
             $result['data'] .= st()->load_template('hotel/elements/loop-room-none');
         }
         wp_reset_query();
         echo json_encode($result);
         die;
     }
 }