Aleksander Machniak
2013-10-14 c1bc8f6c827a27540b5510b42dcc65b39d38f2c1
program/lib/Roundcube/rcube_addressbook.php
@@ -134,7 +134,7 @@
    abstract function get_record($id, $assoc=false);
    /**
     * Returns the last error occured (e.g. when updating/inserting failed)
     * Returns the last error occurred (e.g. when updating/inserting failed)
     *
     * @return array Hash array with the following fields: type, message
     */
@@ -424,7 +424,7 @@
     * @param boolean True to return one array with all values, False for hash array with values grouped by type
     * @return array List of column values
     */
    function get_col_values($col, $data, $flat = false)
    public static function get_col_values($col, $data, $flat = false)
    {
        $out = array();
        foreach ((array)$data as $c => $values) {
@@ -477,7 +477,8 @@
            $fn = trim(join(' ', array_filter(array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix']))));
        // use email address part for name
        $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email'];
        $email = self::get_col_values('email', $contact, true);
        $email = $email[0];
        if ($email && (empty($fn) || $fn == $email)) {
            // return full email
@@ -524,9 +525,9 @@
            $fn = $contact['name'];
        // fallback to email address
        $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email'];
        if (empty($fn) && $email)
            return $email;
        if (empty($fn) && ($email = self::get_col_values('email', $contact, true)) && !empty($email)) {
            return $email[0];
        }
        return $fn;
    }
@@ -539,8 +540,8 @@
        $key = $contact[$sort_col] . ':' . $contact['sourceid'];
        // add email to a key to not skip contacts with the same name (#1488375)
        if (!empty($contact['email'])) {
            $key .= ':' . implode(':', (array)$contact['email']);
        if (($email = self::get_col_values('email', $contact, true)) && !empty($email)) {
            $key .= ':' . implode(':', (array)$email);
        }
        return $key;
@@ -562,9 +563,9 @@
        // use only strict comparison (mode = 1)
        // @TODO: partial search, e.g. match only day and month
        if (in_array($colname, $this->date_cols)) {
            return (($value = rcube_utils::strtotime($value))
                && ($search = rcube_utils::strtotime($search))
                && date('Ymd', $value) == date('Ymd', $search));
            return (($value = rcube_utils::anytodatetime($value))
                && ($search = rcube_utils::anytodatetime($search))
                && $value->format('Ymd') == $search->format('Ymd'));
        }
        // composite field, e.g. address