function srvc_book_is_timeslot_blocked($vdate, $timeslot) { $cur_date = date("Ymd", time()); if ($cur_date - $vdate > 0) { // before today return true; } else { if ($cur_date == $vdate) { $dayOfWeek = date("N", time()); $hour_buffer = $dayOfWeek == 6 || $dayOfWeek == 7 ? HOUR_BUFFER_4_BOOK_WEEKEND : HOUR_BUFFER_4_BOOK_WEEKDAY; // only the hours after HOUR_BUFFER_4_BOOK is available $bar_time = time() + SEC_PER_HOUR * $hour_buffer; $bar_timeslot = date("H", $bar_time) * MIN_PER_HOUR + date("i", $bar_time); if ($bar_timeslot - $timeslot > 0) { return true; } } } $err = impl_book_timeslot_is_locked($vdate, $timeslot); return $err; }
function impl_book_query_lock($prev_n, $next_n, &$result_arr) { $begin_day = time() - $prev_n * SEC_PER_DAY; for ($k = 0; $k < $prev_n + $next_n; $k++) { $blocked_slots = []; $blocked_slots_len = 0; $cur = $begin_day + $k * SEC_PER_DAY; $vdate = date("Ymd", $cur); if (impl_book_date_is_locked($vdate)) { $blocked_slots[] = "all"; $blocked_slots_len++; } for ($cur_hour = OPEN_HOUR_BEGIN; $cur_hour <= OPEN_HOUR_END; $cur_hour += OPEN_HOUR_SLOT) { if (impl_book_timeslot_is_locked($vdate, $cur_hour)) { $blocked_slots[] = $cur_hour; $blocked_slots_len++; } } if ($blocked_slots_len > 0) { $result_arr[$vdate] = $blocked_slots; } } return BOOK_CODE_OK; }