Require bookings to be at least 5 days ahead

Guests could previously book for the same day or tomorrow. The earliest
selectable date is now today + 5 days, configured in one place via the
BOOKING_MIN_LEAD_DAYS constant.

- constants.php: new BOOKING_MIN_LEAD_DAYS define (5)
- Service_model::getAvailableTimes(): optional $minLeadDays param, returns
  no slots for dates closer than that; defaults to 0 so existing callers
  are unaffected
- Pages::ajax(): guest actions (getAvailableTimes, isTimeAvailable) pass the
  constant. The admin action getAvailableTimeOptions deliberately does not,
  so staff can still enter phone bookings for tomorrow.
- Pages::booking_process(): rejects an early booking_date POST and redirects
  back to /booking, guarding against a stale page or a crafted request
- booking-form.php: datepicker minDate/defaultDate and the hidden
  booking_date default all derive from the constant

Deployed and verified on test, dev and prod.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MyYsTAAA1kJLMLCResmgTE
This commit is contained in:
Astral04
2026-08-06 11:01:44 +00:00
co-authored by Claude Opus 5
parent 4e1a69c8d4
commit 69ec9e62a6
4 changed files with 31 additions and 5 deletions
+7 -1
View File
@@ -342,7 +342,7 @@ class Service_model extends CI_Model {
}
}
public function getAvailableTimes($group_id, $selectedDate, $servicelength){
public function getAvailableTimes($group_id, $selectedDate, $servicelength, $minLeadDays = 0){
$this->load->database();
$serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength);
$service_length_time = strtotime($servicelength);
@@ -366,6 +366,12 @@ class Service_model extends CI_Model {
$selectedDay=date_create($selectedDate);
$dateDiff=date_diff($today,$selectedDay);
//minimum booking lead time - no times offered before today + $minLeadDays days.
//$minLeadDays = 0 means no restriction (admin portal).
if($minLeadDays > 0 && intval($dateDiff->format('%R%a')) < $minLeadDays){
return array();
}
$tmpDateStart = date_create(date('2024-02-29'));
$tmpDateEnd = date_create(date('2024-03-07'));