From f91f8533678c388b879d9e999a6bcc9e22ad7e19 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 5 Aug 2014 16:44:07 +0200 Subject: lot of stuff --- program/lib/Roundcube/rcube_addressbook.php | 57 +++++++++-------------------- 1 file changed, 17 insertions(+), 40 deletions(-) (limited to 'program/lib/Roundcube/rcube_addressbook.php') diff --git a/program/lib/Roundcube/rcube_addressbook.php b/program/lib/Roundcube/rcube_addressbook.php index 886f65cb9..13016ecc7 100644 --- a/program/lib/Roundcube/rcube_addressbook.php +++ b/program/lib/Roundcube/rcube_addressbook.php @@ -3,7 +3,7 @@ /* +-----------------------------------------------------------------------+ | This file is part of the Roundcube Webmail client | - | Copyright (C) 2006-2013, The Roundcube Dev Team | + | Copyright (C) 2006-2012, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | @@ -35,7 +35,6 @@ abstract class rcube_addressbook /** public properties (mandatory) */ public $primary_key; public $groups = false; - public $export_groups = true; public $readonly = true; public $searchonly = false; public $undelete = false; @@ -209,7 +208,6 @@ abstract class rcube_addressbook public function validate(&$save_data, $autofix = false) { $rcube = rcube::get_instance(); - $valid = true; // check validity of email addresses foreach ($this->get_col_values('email', $save_data, true) as $email) { @@ -217,28 +215,12 @@ abstract class rcube_addressbook if (!rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) { $error = $rcube->gettext(array('name' => 'emailformaterror', 'vars' => array('email' => $email))); $this->set_error(self::ERROR_VALIDATE, $error); - $valid = false; - break; + return false; } } } - // allow plugins to do contact validation and auto-fixing - $plugin = $rcube->plugins->exec_hook('contact_validate', array( - 'record' => $save_data, - 'autofix' => $autofix, - 'valid' => $valid, - )); - - if ($valid && !$plugin['valid']) { - $this->set_error(self::ERROR_VALIDATE, $plugin['error']); - } - - if (is_array($plugin['record'])) { - $save_data = $plugin['record']; - } - - return $plugin['valid']; + return true; } /** @@ -441,7 +423,7 @@ abstract class rcube_addressbook * @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 */ - public static function get_col_values($col, $data, $flat = false) + function get_col_values($col, $data, $flat = false) { $out = array(); foreach ((array)$data as $c => $values) { @@ -450,7 +432,7 @@ abstract class rcube_addressbook $out = array_merge($out, (array)$values); } else { - list(, $type) = explode(':', $c); + list($f, $type) = explode(':', $c); $out[$type] = array_merge((array)$out[$type], (array)$values); } } @@ -494,8 +476,7 @@ abstract class rcube_addressbook $fn = trim(join(' ', array_filter(array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix'])))); // use email address part for name - $email = self::get_col_values('email', $contact, true); - $email = $email[0]; + $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email']; if ($email && (empty($fn) || $fn == $email)) { // return full email @@ -532,12 +513,8 @@ abstract class rcube_addressbook $fn = join(' ', array($contact['surname'], $contact['firstname'], $contact['middlename'])); else if ($compose_mode == 1) $fn = join(' ', array($contact['firstname'], $contact['middlename'], $contact['surname'])); - else if ($compose_mode == 0) + else $fn = !empty($contact['name']) ? $contact['name'] : join(' ', array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix'])); - else { - $plugin = rcube::get_instance()->plugins->exec_hook('contact_listname', array('contact' => $contact)); - $fn = $plugin['fn']; - } $fn = trim($fn, ', '); @@ -546,9 +523,9 @@ abstract class rcube_addressbook $fn = $contact['name']; // fallback to email address - if (empty($fn) && ($email = self::get_col_values('email', $contact, true)) && !empty($email)) { - return $email[0]; - } + $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email']; + if (empty($fn) && $email) + return $email; return $fn; } @@ -561,11 +538,11 @@ abstract class rcube_addressbook $key = $contact[$sort_col] . ':' . $contact['sourceid']; // add email to a key to not skip contacts with the same name (#1488375) - if (($email = self::get_col_values('email', $contact, true)) && !empty($email)) { - $key .= ':' . implode(':', (array)$email); - } + if (!empty($contact['email'])) { + $key .= ':' . implode(':', (array)$contact['email']); + } - return $key; + return $key; } /** @@ -584,9 +561,9 @@ abstract class rcube_addressbook // 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::anytodatetime($value)) - && ($search = rcube_utils::anytodatetime($search)) - && $value->format('Ymd') == $search->format('Ymd')); + return (($value = rcube_utils::strtotime($value)) + && ($search = rcube_utils::strtotime($search)) + && date('Ymd', $value) == date('Ymd', $search)); } // composite field, e.g. address -- cgit v1.2.3