function trav_acc_send_confirmation_email($booking_no, $booking_pincode, $type = 'new', $subject = '', $description = '') { global $wpdb, $logo_url, $trav_options; $booking_data = trav_acc_get_booking_data($booking_no, $booking_pincode); if (!empty($booking_data)) { // server variables $admin_email = get_option('admin_email'); $home_url = esc_url(home_url()); $site_name = $_SERVER['SERVER_NAME']; $logo_url = esc_url($logo_url); $acc_book_conf_url = trav_acc_get_book_conf_url(); $booking_data['accommodation_id'] = trav_acc_clang_id($booking_data['accommodation_id']); $booking_data['room_type_id'] = trav_room_clang_id($booking_data['room_type_id']); // accommodation info $accommodation_name = get_the_title($booking_data['accommodation_id']); $accommodation_url = esc_url(trav_get_permalink_clang($booking_data['accommodation_id'])); $accommodation_thumbnail = get_the_post_thumbnail($booking_data['accommodation_id'], 'list-thumb'); $accommodation_address = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_address', true); $accommodation_city = trav_acc_get_city($booking_data['accommodation_id']); $accommodation_country = trav_acc_get_country($booking_data['accommodation_id']); $accommodation_phone = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_phone', true); $accommodation_email = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_email', true); $accommodation_room_name = esc_html(get_the_title($booking_data['room_type_id'])); if (empty($accommodation_address)) { $accommodation_address = $accommodation_city . ' ' . $accommodation_country; } $check_in = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_check_in', true); $check_out = get_post_meta($booking_data['accommodation_id'], 'trav_accommodation_check_out', true); $check_in_time = empty($check_in) ? $booking_data['date_from'] : $booking_data['date_from'] . ' ' . $check_in; $check_out_time = empty($check_out) ? $booking_data['date_to'] : $booking_data['date_to'] . ' ' . $check_out; // booking info $booking_no = $booking_data['booking_no']; $booking_pincode = $booking_data['pin_code']; $date_from = new DateTime($booking_data['date_from']); $date_to = new DateTime($booking_data['date_to']); $number1 = $date_from->format('U'); $number2 = $date_to->format('U'); $booking_nights = ($number2 - $number1) / (3600 * 24); $booking_checkin_time = date('l, F, j, Y', trav_strtotime($booking_data['date_from'])); $booking_checkout_time = date('l, F, j, Y', trav_strtotime($booking_data['date_to'])); $booking_rooms = $booking_data['rooms']; $booking_adults = $booking_data['adults']; $booking_kids = $booking_data['kids']; $booking_room_price = esc_html(trav_get_price_field($booking_data['room_price'] * $booking_data['exchange_rate'], $booking_data['currency_code'], 0)); $booking_tax = esc_html(trav_get_price_field($booking_data['tax'] * $booking_data['exchange_rate'], $booking_data['currency_code'], 0)); $booking_total_price = esc_html(trav_get_price_field($booking_data['total_price'] * $booking_data['exchange_rate'], $booking_data['currency_code'], 0)); $booking_deposit_price = esc_html($booking_data['deposit_price'] . $booking_data['currency_code']); $booking_deposit_paid = esc_html(empty($booking_data['deposit_paid']) ? 'No' : 'Yes'); $booking_update_url = esc_url(add_query_arg(array('booking_no' => $booking_data['booking_no'], 'pin_code' => $booking_data['pin_code']), $acc_book_conf_url)); // customer info $customer_first_name = $booking_data['first_name']; $customer_last_name = $booking_data['last_name']; $customer_email = $booking_data['email']; $customer_country_code = $booking_data['country_code']; $customer_phone = $booking_data['phone']; $customer_address = $booking_data['address']; $customer_city = $booking_data['city']; $customer_zip = $booking_data['zip']; $customer_country = $booking_data['country']; $customer_special_requirements = $booking_data['special_requirements']; $variables = array('home_url', 'site_name', 'logo_url', 'accommodation_name', 'accommodation_url', 'accommodation_thumbnail', 'accommodation_country', 'accommodation_city', 'accommodation_address', 'accommodation_phone', 'accommodation_email', 'accommodation_room_name', 'booking_no', 'booking_pincode', 'booking_nights', 'booking_checkin_time', 'booking_checkout_time', 'booking_rooms', 'booking_adults', 'booking_kids', 'booking_room_price', 'booking_tax', 'booking_total_price', 'booking_deposit_price', 'booking_deposit_paid', 'booking_update_url', 'customer_first_name', 'customer_last_name', 'customer_email', 'customer_country_code', 'customer_phone', 'customer_address', 'customer_city', 'customer_zip', 'customer_country', 'customer_special_requirements'); if (empty($subject)) { if ($type == 'new') { $subject = empty($trav_options['acc_confirm_email_subject']) ? 'Booking Confirmation Email Subject' : $trav_options['acc_confirm_email_subject']; } elseif ($type == 'update') { $subject = empty($trav_options['acc_update_email_subject']) ? 'Booking Updated Email Subject' : $trav_options['acc_update_email_subject']; } elseif ($type == 'cancel') { $subject = empty($trav_options['acc_cancel_email_subject']) ? 'Booking Canceled Email Subject' : $trav_options['acc_cancel_email_subject']; } } if (empty($description)) { if ($type == 'new') { $description = empty($trav_options['acc_confirm_email_description']) ? 'Booking Confirmation Email Description' : $trav_options['acc_confirm_email_description']; } elseif ($type == 'update') { $description = empty($trav_options['acc_update_email_description']) ? 'Booking Confirmation Email Description' : $trav_options['acc_update_email_description']; } elseif ($type == 'cancel') { $description = empty($trav_options['acc_cancel_email_description']) ? 'Booking Confirmation Email Description' : $trav_options['acc_cancel_email_description']; } } foreach ($variables as $variable) { $subject = str_replace("[" . $variable . "]", ${$variable}, $subject); $description = str_replace("[" . $variable . "]", ${$variable}, $description); } if (!empty($trav_options['acc_confirm_email_ical']) && $type == 'new') { $mail_sent = trav_send_ical_event($site_name, $admin_email, $customer_first_name . ' ' . $customer_last_name, $customer_email, $check_in_time, $check_out_time, $subject, $description, $accommodation_address); } else { $mail_sent = trav_send_mail($site_name, $admin_email, $customer_email, $subject, $description); } /* mailing function to business owner */ $bowner_address = ''; if (!empty($trav_options['acc_booked_notify_bowner'])) { if ($type == 'new') { $subject = empty($trav_options['acc_bowner_email_subject']) ? 'You received a booking' : $trav_options['acc_bowner_email_subject']; $description = empty($trav_options['acc_bowner_email_description']) ? 'Booking Details' : $trav_options['acc_bowner_email_description']; } elseif ($type == 'update') { $subject = empty($trav_options['acc_update_bowner_email_subject']) ? 'A booking is updated' : $trav_options['acc_update_bowner_email_subject']; $description = empty($trav_options['acc_update_bowner_email_description']) ? 'Booking Details' : $trav_options['acc_update_bowner_email_description']; } elseif ($type == 'cancel') { $subject = empty($trav_options['acc_cancel_bowner_email_subject']) ? 'A booking is canceled' : $trav_options['acc_cancel_bowner_email_subject']; $description = empty($trav_options['acc_cancel_bowner_email_description']) ? 'Booking Details' : $trav_options['acc_cancel_bowner_email_description']; } foreach ($variables as $variable) { $subject = str_replace("[" . $variable . "]", ${$variable}, $subject); $description = str_replace("[" . $variable . "]", ${$variable}, $description); } if (!empty($accommodation_email)) { $bowner_address = $accommodation_email; } else { $post_author_id = get_post_field('post_author', $booking_data['accommodation_id']); $bowner = get_user_by('id', $post_author_id); if (!empty($bowner)) { $bowner_address = $bowner->user_email; } } if (!empty($bowner_address)) { trav_send_mail($site_name, $admin_email, $bowner_address, $subject, $description); } } /* mailing function to admin */ if (!empty($trav_options['acc_booked_notify_admin'])) { if ($bowner_address != $admin_email) { if ($type == 'new') { $subject = empty($trav_options['acc_admin_email_subject']) ? 'You received a booking' : $trav_options['acc_admin_email_subject']; $description = empty($trav_options['acc_admin_email_description']) ? 'Booking Details' : $trav_options['acc_admin_email_description']; } elseif ($type == 'update') { $subject = empty($trav_options['acc_update_admin_email_subject']) ? 'A booking is updated' : $trav_options['acc_update_admin_email_subject']; $description = empty($trav_options['acc_update_admin_email_description']) ? 'Booking Details' : $trav_options['acc_update_admin_email_description']; } elseif ($type == 'cancel') { $subject = empty($trav_options['acc_cancel_admin_email_subject']) ? 'A booking is canceled' : $trav_options['acc_cancel_admin_email_subject']; $description = empty($trav_options['acc_cancel_admin_email_description']) ? 'Booking Details' : $trav_options['acc_cancel_admin_email_description']; } foreach ($variables as $variable) { $subject = str_replace("[" . $variable . "]", ${$variable}, $subject); $description = str_replace("[" . $variable . "]", ${$variable}, $description); } trav_send_mail($site_name, $admin_email, $admin_email, $subject, $description); } } return true; } return false; }
function trav_acc_get_room_detail_html($room_type_id, $type = 'all', $room_price = 0, $number_of_days = 0, $rooms = 0) { // available type - all,available,not_available,not_match $room_type_id = trav_room_clang_id($room_type_id); ?> <article class="box"> <figure class="col-sm-4 col-md-3"> <a class="hover-effect popup-gallery" data-post_id="<?php echo esc_attr($room_type_id); ?> " href="#" title="<?php echo __('popup gallery', 'trav'); ?> "><?php echo get_the_post_thumbnail($room_type_id, 'list-thumb'); ?> </a> </figure> <div class="details col-xs-12 col-sm-8 col-md-9"> <div> <div> <div class="box-title"> <h4 class="title"><a href="<?php echo esc_url(get_permalink($room_type_id)); ?> "><?php echo esc_html(get_the_title($room_type_id)); ?> </a></h4> <dl class="description"> <?php $max_adults = get_post_meta($room_type_id, 'trav_room_max_adults', true); if (!empty($max_adults)) { ?> <dt><?php _e('Max Guests', 'trav'); ?> :</dt> <dd><?php echo esc_html($max_adults); ?> </dd> <?php } ?> <?php $max_kids = get_post_meta($room_type_id, 'trav_room_max_kids', true); if (!empty($max_kids)) { ?> <dt><?php _e('Max Kids', 'trav'); ?> :</dt> <dd><?php echo esc_html($max_kids); ?> </dd> <?php } ?> </dl> </div> <div class="amenities"> <?php $facilities = wp_get_post_terms($room_type_id, 'amenity'); $amenity_icons = get_option("amenity_icon"); foreach ($facilities as $facility) { if (is_array($amenity_icons) && isset($amenity_icons[$facility->term_id])) { if (isset($amenity_icons[$facility->term_id]['uci'])) { echo '<img alt="amenity-image" class="custom_amenity" title="' . esc_attr($facility->name) . '" src="' . esc_url($amenity_icons[$facility->term_id]['url']) . '" height="28">'; } else { if (isset($amenity_icons[$facility->term_id]['icon'])) { $_class = " circle"; $_class = $amenity_icons[$facility->term_id]['icon'] . $_class; echo '<i class="' . esc_attr($_class) . '" title="' . esc_attr($facility->name) . '"></i>'; } } } } ?> </div> </div> <div class="price-section"> <span class="price"> <?php if ($type == 'available') { ?> <small> <?php if ($number_of_days == 0 && $rooms == 0) { echo __('PER/NIGHT', 'trav'); } else { echo esc_html($number_of_days . ' ' . __('Nights', 'trav')) . '<br />' . esc_html($rooms . ' ' . __('Rooms', 'trav')); } ?> </small> <?php echo esc_html(trav_get_price_field($room_price)); } ?> </span> </div> </div> <div> <div class="entry-content"> <?php $post = get_post($room_type_id); $content = apply_filters('the_content', $post->post_content); echo wp_kses_post($content); ?> </div> <div class="action-section"> <?php if ($type == 'available') { ?> <button title="<?php _e('book now', 'trav'); ?> " class="button btn-small full-width text-center btn-book-now" data-room-type-id="<?php echo esc_attr($room_type_id); ?> "><?php _e('BOOK NOW', 'trav'); ?> </button> <?php } elseif ($type == 'all') { ?> <a href="#" title="<?php _e('show price', 'trav'); ?> " class="button btn-small full-width text-center btn-show-price" data-room-type-id="<?php echo esc_attr($room_type_id); ?> "><?php _e('SHOW PRICE', 'trav'); ?> </a> <?php } elseif ($type == 'not_available') { ?> <h4><?php echo __('Sold Out', 'trav'); ?> </h4> <?php } elseif ($type == 'not_match') { ?> <h4><?php echo __('Exceeds Max Guests', 'trav'); ?> </h4> <?php } ?> </div> </div> </div> </article> <?php }
<div class="selector validation-field"> <select name="room_type_id" class="full-width" data-original-val="<?php echo esc_attr($room_type_id); ?> "> <?php $return_value = trav_acc_get_available_rooms($acc_id, $booking_data['date_from'], $booking_data['date_to'], $booking_data['rooms'], $booking_data['adults'], $booking_data['kids'], $booking_data['child_ages'], $booking_data['booking_no'], $booking_data['pin_code']); if (!empty($return_value) && is_array($return_value)) { foreach ($return_value['bookable_room_type_ids'] as $room_id) { $room_price = 0; foreach ($return_value['check_dates'] as $check_date) { $room_price += (double) $return_value['prices'][$room_id][$check_date]['total']; } $room_price *= 1 + $tax_rate / 100; $selected = ''; $room_id_lang = trav_room_clang_id($room_id); if ($room_id_lang == $room_type_id) { $selected = 'selected'; } echo '<option value="' . esc_attr($room_id) . '" ' . esc_attr($selected) . '>' . esc_html(get_the_title($room_id_lang) . ' (' . trav_get_price_field($room_price, $booking_data['currency_code'], 0) . ')') . '</option>'; } } ?> </select> </div> </div> <div class="col-xs-12"> <button id="update_booking_room" data-animation-duration="1" data-animation-type="bounce" class="full-width icon-check animated bounce" type="submit"><?php _e("CHANGE ROOM", "trav"); ?> </button>
/** * Accommodation Booking Confirmation Template */ global $wpdb; global $booking_data, $acc_id, $room_type_id, $deposit_rate, $date_from, $date_to; if (!isset($_REQUEST['booking_no']) || !isset($_REQUEST['pin_code'])) { do_action('trav_acc_conf_wrong_data'); exit; } if (!($booking_data = trav_acc_get_booking_data($_REQUEST['booking_no'], $_REQUEST['pin_code']))) { do_action('trav_acc_conf_wrong_data'); exit; } $acc_id = trav_acc_clang_id($booking_data['accommodation_id']); $room_type_id = trav_room_clang_id($booking_data['room_type_id']); $deposit_rate = get_post_meta($acc_id, 'trav_accommodation_security_deposit', true); $deposit_rate = empty($deposit_rate) ? 0 : $deposit_rate; $date_from = trav_tophptime($booking_data['date_from']); $date_to = trav_tophptime($booking_data['date_to']); if (!is_array($booking_data['child_ages'])) { $booking_data['child_ages'] = unserialize($booking_data['child_ages']); } $query_args = array('date_from' => $date_from, 'date_to' => $date_to, 'rooms' => $booking_data['rooms'], 'adults' => $booking_data['adults'], 'kids' => $booking_data['kids'], 'child_ages' => $booking_data['child_ages'], 'edit_booking_no' => $booking_data['booking_no'], 'pin_code' => $booking_data['pin_code']); // if deposit is required and it is not paid process payment if (!empty($deposit_rate) && empty($booking_data['deposit_paid'])) { // init payment variables $ItemName = ''; if ($deposit_rate < 100) { $ItemName = sprintf(__('Deposit(%d%%) for ', 'trav'), $deposit_rate); } else {