function get_cruise_min_price($cruise_id, $cabin_type_id = 0, $date = null) { global $wpdb; $cruise_obj = new byt_cruise(intval($cruise_id)); $cruise_id = $cruise_obj->get_base_id(); if ($cabin_type_id > 0) { $cabin_type_obj = new byt_cabin_type(intval($cabin_type_id)); $cabin_type_id = $cabin_type_obj->get_base_id(); } if (!isset($date)) { $date = date('Y-m-d', time()); } $table_name_schedule = BOOKYOURTRAVEL_CRUISE_SCHEDULE_TABLE; $sql = "SELECT MIN(schedule.price) \r\n\t\t\t\tFROM {$table_name_schedule} schedule \r\n\t\t\t\tWHERE cruise_id=%d "; if ($cabin_type_id > 0) { $sql .= $wpdb->prepare(" AND cabin_type_id=%d ", $cabin_type_id); } if ($cruise_obj->get_type_is_repeated() == 0) { // this cruise is a one off and is not repeated. If start date is missed, person cannot participate. $sql .= $wpdb->prepare(" AND start_date > %s ", $date); } else { // daily, weekly, weekdays cruises are recurring which means start date is important only in the sense that cruise needs to have become valid before we can get min price. } $sql = $wpdb->prepare($sql, $cruise_id); $min_price = $wpdb->get_var($sql); if (!$min_price) { $min_price = 0; } if ($cabin_type_id == 0) { $this->sync_cruise_min_price($cruise_id, $min_price); } return $min_price; }
function handle_form_submit() { global $byt_cruises_post_type, $byt_cabin_types_post_type; if (isset($_POST['insert']) && check_admin_referer('cruise_schedule_entry_form')) { $cruise_id = wp_kses($_POST['cruises_select'], ''); $cruise_obj = new byt_cruise(intval($cruise_id)); $cruise_id = $cruise_obj->get_base_id(); $cabin_type_id = isset($_POST['cabin_types_select']) ? wp_kses($_POST['cabin_types_select'], '') : 0; $cabin_type_obj = new byt_cabin_type(intval($cabin_type_id)); $cabin_type_id = $cabin_type_obj->get_base_id(); $cabin_count = isset($_POST['cabin_count']) ? intval(wp_kses($_POST['cabin_count'], '')) : 1; $is_price_per_person = $cruise_obj->get_is_price_per_person(); $cruise_type_is_repeated = $cruise_obj->get_type_is_repeated(); $start_date = wp_kses($_POST['start_date'], ''); $duration_days = intval(wp_kses($_POST['duration_days'], '')); $price = floatval(wp_kses($_POST['price'], '')); $price_child = floatval(wp_kses(isset($_POST['price_child']) ? $_POST['price_child'] : 0, '')); $end_date = isset($_POST['end_date']) ? wp_kses($_POST['end_date'], '') : null; $error = ''; if (empty($cruise_id)) { $error = __('You must select an cruise', 'bookyourtravel'); } else { if ($cabin_type_id <= 0) { $error = __('You must select a cabin type', 'bookyourtravel'); } else { if (empty($cabin_count) || $cabin_count === 0) { $error = __('You must provide a valid cabin count', 'bookyourtravel'); } else { if (empty($start_date)) { $error = __('You must select a schedule date', 'bookyourtravel'); } else { if (empty($duration_days) || $duration_days === 0) { $error = __('You must provide a duration in days', 'bookyourtravel'); } else { if (empty($price) || $price === 0) { $error = __('You must provide a valid price', 'bookyourtravel'); } } } } } } if (!empty($error)) { echo '<div class="error" id="message" onclick="this.parentNode.removeChild(this)">'; echo '<p>' . $error . '</p>'; echo '</div>'; } else { $byt_cruises_post_type->create_cruise_schedule($cruise_id, $cabin_type_id, $cabin_count, $start_date, $duration_days, $price, $price_child, $end_date); echo '<div class="updated" id="message" onclick="this.parentNode.removeChild(this)">'; echo '<p>' . __('Successfully inserted new cruise schedule entry!', 'bookyourtravel') . '</p>'; echo '</div>'; } } else { if (isset($_POST['update']) && check_admin_referer('cruise_schedule_entry_form')) { $cruise_id = wp_kses($_POST['cruises_select'], ''); $cruise_obj = new byt_cruise(intval($cruise_id)); $cruise_id = $cruise_obj->get_base_id(); $cabin_type_id = isset($_POST['cabin_types_select']) ? wp_kses($_POST['cabin_types_select'], '') : 0; $cabin_type_obj = new byt_cabin_type(intval($cabin_type_id)); $cabin_type_id = $cabin_type_obj->get_base_id(); $is_price_per_person = $cruise_obj->get_is_price_per_person(); $cabin_count = isset($_POST['cabin_count']) ? intval(wp_kses($_POST['cabin_count'], '')) : 1; $cruise_type_is_repeated = $cruise_obj->get_type_is_repeated(); $start_date = wp_kses($_POST['start_date'], ''); $duration_days = intval(wp_kses($_POST['duration_days'], '')); $price = floatval(wp_kses($_POST['price'], '')); $price_child = floatval(wp_kses(isset($_POST['price_child']) ? $_POST['price_child'] : 0, '')); $end_date = isset($_POST['end_date']) ? wp_kses($_POST['end_date'], '') : null; $error = ''; if (empty($cruise_id)) { $error = __('You must select an cruise', 'bookyourtravel'); } else { if ($cabin_type_id <= 0) { $error = __('You must select a cabin type', 'bookyourtravel'); } else { if (empty($cabin_count) || $cabin_count === 0) { $error = __('You must provide a valid cabin count', 'bookyourtravel'); } else { if (empty($start_date)) { $error = __('You must select a schedule date', 'bookyourtravel'); } else { if (empty($duration_days) || $duration_days === 0) { $error = __('You must provide a duration in days', 'bookyourtravel'); } else { if (empty($price) || $price === 0) { $error = __('You must provide a valid price', 'bookyourtravel'); } } } } } } if (!empty($error)) { echo '<div class="error" id="message" onclick="this.parentNode.removeChild(this)">'; echo '<p>' . $error . '</p>'; echo '</div>'; } else { $schedule_id = absint($_POST['schedule_id']); $byt_cruises_post_type->update_cruise_schedule($schedule_id, $cruise_id, $cabin_type_id, $cabin_count, $start_date, $duration_days, $price, $price_child, $end_date); echo '<div class="updated" id="message" onclick="this.parentNode.removeChild(this)">'; echo '<p>' . __('Successfully updated cruise schedule entry!', 'bookyourtravel') . '</p>'; echo '</div>'; } } else { if (isset($_POST['delete_schedule'])) { $schedule_id = absint($_POST['delete_schedule']); $byt_cruises_post_type->delete_cruise_schedule($schedule_id); echo '<div class="updated" id="message" onclick="this.parentNode.removeChild(this)">'; echo '<p>' . __('Successfully deleted cruise schedule entry!', 'bookyourtravel') . '</p>'; echo '</div>'; } } } }