get_rates_range($current_room, $start_date, $end_date); $availability = EB_AP_Availability::instance()->get_availability_range($current_room, $start_date, $end_date); $deals = EB_AP_Deals::instance()->get_room_deals($current_room, true); // Create associative arrays for quick lookup $rates_by_date = array(); $availability_by_date = array(); foreach ($rates as $rate) { $rates_by_date[$rate['rate_date']] = $rate; } foreach ($availability as $avail) { $availability_by_date[$avail['availability_date']] = $avail; } // Get active deals for the date range $active_deals = array(); foreach ($deals as $deal) { if ($deal['date_from'] <= $end_date && $deal['date_to'] >= $start_date) { $active_deals[] = $deal; } } // Generate calendar data $calendar_data = array(); $current_date = new DateTime($start_date); $end_date_obj = new DateTime($end_date); while ($current_date <= $end_date_obj) { $date_str = $current_date->format('Y-m-d'); $calendar_data[] = array( 'date' => $date_str, 'formatted_date' => $current_date->format('M j'), 'day_name' => $current_date->format('D'), 'rates' => isset($rates_by_date[$date_str]) ? $rates_by_date[$date_str] : null, 'availability' => isset($availability_by_date[$date_str]) ? $availability_by_date[$date_str] : null, 'is_weekend' => in_array($current_date->format('N'), array(6, 7)) ); $current_date->add(new DateInterval('P1D')); } ?>
| ' . __('Blocked', 'eb-advanced-pricing') . ''; } elseif ($availability && $availability['closed_to_arrival']) { echo '' . __('CTA', 'eb-advanced-pricing') . ''; } elseif ($availability && $availability['closed_to_departure']) { echo '' . __('CTD', 'eb-advanced-pricing') . ''; } elseif ($availability && $availability['available_rooms'] == 0) { echo '' . __('Sold Out', 'eb-advanced-pricing') . ''; } else { echo '' . __('Available', 'eb-advanced-pricing') . ''; } ?> |
|