Force gap between bookings
Normally to force a gap between bookings you just create timeslots with gaps between them like..
When using Service based duration to offer variable length bookings, this technique does not work as bookings are not constrained by timeslot boundaries.
This How-to shows how to hard code the validation to fail unless there is a gap.
Essentially, a 'gap of x minutes between bookings' = 'do not allow a booking which start or ends less than x minutes before the next booking'.
Note: This is a validation change, it does not change the way bookings are displayed so the customer will not be told they have a conflict until they hit submit (or add to cart).
Edit file: \components\com_rsappt_pro3\fe_val.php
Around line 221 look for:
$mystartdatetime = "STR_TO_DATE('".$startdate ." ". $starttime ."', '%Y-%m-%d %T')+ INTERVAL 1 SECOND";
$myenddatetime = "STR_TO_DATE('".$enddate ." ". $endtime ."', '%Y-%m-%d %T')- INTERVAL 1 SECOND";
This code is looking for other bookings in conflict with the new one.
By changing the INTERVAL you can expand the range it see as a conflict.
Say you want a 15 min gap left after every booking.
The INTERVAL is in seconds so 15 minutes = 900 seconds (15x60)
Change the code to be:
$mystartdatetime = "STR_TO_DATE('".$startdate ." ". $starttime ."', '%Y-%m-%d %T') - INTERVAL 899 SECOND";
$myenddatetime = "STR_TO_DATE('".$enddate ." ". $endtime ."', '%Y-%m-%d %T')+ INTERVAL 899 SECOND";
Note: you are changing the sign and changing the number from 1 to your desired gap -1.
Now the attempt to book a timeslot will not be allowed if there is already a booking within 15 min of the start/end of this one.