2 commits - plugins/calendar plugins/kolab_addressbook plugins/libkolab

Thomas Brüderli bruederli at kolabsys.com
Wed May 30 09:48:43 CEST 2012


 plugins/calendar/drivers/kolab/kolab_calendar.php      |   10 +++++++---
 plugins/calendar/drivers/kolab/kolab_driver.php        |    2 +-
 plugins/kolab_addressbook/lib/rcube_kolab_contacts.php |    6 +++---
 plugins/libkolab/lib/kolab_storage_cache.php           |    8 ++++++++
 4 files changed, 19 insertions(+), 7 deletions(-)

New commits:
commit da4fea3a3d71dfa363391e399b08a2585684c24a
Merge: 6bbb34b b2a7734
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 30 09:13:42 2012 +0200

    Merge branch 'master' of ssh://git.kolabsys.com/git/roundcube



commit 6bbb34b3aef27d362b3bc6a3f15675dc7cf2eb42
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 30 09:13:24 2012 +0200

    Use regex-like syntax for LIKE queries to kolab_storage_cache; also use it for calendar search

diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php
index d036658..f8525be 100644
--- a/plugins/calendar/drivers/kolab/kolab_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_calendar.php
@@ -207,14 +207,18 @@ class kolab_calendar
     $query[] = array('dtstart', '<=', $end);
     $query[] = array('dtend',   '>=', $start);
 
+    if (!empty($search)) {
+        $search = mb_strtolower($search);
+        foreach (rcube_utils::normalize_string($search, true) as $word) {
+            $query[] = array('words', 'LIKE', $word);
+        }
+    }
+
     foreach ((array)$this->storage->select($query) as $record) {
       $event = $this->_to_rcube_event($record);
       $this->events[$event['id']] = $event;
     }
 
-    if (!empty($search))
-      $search =  mb_strtolower($search);
-    
     $events = array();
     foreach ($this->events as $id => $event) {
       // remember seen categories
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index 1a0eb9c..d1ccb59 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -765,7 +765,7 @@ class kolab_driver extends calendar_driver
     $time = $slot + $interval;
     
     $events = array();
-    $query = array(array('tags', 'LIKE', '% x-has-alarms %'));
+    $query = array(array('tags', '=', 'x-has-alarms'));
     foreach ($this->calendars as $cid => $calendar) {
       // skip calendars with alarms disabled
       if (!$calendar->alarms || ($calendars && !in_array($cid, $calendars)))
diff --git a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
index 5702a0c..f880551 100644
--- a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
+++ b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
@@ -358,14 +358,14 @@ class rcube_kolab_contacts extends rcube_addressbook
         $squery = array();
         if (count(array_intersect(kolab_format_contact::$fulltext_cols, $fields)) == $scount) {
             switch ($mode) {
-                case 1:  $prefix = ' '; $suffix = ' '; break;  // strict
-                case 2:  $prefix = ' '; $suffix = '';  break;  // prefix
+                case 1:  $prefix = '^'; $suffix = '$'; break;  // strict
+                case 2:  $prefix = '^'; $suffix = '';  break;  // prefix
                 default: $prefix = '';  $suffix = '';  break;  // substring
             }
 
             $search_string = is_array($value) ? join(' ', $value) : $value;
             foreach (rcube_utils::normalize_string($search_string, true) as $word) {
-                $squery[] = array('words', 'LIKE', '%' . $prefix . $word . $suffix . '%');
+                $squery[] = array('words', 'LIKE', $prefix . $word . $suffix);
             }
         }
 
diff --git a/plugins/libkolab/lib/kolab_storage_cache.php b/plugins/libkolab/lib/kolab_storage_cache.php
index 8ee04be..f138d34 100644
--- a/plugins/libkolab/lib/kolab_storage_cache.php
+++ b/plugins/libkolab/lib/kolab_storage_cache.php
@@ -383,6 +383,14 @@ class kolab_storage_cache
                 $qvalue = '(' . join(',', array_map(array($this->db, 'quote'), $param[2])) . ')';
                 $param[1] = 'IN';
             }
+            else if ($param[1] == '~' || $param[1] == 'LIKE') {
+                $param[1] = 'LIKE';
+                $qvalue = $this->db->quote('%'.preg_replace('/(^\^|\$$)/', ' ', $param[2]).'%');
+            }
+            else if ($param[0] == 'tags') {
+                $param[1] = 'LIKE';
+                $qvalue = $this->db->quote('% '.$param[2].' %');
+            }
             else {
                 $qvalue = $this->db->quote($param[2]);
             }





More information about the commits mailing list