Branch 'kolab-syncroton-2.2' - lib/kolab_sync_data_contacts.php
Aleksander Machniak
machniak at kolabsys.com
Fri Aug 23 19:19:04 CEST 2013
lib/kolab_sync_data_contacts.php | 48 +++++++++++++++++++++++++++------------
1 file changed, 34 insertions(+), 14 deletions(-)
New commits:
commit b52b4b3b3a3cf098cbacab5f518a79d9c120a086
Author: Aleksander Machniak <alec at alec.pl>
Date: Thu Aug 22 10:00:40 2013 +0200
Fix contact email addresses handling (incompatibility with recent libkolab plugin code) (Bug #2136)
diff --git a/lib/kolab_sync_data_contacts.php b/lib/kolab_sync_data_contacts.php
index 7a60c0e..94dc2f6 100644
--- a/lib/kolab_sync_data_contacts.php
+++ b/lib/kolab_sync_data_contacts.php
@@ -49,9 +49,9 @@ class kolab_sync_data_contacts extends kolab_sync_data
'children' => 'children',
'companyName' => 'organization',
'department' => 'department',
- 'email1Address' => 'email:0',
- 'email2Address' => 'email:1',
- 'email3Address' => 'email:2',
+ //'email1Address' => 'email:0',
+ //'email2Address' => 'email:1',
+ //'email3Address' => 'email:2',
//'fileAs' => 'fileas', //@TODO: ?
'firstName' => 'firstname',
//'home2PhoneNumber' => 'home2phonenumber',
@@ -167,6 +167,13 @@ class kolab_sync_data_contacts extends kolab_sync_data
$result[$key] = $value;
}
+ // email address(es): email1Address, email2Address, email3Address
+ for ($x=0; $x<3; $x++) {
+ if (!empty($data['email'][$x]) && !empty($data['email'][$x]['address'])) {
+ $result['email' . ($x+1) . 'Address'] = $data['email'][$x]['address'];
+ }
+ }
+
return new Syncroton_Model_Contact($result);
}
@@ -181,7 +188,7 @@ class kolab_sync_data_contacts extends kolab_sync_data
*/
public function toKolab(Syncroton_Model_IEntry $data, $folderId, $entry = null)
{
- $contact = !empty($entry) ? $entry : array();
+ $contact = !empty($entry) ? $entry : array();
// Contacts namespace fields
foreach ($this->mapping as $key => $name) {
@@ -195,16 +202,6 @@ class kolab_sync_data_contacts extends kolab_sync_data
}
break;
- case 'email:0':
- case 'email:1':
- case 'email:2':
- // android send email address as
- // Lars Kneschke <l.kneschke at metaways.de>
- if (preg_match('/(.*)<(.+@[^@]+)>/', $value, $matches)) {
- $value = trim($matches[2]);
- }
- break;
-
case 'website.homepage.url':
// remove facebook urls
if (preg_match('/^fb:\/\//', $value)) {
@@ -231,6 +228,29 @@ class kolab_sync_data_contacts extends kolab_sync_data
$this->setKolabDataItem($contact, $name, $value);
}
+ // email address(es): email1Address, email2Address, email3Address
+ $emails = array();
+ for ($x=0; $x<3; $x++) {
+ $key = 'email' . ($x+1) . 'Address';
+ if ($value = $data->$key) {
+ // Android sends email address as: Lars Kneschke <l.kneschke at metaways.de>
+ if (preg_match('/(.*)<(.+@[^@]+)>/', $value, $matches)) {
+ $value = trim($matches[2]);
+ }
+
+ // try to find address type, at least we can do this if
+ // address wasn't changed
+ $type = '';
+ foreach ((array)$contact['email'] as $email) {
+ if ($email['address'] == $value) {
+ $type = $email['type'];
+ }
+ }
+ $emails[] = array('address' => $value, 'type' => $type);
+ }
+ }
+ $contact['email'] = $emails;
+
return $contact;
}
More information about the commits
mailing list