2013-12-10 35 views
0

我目前正在預訂網站上工作。我正在使用PHP貝加爾CalDav服務器(修改它)。當通過Mozilla Thunderbird或iCal生成時,由Baikal生成的ical文件將VCALENDAR(每個事件)文件作爲mysql中的中間blob存儲在單列中。 此外,我網站上的預訂也存儲爲VCALENDAR文件。PHP + CalDav + ICS Room Timeslot算法?

如果我想檢查一個房間是否可用,我必須獲取每個與room_id匹配的VCALENDAR文件,並從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

直接查詢SabreDAV。它針對基於時間的查詢進行了高度優化。如果您執行REPORT HTTP請求,並篩選開始和結束時間,它將只返回與該時間範圍重疊的事件。

你甚至可以要求它抓取該時間範圍內的所有事件,並將其轉化爲VFREEBUSY報告,該報告基本上是一個簡化的VCALENDAR,它清楚地列出哪些時隙已打開且未打開。

你可以在CalDAV specification

找到更多關於這些報告的信息