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_get_user_booking_list($user_id, $status = 1, $sortby = 'created', $order = 'desc') { global $wpdb, $trav_options; $sql = ''; $order = $order == 'desc' ? 'desc' : 'asc'; $order_by = ' ORDER BY ' . esc_sql($sortby) . ' ' . $order; $where = ' WHERE 1=1'; $where .= ' AND user_id=' . esc_sql($user_id); if ($status != -1) { $where .= ' AND status=' . esc_sql($status); } // $sql = $wpdb->prepare( 'SELECT * FROM ' . TRAV_ACCOMMODATION_BOOKINGS_TABLE . $where . $order_by, $user_id ); $available_modules = trav_get_available_modules(); $sqls = array(); if (in_array('accommodation', $available_modules)) { $sqls[] = "SELECT 'accommodation' AS post_type, booking_no, pin_code, total_price, created, status, accommodation_id AS post_id, date_from AS event_date, adults, rooms AS tickets FROM " . TRAV_ACCOMMODATION_BOOKINGS_TABLE . $where; } if (in_array('tour', $available_modules)) { $sqls[] = "SELECT 'tour' AS post_type, booking_no, pin_code, total_price, created, status, tour_id AS post_id, tour_date AS event_date, adults, NULL AS tickets FROM " . TRAV_TOUR_BOOKINGS_TABLE . $where; } $sql = implode(' UNION ALL ', $sqls); $sql .= $order_by; //return $sql; $booking_list = $wpdb->get_results($sql); if (empty($booking_list)) { return __('You don\'t have any booked trips yet.', 'trav'); } // if empty return false $acc_book_conf_url = trav_acc_get_book_conf_url(); $tour_book_conf_url = trav_tour_get_book_conf_url(); $html = ''; foreach ($booking_list as $booking_data) { $class = ''; $label = 'UPCOMMING'; if ($booking_data->status == 0) { $class = ' cancelled'; $label = 'CANCELLED'; } if ($booking_data->status == 2) { $class = ' completed'; $label = 'COMPLETED'; } // if ( ( $booking_data->status == 1 ) && ( trav_strtotime( $booking_data->event_date ) < trav_strtotime(date('Y-m-d')) ) ) { $class = ' completed'; $label = 'COMPLETED'; } $html .= '<div class="booking-info clearfix' . $class . '">'; $html .= '<div class="date"> <label class="month">' . date('M', trav_strtotime($booking_data->event_date)) . '</label> <label class="date">' . date('d', trav_strtotime($booking_data->event_date)) . '</label> <label class="day">' . date('D', trav_strtotime($booking_data->event_date)) . '</label> </div>'; $conf_url = ''; $icon_class = ''; if ('accommodation' == $booking_data->post_type) { $conf_url = $acc_book_conf_url; $icon_class = 'soap-icon-hotel blue-color'; } elseif ('tour' == $booking_data->post_type) { $conf_url = $tour_book_conf_url; $icon_class = 'soap-icon-beach yellow-color'; } $url = empty($conf_url) ? '' : add_query_arg(array('booking_no' => $booking_data->booking_no, 'pin_code' => $booking_data->pin_code), $conf_url); $html .= '<h4 class="box-title">'; $html .= '<i class="icon circle ' . $icon_class . '"></i>'; $html .= '<a href="' . esc_url($url) . '">' . get_the_title(trav_acc_clang_id($booking_data->post_id)) . '</a>'; $html .= '<small>'; if ('accommodation' == $booking_data->post_type) { $html .= $booking_data->tickets . __('rooms', 'trav') . ' '; } $html .= $booking_data->adults . __('adults', 'trav') . '</small></h4>'; $html .= '<button class="btn-mini status">' . __($label, 'trav') . '</button>'; $html .= '<dl class="info">'; $html .= '<dt>' . __('booked on', 'trav') . '</dt>'; $html .= '<dd>' . date('l, M, j, Y', trav_strtotime($booking_data->created)) . '</dd>'; $html .= '</dl>'; $html .= '<dl class="info">'; $html .= '<dt>' . __('BOOKING NO', 'trav') . '</dt><dd>' . $booking_data->booking_no . '</dd>'; $html .= '<dt>' . __('PIN CODE', 'trav') . '</dt><dd>' . $booking_data->pin_code . '</dd>'; $html .= '</dl>'; $html .= '</div>'; } return $html; }