function do_add_to_cart() { $pass_validate = TRUE; $item_id = intval(STInput::request('item_id', '')); if ($item_id <= 0 || get_post_type($item_id) != 'st_hotel') { STTemplate::set_message(__('This hotel is not available.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $room_id = intval(STInput::request('room_id', '')); if ($room_id <= 0 || get_post_type($room_id) != 'hotel_room') { STTemplate::set_message(__('This room is not available.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $check_in = STInput::request('check_in', ''); if (empty($check_in)) { STTemplate::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $check_in = TravelHelper::convertDateFormat($check_in); $check_out = STInput::request('check_out', ''); if (empty($check_out)) { STTemplate::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $check_out = TravelHelper::convertDateFormat($check_out); $room_num_search = intval(STInput::request('room_num_search', '')); if ($room_num_search <= 0) { $room_num_search = 1; } $adult_number = intval(STInput::request('adult_number', '')); if ($adult_number <= 0) { $adult_number = 1; } $child_number = intval(STInput::request('child_number', '')); if ($child_number <= 0) { $child_number = 0; } $checkin_ymd = date('Y-m-d', strtotime($check_in)); $checkout_ymd = date('Y-m-d', strtotime($check_out)); if (!HotelHelper::check_day_cant_order($room_id, $checkin_ymd, $checkout_ymd, $room_num_search)) { STTemplate::set_message(sprintf(__('This room is not available from %s to %s.', ST_TEXTDOMAIN), $checkin_ymd, $checkout_ymd), 'danger'); $pass_validate = FALSE; return false; } if (!HotelHelper::_check_room_available($room_id, $checkin_ymd, $checkout_ymd, $room_num_search)) { STTemplate::set_message(__('This room is not available.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } if (strtotime($check_out) - strtotime($check_in) <= 0) { STTemplate::set_message(__('The check-out is later than the check-in.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $num_room = intval(get_post_meta($room_id, 'number_room', true)); $adult = intval(get_post_meta($room_id, 'adult_number', true)); $children = intval(get_post_meta($room_id, 'children_number', true)); if ($room_num_search > $num_room) { STTemplate::set_message(__('Max of rooms are incorrect.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } if ($adult_number > $adult) { STTemplate::set_message(sprintf(__('Max of adults is %d people.', ST_TEXTDOMAIN), $adult), 'danger'); $pass_validate = FALSE; return false; } if ($child_number > $children) { STTemplate::set_message(__('Number of children in the room are incorrect.', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } $today = date('m/d/Y'); $period = TravelHelper::dateDiff($today, $check_in); $booking_min_day = intval(get_post_meta($item_id, 'min_book_room', true)); $compare = TravelHelper::dateCompare($today, $check_in); $booking_period = get_post_meta($item_id, 'hotel_booking_period', true); if (empty($booking_period) || $booking_period <= 0) { $booking_period = 0; } if ($compare < 0) { STTemplate::set_message(__('You can not set check-in date in the past', ST_TEXTDOMAIN), 'danger'); $pass_validate = FALSE; return false; } if ($period < $booking_period) { STTemplate::set_message(sprintf(__('This hotel allow minimum booking is %d day(s)', ST_TEXTDOMAIN), $booking_period), 'danger'); $pass_validate = FALSE; return false; } if ($booking_min_day and $booking_min_day > TravelHelper::dateDiff($check_in, $check_out)) { STTemplate::set_message(sprintf(__('Please booking at least %d day(s)', ST_TEXTDOMAIN), $booking_min_day), 'danger'); $pass_validate = false; return false; } $item_price = floatval(get_post_meta($room_id, 'price', true)); // Extra price added in the new version 1.1.9 $extras = STInput::request('extra_price', array()); $numberday = TravelHelper::dateDiff($check_in, $check_out); $extra_price = STPrice::getExtraPrice($extras, $room_num_search, $numberday); $sale_price = STPrice::getRoomPrice($room_id, strtotime($check_in), strtotime($check_out), $room_num_search); $discount_rate = STPrice::get_discount_rate($room_id, strtotime($check_in)); $data = array('item_price' => $item_price, 'ori_price' => $sale_price + $extra_price, 'check_in' => $check_in, 'check_out' => $check_out, 'room_num_search' => $room_num_search, 'room_id' => $room_id, 'adult_number' => $adult_number, 'child_number' => $child_number, 'extras' => $extras, 'extra_price' => $extra_price, 'commission' => TravelHelper::get_commission(), 'discount_rate' => $discount_rate); if ($pass_validate) { $pass_validate = apply_filters('st_hotel_add_cart_validate', $pass_validate, $data); } if ($pass_validate) { STCart::add_cart($item_id, $room_num_search, $sale_price + $extra_price, $data); } return $pass_validate; }
public function _check_validate() { $data = array(); $order_item_id = STInput::request('order_item_id', ''); $st_first_name = STInput::request('st_first_name', ''); if (empty($st_first_name)) { STAdmin::set_message(__('The firstname field is not empty.', ST_TEXTDOMAIN), 'danger'); return false; } $st_last_name = STInput::request('st_last_name', ''); if (empty($st_last_name)) { STAdmin::set_message(__('The lastname field is not empty.', ST_TEXTDOMAIN), 'danger'); return false; } $st_email = STInput::request('st_email', ''); if (empty($st_email)) { STAdmin::set_message(__('The email field is not empty.', ST_TEXTDOMAIN), 'danger'); return false; } if (!filter_var($st_email, FILTER_VALIDATE_EMAIL)) { STAdmin::set_message(__('Invalid email format.', ST_TEXTDOMAIN), 'danger'); return false; } $st_phone = STInput::request('st_phone', ''); if (empty($st_phone)) { STAdmin::set_message(__('The phone field is not empty.', ST_TEXTDOMAIN), 'danger'); return false; } if (STInput::request('section', '') != 'edit_order_item') { $item_id = intval(STInput::request('item_id', '')); if ($item_id <= 0 || get_post_type($item_id) != 'st_hotel') { STAdmin::set_message(__('This hotel is not available.', ST_TEXTDOMAIN), 'danger'); return false; } $room_id = intval(STInput::request('room_id', '')); if ($room_id <= 0 || get_post_type($room_id) != 'hotel_room' || get_post_meta($room_id, 'room_parent', true) != $item_id) { STAdmin::set_message(__('This room is not available.', ST_TEXTDOMAIN), 'danger'); return false; } $check_in = STInput::request('check_in', ''); if (empty($check_in)) { STAdmin::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger'); return false; } $check_out = STInput::request('check_out', ''); if (empty($check_out)) { STAdmin::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger'); return false; } if (STInput::request('item_number', '') == "") { STAdmin::set_message(__('The number of room field is not empty', ST_TEXTDOMAIN), 'danger'); return false; } $room_num_search = intval(STInput::request('item_number', '')); if ($room_num_search <= 0) { $room_num_search = 1; } if (STInput::request('adult_number', '') == "") { STAdmin::set_message(__('The No. adults field is not empty', ST_TEXTDOMAIN), 'danger'); return false; } $adult_number = intval(STInput::request('adult_number', '')); if ($adult_number <= 0) { $adult_number = 1; } if (STInput::request('child_number', '') == "") { STAdmin::set_message(__('The No. children field is not empty', ST_TEXTDOMAIN), 'danger'); return false; } $child_number = intval(STInput::request('child_number', '')); if ($child_number <= 0) { $child_number = 0; } if (strtotime($check_out) - strtotime($check_in) <= 0) { STAdmin::set_message(__('The check-out is later than the check-in.', ST_TEXTDOMAIN), 'danger'); return false; } $num_room = intval(get_post_meta($room_id, 'number_room', true)); $adult = intval(get_post_meta($room_id, 'adult_number', true)); $children = intval(get_post_meta($room_id, 'children_number', true)); if ($room_num_search > $num_room) { STAdmin::set_message(__('Max of rooms are incorrect.', ST_TEXTDOMAIN), 'danger'); return false; } if ($adult_number > $adult) { STAdmin::set_message(__('Number of adults in the room are incorrect.', ST_TEXTDOMAIN), 'danger'); return false; } if ($child_number > $children) { STAdmin::set_message(__('Number of children in the room are incorrect.', ST_TEXTDOMAIN), 'danger'); return false; } $today = date('m/d/Y'); $period = TravelHelper::dateDiff($today, $check_in); $compare = TravelHelper::dateCompare($today, $check_in); $booking_period = get_post_meta($item_id, 'hotel_booking_period', true); if (empty($booking_period) || $booking_period <= 0) { $booking_period = 0; } if ($compare < 0) { STAdmin::set_message(__('You can not set check-in date in the past', ST_TEXTDOMAIN), 'danger'); return false; } if ($period < $booking_period) { STAdmin::set_message(sprintf(__('This hotel allow minimum booking is %d day(s)', ST_TEXTDOMAIN), $booking_period), 'danger'); return false; } $checkin_ymd = date('Y-m-d', strtotime($check_in)); $checkout_ymd = date('Y-m-d', strtotime($check_out)); if (!HotelHelper::check_day_cant_order($room_id, $checkin_ymd, $checkout_ymd, $room_num_search)) { STAdmin::set_message(sprintf(__('This room is not available from %s to %s.', ST_TEXTDOMAIN), $checkin_ymd, $checkout_ymd), 'danger'); $pass_validate = FALSE; return false; } if (!HotelHelper::_check_room_available($room_id, $checkin_ymd, $checkout_ymd, $room_num_search, $order_item_id)) { STAdmin::set_message(__('You can not book this room.', ST_TEXTDOMAIN), 'danger'); return false; } $data = array('order_item_id' => $order_item_id, 'item_id' => $item_id, 'type' => 'normal_booking', 'check_in' => $check_in, 'check_out' => $check_out, 'st_booking_post_type' => 'st_hotel', 'st_booking_id' => $item_id, 'room_id' => $room_id, 'adult_number' => $adult_number, 'child_number' => $child_number, 'room_num_search' => $room_num_search, 'check_in_timestamp' => strtotime($check_in), 'check_out_timestamp' => strtotime($check_out), 'status' => $_POST['status']); } return $data; }