Loading...
Searching...
No Matches
caldav-REPORT-freebusy.php
<?php
include_once("freebusy-functions.php");
$fbq_content = $xmltree->GetContent('urn:ietf:params:xml:ns:caldav:free-busy-query');
$fbq_start = $fbq_content[0]->GetAttribute('start');
$fbq_end = $fbq_content[0]->GetAttribute('end');
if ( ! ( isset($fbq_start) || isset($fbq_end) ) ) {
$request->DoResponse( 400, 'All valid freebusy requests MUST contain a time-range filter' );
}
if ( isset($fbq_start) ) {
$range_start = new RepeatRuleDateTime($fbq_start);
} else {
# RFC 4791 Section 9.9 says that if start isn't set, then -infinity
# should be used. We can't specify that in PHP, and
# expand_event_instances has '-6 weeks' as the default.
# That's a bit short, go for one year prior to end, if defined,
# otherwise 1 year prior to now now.
if ( isset($fbq_end) ) {
$range_start = new RepeatRuleDateTime($fbq_end);
} else {
$range_start = new RepeatRuleDateTime;
}
$range_start->modify('-365 days');
}
if ( isset($fbq_end) ) {
$range_end = new RepeatRuleDateTime($fbq_end);
} else {
# RFC 4791 Section 9.9 says that if end isn't set, then +infinity
# should be used. We can't specify that in PHP, and
# expand_event_instances has '+ 6 weeks' as the default. That's a
# bit short, go for two years from the start.
$range_end = clone($range_start);
$range_end->modify('+730 days');
}
$freebusy = get_freebusy( '^' . $request->path . $request->DepthRegexTail(true), $range_start, $range_end );
$result = new iCalComponent();
$result->VCalendar();
$result->AddComponent($freebusy);
$request->DoResponse( 200, $result->Render(), 'text/calendar' );
// Won't return from that
RepeatRuleDateTime
Definition RRule.php:210