diff options
| author | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-02-14 20:46:48 +0000 |
|---|---|---|
| committer | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-02-14 20:46:48 +0000 |
| commit | 1e1ad9ee81069a18c3bbe0101f405491d977b1bf (patch) | |
| tree | 32dc1f66b2575ba9642696e5fbc4b311ade728cf /roundcubemail/program/include/rcube_addressbook.php | |
| parent | 2e91bb700b0ea556d4780a4d80703f3ce8473391 (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.php | 21 |
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); + } } |
