From bc805e0700b6b7b8081019fbe67122537a5f79a8 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sat, 27 Jun 2009 20:35:55 +1200 Subject: [PATCH] Do case-insensitive e-mail lookup, fallback to case sensitive on multiples. --- inc/caldav-POST.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/caldav-POST.php b/inc/caldav-POST.php index c11a90fe..7dc1c6ae 100644 --- a/inc/caldav-POST.php +++ b/inc/caldav-POST.php @@ -55,8 +55,14 @@ function handle_freebusy_request( $ic ) { $request->DoResponse( 400, 'All valid freebusy requests MUST contain a DTSTART and a DTEND' ); } - $qry = new PgQuery("SELECT get_permissions(?,user_no) AS p FROM usr WHERE usr.email = ?", $session->user_no, $attendee_email ); + /** @TODO: Refactor this so we only do one query here and loop through the results */ + $qry = new PgQuery("SELECT get_permissions(?,user_no) AS p FROM usr WHERE lower(usr.email) = lower(?)", $session->user_no, $attendee_email ); if ( !$qry->Exec("POST") ) $request->DoResponse( 501, 'Database error'); + if ( $qry->rows > 1 ) { + // Unlikely, but if we get more than one result we'll do an exact match instead. + $qry = new PgQuery("SELECT get_permissions(?,user_no) AS p FROM usr WHERE usr.email = ?", $session->user_no, $attendee_email ); + if ( !$qry->Exec("POST") ) $request->DoResponse( 501, 'Database error'); + } $response = $reply->NewXMLElement("response", false, false, 'urn:ietf:params:xml:ns:caldav'); $reply->CalDAVElement($response, "recipient", $reply->href($attendee->Value()) );