* @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; } } }
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,
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; }
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; }
* 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); }
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; }
/** * @since 1.0.9 * @update 1.1.3 **/ function do_add_to_cart() { $pass_validate = true; $data_price_cars = json_decode(str_ireplace("\\", '', STInput::request('data_price_cars'))); $data_price_items = json_decode(str_ireplace("\\", '', STInput::request('data_price_items'))); $selected_equipments = json_decode(str_ireplace("\\", '', STInput::request('selected_equipments'))); $discount = STInput::request('discount'); $price_unit = STInput::request('price'); $price_old = STInput::request('price_old'); $item_id = STInput::request('item_id'); $number = 1; $price_total = STInput::request('data_price_total'); $check_in = $data_price_cars->date_time->pick_up_date . ' ' . $data_price_cars->date_time->pick_up_time; $check_in = date('Y-m-d H:i:s', strtotime($check_in)); $check_out = $data_price_cars->date_time->drop_off_date . ' ' . $data_price_cars->date_time->drop_off_time; $check_out = date('Y-m-d H:i:s', strtotime($check_out)); $data = array('data_price_cars' => $data_price_cars, 'data_price_items' => $data_price_items, 'discount' => $discount, 'price_old' => $price_old, 'check_in' => STInput::request('check_in'), 'check_in_timestamp' => STInput::request('check_in_timestamp'), 'check_out' => STInput::request('check_out'), 'check_out_timestamp' => STInput::request('check_out_timestamp'), 'price_total' => $price_total, 'price_unit' => self::get_price_unit(), 'selected_equipments' => $selected_equipments); // Validate required field $change_location_date_box = $this->get_search_fields_box(); $field_types = $this->get_search_fields_name(); if (!empty($change_location_date_box)) { $message = ''; foreach ($change_location_date_box as $key => $value) { if (isset($field_types[$value['field_atrribute']]) and $value['is_required'] == 'on') { $field_name = isset($field_types[$value['field_atrribute']]['field_name']) ? $field_types[$value['field_atrribute']]['field_name'] : false; if ($field_name) { if (is_array($field_name)) { foreach ($field_name as $v) { if (!STInput::request($v)) { $message .= sprintf(__('%s is required', ST_TEXTDOMAIN), $value['title']) . '<br>'; $pass_validate = false; } } } elseif (is_string($field_name)) { if (!STInput::request($field_name)) { $message .= sprintf(__('%s is required', ST_TEXTDOMAIN), $value['title']) . '<br>'; $pass_validate = false; } } } } } if ($message) { $message = substr($message, 0, -4); STTemplate::set_message($message, 'danger'); } } $is_required_country = st()->get_option('is_required_country', 'off'); if ($is_required_country == 'on') { if (STInput::request('county_pick_up') != STInput::request('county_drop_off') or !STInput::request('county_drop_off') or !STInput::request('county_pick_up')) { STTemplate::set_message(__('Pick-up and Drop-off are not in the same country. Please re-check it.', ST_TEXTDOMAIN), 'danger'); $pass_validate = false; } } $today = strtotime(date('m/d/Y', time())); $check_in_unix = strtotime(TravelHelper::convertDateFormat($data_price_cars->date_time->pick_up_date)); $booking_period = intval(get_post_meta($item_id, 'cars_booking_period', true)); $period = STDate::date_diff($today, $check_in_unix); $var = $check_in_unix - $today; if ($var < 0) { STTemplate::set_message(__('You can not set check-in date in the past'), 'danger'); $pass_validate = false; } else { if ($booking_period && $period < $booking_period) { STTemplate::set_message(sprintf(__('Booking is only accepted %d day(s) before today.', ST_TEXTDOMAIN), $booking_period), 'danger'); $pass_validate = false; } } if (!$this->_is_slot_available($item_id, $check_in, $check_out)) { STTemplate::set_message(__('Sorry! This Car is not available.', ST_TEXTDOMAIN), 'danger'); $pass_validate = false; } //if($pickup) // Allow to be filtered $pass_validate = apply_filters('st_car_add_cart_validate', $pass_validate, $item_id, $number, $price_unit, $data); if ($pass_validate) { STCart::add_cart($item_id, $number, $price_unit, $data); } return $pass_validate; }
/** * * * */ 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; } }
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; } }