2013-12-10 4 views
0

В настоящее время я работаю на сайте бронирования. Я использую PHP Baikal CalDav Server (модифицировал его). Файл, созданный Байкалом, хранит файл VCALENDAR (каждый случай) в одном столбце как средний blob в mysql при генерации его через Mozilla Thunderbird или iCal. Кроме того, мои заказы на моем сайте также хранятся в файле VCALENDAR.PHP + CalDav + ICS Room Временной алгоритм?

Если я хочу проверить, доступна ли комната, я должен извлечь каждый файл VCALENDAR, соответствующий файлу room_id, и извлечь информацию из VCALENDAR. Я не знаю, является ли эта операция слишком дорогостоящей. Я пытаюсь «очистить» базу данных от VCALENDARS, которые уже используются и не повторяются.

I have to open the room_id opening hours VCALENDAR -> extract data with Sabre process 

For Loop through Exception VCALENDAR -> extract data with Sabre process 

For Loop through Baikal VCALENDAR -> extract data with Sabre process 

For Loop through Bookings VCALENDAR -> extract data with Sabre process 

-> Process All -> Return Result, if room is free in the given time. 

ли их какие-либо интеллектуальные алгоритмы, которые проверяют наличие номеров в данном временном интервале, при наличии файлов Ics (часы работы, исключение, бронирование, байкальские оговорки)?

Спасибо!

ответ

1

Query SabreDAV напрямую. Он оптимизирован для запросов, основанных на времени. Если вы выполняете HTTP-запросОТЧЕТ и фильтруете его для начала и окончания, он будет возвращать только события, которые перекрываются с этим временным диапазоном.

Вы можете даже попросить его захватить все события в этом таймере и превратить его в отчет VFREEBUSY, который представляет собой упрощенную VCALENDAR, в которой перечислены точно, какие временные интервалы открыты и не открыты.

Дополнительную информацию об этих отчетах вы найдете в CalDAV specification