diff options
Diffstat (limited to 'program/lib')
| -rw-r--r-- | program/lib/Roundcube/rcube_addressbook.php | 53 | 
1 files changed, 53 insertions, 0 deletions
diff --git a/program/lib/Roundcube/rcube_addressbook.php b/program/lib/Roundcube/rcube_addressbook.php index 4d9fa3db1..7566d6546 100644 --- a/program/lib/Roundcube/rcube_addressbook.php +++ b/program/lib/Roundcube/rcube_addressbook.php @@ -557,6 +557,59 @@ abstract class rcube_addressbook      }      /** +     * Build contact display name for autocomplete listing +     * +     * @param array  Hash array with contact data as key-value pairs +     * @param string Optional email address +     * @param string Optional name (self::compose_list_name() result) +     * +     * @return string Display name +     */ +    public static function compose_search_name($contact, $email = null, $name = null) +    { +        static $template; + +        if (!isset($template)) {  // cache this +            $template = rcube::get_instance()->config->get('contact_search_name'); +            if (empty($template)) { +                $template = '{name} <{email}>'; +            } +        } + +        $result = $template; + +        if (preg_match_all('/\{[a-z]+\}/', $result, $matches)) { +            foreach ($matches[0] as $key) { +                $key = trim($key, '{}'); + +                switch ($key) { +                case 'name': +                    $value = $name ?: self::compose_list_name($contact); +                    break; + +                case 'email': +                    $value = $email; +                    break; +                } + +                if (empty($value)) { +                    $value = strpos($key, ':') ? $contact[$key] : self::get_col_values($key, $contact, true); +                    if (is_array($value)) { +                        $value = $value[0]; +                    } +                } + +                $result = str_replace('{' . $key . '}', $value, $result); +            } +        } + +        $result = preg_replace('/\s+/', ' ', $result); +        $result = trim($result); + +        return $result; +    } + +    /**       * Create a unique key for sorting contacts       */      public static function compose_contact_key($contact, $sort_col)  | 
