summaryrefslogtreecommitdiff
path: root/program/include/rcube_addressbook.php
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2011-02-14 20:46:48 +0000
committerthomascube <thomas@roundcube.net>2011-02-14 20:46:48 +0000
commit3e2637351da9559a4aa420004ac90e9fe30477ef (patch)
treeca7f99df5bba9fc2bf63ab3bb14566dfffa3b607 /program/include/rcube_addressbook.php
parentfc2d3de7691a9b1d083eed435c2c327c2b8edbaa (diff)
Fulltext search over contact fields. Attention: DATABASE SCHEMA CHANGED\!
Diffstat (limited to 'program/include/rcube_addressbook.php')
-rw-r--r--program/include/rcube_addressbook.php21
1 files changed, 21 insertions, 0 deletions
diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php
index 648ef838e..d1b0f6281 100644
--- a/program/include/rcube_addressbook.php
+++ b/program/include/rcube_addressbook.php
@@ -32,6 +32,7 @@ abstract class rcube_addressbook
const ERROR_NO_CONNECTION = 2;
const ERROR_INCOMPLETE = 3;
const ERROR_SAVING = 4;
+ const ERROR_SEARCH = 5;
/** public properties (mandatory) */
public $primary_key;
@@ -384,6 +385,26 @@ abstract class rcube_addressbook
return $out;
}
+
+
+ /**
+ * Normalize the given string for fulltext search.
+ * Currently only optimized for Latin-1 characters; to be extended
+ *
+ * @param string Input string (UTF-8)
+ * @return string Normalized string
+ */
+ protected static function normalize_string($str)
+ {
+ $norm = strtolower(strtr(utf8_decode($str),
+ 'ÇçäâàåéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ',
+ 'ccaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy'));
+
+ return preg_replace(
+ array('/[\s;\+\-\/]+/i', '/(\d)\s+(\d)/', '/\s\w{1,3}\s/'),
+ array(' ', '\\1\\2', ' '),
+ $norm);
+ }
}