From fbe54043cf598b19a753dc2b21a7ed558d23fd15 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 18 Aug 2011 13:40:07 -0400 Subject: [PATCH] Fix folders drop-down list: descend into root folder (e.g. INBOX) even if part of the exception list --- program/include/rcube_addressbook.php | 42 +++++++++++++++++++++++++++++++++--------- 1 files changed, 33 insertions(+), 9 deletions(-) diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php index c580c40..6d126e9 100644 --- a/program/include/rcube_addressbook.php +++ b/program/include/rcube_addressbook.php @@ -33,18 +33,24 @@ const ERROR_INCOMPLETE = 3; const ERROR_SAVING = 4; const ERROR_SEARCH = 5; - + /** public properties (mandatory) */ public $primary_key; public $groups = false; public $readonly = true; + public $undelete = false; public $ready = false; public $group_id = null; public $list_page = 1; public $page_size = 10; public $coltypes = array('name' => array('limit'=>1), 'firstname' => array('limit'=>1), 'surname' => array('limit'=>1), 'email' => array('limit'=>1)); - + protected $error; + + /** + * Returns addressbook name (e.g. for addressbooks listing) + */ + abstract function get_name(); /** * Save a search string for future listings @@ -129,7 +135,7 @@ { return $this->error; } - + /** * Setter for errors for internal use * @@ -244,14 +250,25 @@ * Mark one or more contact records as deleted * * @param array Record identifiers + * @param bool Remove records irreversible (see self::undelete) */ - function delete($ids) + function delete($ids, $force=true) { /* empty for read-only address books */ } /** - * Remove all records from the database + * Unmark delete flag on contact record(s) + * + * @param array Record identifiers + */ + function undelete($ids) + { + /* empty for read-only address books */ + } + + /** + * Mark all records in database as deleted */ function delete_all() { @@ -378,7 +395,7 @@ } } } - + return $out; } @@ -397,7 +414,7 @@ array('/[\s;\+\-\/]+/i', '/(\d)[-.\s]+(\d)/', '/\s\w{1,3}\s/'), array(' ', '\\1\\2', ' '), $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), @@ -408,7 +425,7 @@ else $arr[$i] = mb_strtolower($part); } - + return join(" ", $arr); } @@ -417,9 +434,11 @@ * Compose a valid display name from the given structured contact data * * @param array Hash array with contact data as key-value pairs + * @param bool The name will be used on the list + * * @return string Display name */ - public static function compose_display_name($contact) + public static function compose_display_name($contact, $list_mode = false) { $contact = rcmail::get_instance()->plugins->exec_hook('contact_displayname', $contact); $fn = $contact['name']; @@ -429,7 +448,12 @@ // use email address part for name $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email']; + if ($email && (empty($fn) || $fn == $email)) { + // Use full email address on contacts list + if ($list_mode) + return $email; + list($emailname) = explode('@', $email); if (preg_match('/(.*)[\.\-\_](.*)/', $emailname, $match)) $fn = trim(ucfirst($match[1]).' '.ucfirst($match[2])); -- Gitblit v1.9.1