From bc8c2c57880523472b30f475d566a8133e2d2e20 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Sat, 21 May 2011 14:04:51 -0400 Subject: [PATCH] - Fix s/pattern/prefix/ in clear_cache() --- program/include/rcube_addressbook.php | 64 ++++++++++++++++++++++++------- 1 files changed, 49 insertions(+), 15 deletions(-) diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php index d1b0f62..c580c40 100644 --- a/program/include/rcube_addressbook.php +++ b/program/include/rcube_addressbook.php @@ -172,18 +172,13 @@ /** * Check the given data before saving. - * If input not valid, the message to display can be fetched using get_error() + * If input isn't valid, the message to display can be fetched using get_error() * * @param array Assoziative array with data to save * @return boolean True if input is valid, False if not. */ public function validate($save_data) { - if (empty($save_data['name'])) { - $this->set_error('warning', 'nonamewarning'); - return false; - } - // check validity of email addresses foreach ($this->get_col_values('email', $save_data, true) as $email) { if (strlen($email)) { @@ -310,9 +305,10 @@ * * @param string Group identifier * @param string New name to set for this group + * @param string New group identifier (if changed, otherwise don't set) * @return boolean New name on success, false if no data was changed */ - function rename_group($gid, $newname) + function rename_group($gid, $newname, &$newid) { /* empty for address books don't supporting groups */ return false; @@ -396,15 +392,53 @@ */ 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/'), + // split by words + $arr = explode(" ", preg_replace( + array('/[\s;\+\-\/]+/i', '/(\d)[-.\s]+(\d)/', '/\s\w{1,3}\s/'), array(' ', '\\1\\2', ' '), - $norm); + $str)); + + foreach ($arr as $i => $part) { + if (utf8_encode(utf8_decode($part)) == $part) { // is latin-1 ? + $arr[$i] = utf8_encode(strtr(strtolower(strtr(utf8_decode($part), + '��������������������������������������������������', + 'ccaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy')), + array('�' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u'))); + } + else + $arr[$i] = mb_strtolower($part); + } + + return join(" ", $arr); } - + + + /** + * Compose a valid display name from the given structured contact data + * + * @param array Hash array with contact data as key-value pairs + * @return string Display name + */ + public static function compose_display_name($contact) + { + $contact = rcmail::get_instance()->plugins->exec_hook('contact_displayname', $contact); + $fn = $contact['name']; + + if (!$fn) + $fn = 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']; + if ($email && (empty($fn) || $fn == $email)) { + list($emailname) = explode('@', $email); + if (preg_match('/(.*)[\.\-\_](.*)/', $emailname, $match)) + $fn = trim(ucfirst($match[1]).' '.ucfirst($match[2])); + else + $fn = ucfirst($emailname); + } + + return $fn; + } + } -- Gitblit v1.9.1