From 83f7077ec930952cdc9cfc8982b80cd4dad06b5f Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 07 Jan 2013 08:21:25 -0500
Subject: [PATCH] Fix searching by date in address book (#1488888)

---
 program/lib/Roundcube/rcube_contacts.php |   25 +++++--------------------
 1 files changed, 5 insertions(+), 20 deletions(-)

diff --git a/program/lib/Roundcube/rcube_contacts.php b/program/lib/Roundcube/rcube_contacts.php
index a98b138..062bd1e 100644
--- a/program/lib/Roundcube/rcube_contacts.php
+++ b/program/lib/Roundcube/rcube_contacts.php
@@ -45,6 +45,7 @@
     private $fulltext_cols = array('name', 'firstname', 'surname', 'middlename', 'nickname',
       'jobtitle', 'organization', 'department', 'maidenname', 'email', 'phone',
       'address', 'street', 'locality', 'zipcode', 'region', 'country', 'website', 'im', 'notes');
+    protected $date_types = array('birthday', 'anniversary');
 
     // public properties
     public $primary_key = 'contact_id';
@@ -401,32 +402,16 @@
             for ($i=0; $i<$pages; $i++) {
                 $this->list_records(null, $i, true);
                 while ($row = $this->result->next()) {
-                    $id = $row[$this->primary_key];
+                    $id    = $row[$this->primary_key];
                     $found = array();
                     foreach (preg_grep($regexp, array_keys($row)) as $col) {
                         $pos     = strpos($col, ':');
                         $colname = $pos ? substr($col, 0, $pos) : $col;
                         $search  = $post_search[$colname];
                         foreach ((array)$row[$col] as $value) {
-                            // composite field, e.g. address
-                            foreach ((array)$value as $val) {
-                                $val = mb_strtolower($val);
-                                switch ($mode) {
-                                case 1:
-                                    $got = ($val == $search);
-                                    break;
-                                case 2:
-                                    $got = ($search == substr($val, 0, strlen($search)));
-                                    break;
-                                default:
-                                    $got = (strpos($val, $search) !== false);
-                                    break;
-                                }
-
-                                if ($got) {
-                                    $found[$colname] = true;
-                                    break 2;
-                                }
+                            if ($this->compare_search_value($colname, $value, $search, $mode)) {
+                                $found[$colname] = true;
+                                break 2;
                             }
                         }
                     }

--
Gitblit v1.9.1