summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_addressbook.php
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-09-09 11:07:40 +0200
committerAleksander Machniak <alec@alec.pl>2013-09-09 11:07:40 +0200
commitad003c889b27d8bb52c97cf1a087da64f67d4924 (patch)
tree58668e0ff0671fe5e449899e1208dc8e47ee898b /program/lib/Roundcube/rcube_addressbook.php
parent09fed60218f971f2e81ac39c7db1b176088940f9 (diff)
Fix some methods for rcube_addressbook implementations where contact email field is not a flat array
Diffstat (limited to 'program/lib/Roundcube/rcube_addressbook.php')
-rw-r--r--program/lib/Roundcube/rcube_addressbook.php15
1 files changed, 8 insertions, 7 deletions
diff --git a/program/lib/Roundcube/rcube_addressbook.php b/program/lib/Roundcube/rcube_addressbook.php
index 73d6e4d66..c8cf2d290 100644
--- a/program/lib/Roundcube/rcube_addressbook.php
+++ b/program/lib/Roundcube/rcube_addressbook.php
@@ -424,7 +424,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
*/
- 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 @@ 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 = 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 @@ abstract class rcube_addressbook
$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 @@ 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 (!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;