From 711cd2899428bbab485222e60eb5661e0a02b085 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 8 Nov 2009 20:31:37 +1300 Subject: [PATCH] Add configuration for using new PROPFIND implementation. --- htdocs/caldav.php | 75 ++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/htdocs/caldav.php b/htdocs/caldav.php index 8795042e..eb4f0b36 100644 --- a/htdocs/caldav.php +++ b/htdocs/caldav.php @@ -4,14 +4,14 @@ * * @package davical * @subpackage caldav -* @author Andrew McMillan -* @copyright Catalyst .Net Ltd -* @license http://gnu.org/copyleft/gpl.html GNU GPL v2 +* @author Andrew McMillan +* @copyright Catalyst .Net Ltd, Morphoss Ltd +* @license http://gnu.org/copyleft/gpl.html GNU GPL v2 or later */ -require_once("../inc/always.php"); -dbg_error_log( "caldav", " User agent: %s", ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Unfortunately Mulberry does not send a 'User-agent' header with its requests :-(")) ); -dbg_log_array( "headers", '_SERVER', $_SERVER, true ); -require_once("HTTPAuthSession.php"); +require_once('../inc/always.php'); +dbg_error_log( 'caldav', ' User agent: %s', ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Unfortunately Mulberry does not send a "User-agent" header with its requests :-(')) ); +dbg_log_array( 'headers', '_SERVER', $_SERVER, true ); +require_once('HTTPAuthSession.php'); $session = new HTTPAuthSession(); /** @@ -22,54 +22,61 @@ if ( isset($c->override_dav_header) ) { $dav = $c->override_dav_header; } else { - $dav = "1, 2, 3, access-control, calendar-access, calendar-schedule, extended-mkcol"; + $dav = '1, 2, 3, access-control, calendar-access, calendar-schedule, extended-mkcol'; } -header( "DAV: $dav"); +header( 'DAV: '.$dav); -require_once("CalDAVRequest.php"); +require_once('CalDAVRequest.php'); $request = new CalDAVRequest(); $allowed = implode( ', ', array_keys($request->supported_methods) ); -header( "Allow: $allowed"); +header( 'Allow: '.$allowed); if ( ! ($request->IsPrincipal() || isset($request->collection) || $request->method == 'PUT' || $request->method == 'MKCALENDAR' || $request->method == 'MKCOL' ) ) { if ( preg_match( '#^/principals/users(/.*/)$#', $request->path, $matches ) ) { // Although this doesn't work with the iPhone, perhaps it will with iCal... /** @TODO: integrate handling this URL into CalDAVRequest.php */ $redirect_url = ConstructURL('/caldav.php'.$matches[1]); - dbg_error_log( "LOG WARNING", "Redirecting %s for '%s' to '%s'", $request->method, $request->path, $redirect_url ); - header("Location: $redirect_url" ); + dbg_error_log( 'LOG WARNING', 'Redirecting %s for "%s" to "%s"', $request->method, $request->path, $redirect_url ); + header('Location: '.$redirect_url ); exit(0); } - dbg_error_log( "LOG WARNING", "Attempt to %s url '%s' but no collection exists there.", $request->method, $request->path ); + dbg_error_log( 'LOG WARNING', 'Attempt to %s url "%s" but no collection exists there.', $request->method, $request->path ); if ( $request->method == 'GET' || $request->method == 'REPORT' ) { - $request->DoResponse( 404, translate("There is no collection at that URL.") ); + $request->DoResponse( 404, translate('There is no collection at that URL.') ); } } switch ( $request->method ) { - case 'OPTIONS': include_once("caldav-OPTIONS.php"); break; - case 'REPORT': include_once("caldav-REPORT.php"); break; - case 'PROPFIND': include_once("caldav-PROPFIND.php"); break; - case 'PROPPATCH': include_once("caldav-PROPPATCH.php"); break; - case 'MKCALENDAR': include_once("caldav-MKCOL.php"); break; - case 'MKCOL': include_once("caldav-MKCOL.php"); break; - case 'PUT': include_once("caldav-PUT.php"); break; - case 'POST': include_once("caldav-POST.php"); break; - case 'MOVE': include_once("caldav-MOVE.php"); break; - case 'GET': include_once("caldav-GET.php"); break; - case 'HEAD': include_once("caldav-GET.php"); break; - case 'DELETE': include_once("caldav-DELETE.php"); break; - case 'LOCK': include_once("caldav-LOCK.php"); break; - case 'UNLOCK': include_once("caldav-LOCK.php"); break; + case 'OPTIONS': include_once('caldav-OPTIONS.php'); break; + case 'REPORT': include_once('caldav-REPORT.php'); break; + case 'PROPFIND': + if ( isset($c->new_propfind) && $c->new_propfind ) { + include('caldav-PROPFIND2.php'); + } + else { + include('caldav-PROPFIND.php'); + } + break; + case 'PROPPATCH': include('caldav-PROPPATCH.php'); break; + case 'MKCALENDAR': include('caldav-MKCOL.php'); break; + case 'MKCOL': include('caldav-MKCOL.php'); break; + case 'PUT': include('caldav-PUT.php'); break; + case 'POST': include('caldav-POST.php'); break; + case 'MOVE': include('caldav-MOVE.php'); break; + case 'GET': include('caldav-GET.php'); break; + case 'HEAD': include('caldav-GET.php'); break; + case 'DELETE': include('caldav-DELETE.php'); break; + case 'LOCK': include('caldav-LOCK.php'); break; + case 'UNLOCK': include('caldav-LOCK.php'); break; - case 'TESTRRULE': include_once("test-RRULE.php"); break; + case 'TESTRRULE': include('test-RRULE.php'); break; default: - dbg_error_log( "caldav", "Unhandled request method >>%s<<", $request->method ); - dbg_log_array( "caldav", '_SERVER', $_SERVER, true ); - dbg_error_log( "caldav", "RAW: %s", str_replace("\n", "",str_replace("\r", "", $request->raw_post)) ); + dbg_error_log( 'caldav', 'Unhandled request method >>%s<<', $request->method ); + dbg_log_array( 'caldav', '_SERVER', $_SERVER, true ); + dbg_error_log( 'caldav', 'RAW: %s', str_replace("\n", '',str_replace("\r", '', $request->raw_post)) ); } -$request->DoResponse( 500, translate("The application program does not understand that request.") ); +$request->DoResponse( 500, translate('The application program does not understand that request.') );