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