From 703f09adfb627978903ee43eb1bde65cff4d4ca4 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Tue, 14 Aug 2007 21:04:22 +1200 Subject: [PATCH] Support basic collations on text-search filter. --- inc/caldav-REPORT-calquery.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/inc/caldav-REPORT-calquery.php b/inc/caldav-REPORT-calquery.php index f920745f..6a2c6ad4 100644 --- a/inc/caldav-REPORT-calquery.php +++ b/inc/caldav-REPORT-calquery.php @@ -117,8 +117,19 @@ function SqlFilterFragment( $filter, $components, $property = null, $parameter = case 'URN:IETF:PARAMS:XML:NS:CALDAV:TEXT-MATCH': $search = $v->GetContent(); $negate = $v->GetAttribute("NEGATE-CONDITION"); - if ( isset($negate) && strtolower($negate) == "yes" ) $match = !$match; - $sql .= sprintf( "AND %s LIKE %s ", $property, qpg("%".$search."%") ); + $collation = $v->GetAttribute("COLLATION"); + switch( strtolower($collation) ) { + case 'i;octet': + $comparison = 'ILIKE'; + break; + case 'i;ascii-casemap': + default: + $comparison = 'ILIKE'; + break; + } + if $match = !$match; + $sql .= sprintf( "AND %s%s %s %s ", (isset($negate) && strtolower($negate) == "yes" ? "NOT ": ""), + $property, $comparison, qpg("%".$search."%") ); break; case 'URN:IETF:PARAMS:XML:NS:CALDAV:COMP-FILTER':