summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include/rcube_addressbook.php
diff options
context:
space:
mode:
authorthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-02-14 20:46:48 +0000
committerthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-02-14 20:46:48 +0000
commit1e1ad9ee81069a18c3bbe0101f405491d977b1bf (patch)
tree32dc1f66b2575ba9642696e5fbc4b311ade728cf /roundcubemail/program/include/rcube_addressbook.php
parent2e91bb700b0ea556d4780a4d80703f3ce8473391 (diff)
Fulltext search over contact fields. Attention: DATABASE SCHEMA CHANGED\!
git-svn-id: https://svn.roundcube.net/trunk@4541 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcube_addressbook.php')
-rw-r--r--roundcubemail/program/include/rcube_addressbook.php21
1 files changed, 21 insertions, 0 deletions
diff --git a/roundcubemail/program/include/rcube_addressbook.php b/roundcubemail/program/include/rcube_addressbook.php
index 648ef838e..d1b0f6281 100644
--- a/roundcubemail/program/include/rcube_addressbook.php
+++ b/roundcubemail/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);
+ }
}