Summary | Only one e-Mail Address is synced with SIF-C (Funambol) |
Queue | Synchronization |
Type | Enhancement |
State | Resolved |
Priority | 2. Medium |
Owners | jan (at) horde (dot) org |
Requester | lst_hoe02 (at) kwsoft (dot) de |
Created | 09/11/2009 (5774 days ago) |
Due | |
Updated | 10/01/2009 (5754 days ago) |
Assigned | 09/21/2009 (5764 days ago) |
Resolved | 10/01/2009 (5754 days ago) |
Milestone | 3.3.6 |
Patch | Yes |
MFH: Map all email addresses to SIF-C (
Request #8571).http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&r1=1.8.2.32&r2=1.8.2.33&ty=u
State ⇒ Resolved
Map all email addresses to SIF-C (
Request #8571).http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&r1=1.70&r2=1.71&ty=u
New Attachment: sif-c-email.zip
Code with SIF-C Labels. It works as expected on my Test-Install.
Milestone ⇒ 3.3.6
State ⇒ Assigned
Assigned to Jan Schneider
mailaddress wins.
$hash['Email1Address'] instead of $hash['email'].
as it was originally done (see comment at top of function) and modify
it to match SIF.
mailaddress wins. I suggest to use the code from Turba::Driver toHash
as it was originally done (see comment at top of function) and modify
it to match SIF.
I don't want to spent to much work on it because SIF is phasing out
anyway but we urgently need more than one mailadress until then.
Would this be acceptable??
State ⇒ Feedback
it, please add "break;" statements to the vCard 3.0 section, so that
an address is not accidentally mapped to several fields. Finally,
please re-add the PREF/!isset() logic from the original code, so that
either the first matching address, or the preferred address wins.
Patch ⇒ Yes
State ⇒ New
Milestone ⇒
Queue ⇒ Synchronization
Summary ⇒ Only one e-Mail Address is synced with SIF-C (Funambol)
Type ⇒ Enhancement
Priority ⇒ 1. Low
Email1Address, Email2Address, Email3Address in SIF-C. Newer Funambol
clients map these to
EMAIL
EMAIL:HOME
EMAIL:WORK
The patch does this for vacrd->SIF and the otherway around to sync
more than one address.
--- lib/SyncML/Device/Sync4j.php.orig 2009-08-14
17:01:24.000000000 +0200
+++ lib/SyncML/Device/Sync4j.php.patch 2009-09-11
09:10:36.000000000 +0200
@@ -253,8 +253,8 @@
'OtherTelephoneNumber' => array('TEL'),
'OtherFaxNumber' => array('TEL'),
'Email1Address' => array('EMAIL'),
- 'Email2Address' => array('EMAIL'),
- 'Email3Address' => array('EMAIL'),
+ 'Email2Address' => array('EMAIL', array('TYPE' => 'HOME')),
+ 'Email3Address' => array('EMAIL', array('TYPE' => 'WORK')),
'HomeLabel' => array('LABEL', array('TYPE' => 'HOME')),
'BusinessLabel' => array('LABEL', array('TYPE' => 'WORK')),
'OtherLabel' => array('LABEL'),
@@ -729,9 +729,34 @@
break;
case 'EMAIL':
- if (isset($item['params']['PREF']) ||
!isset($hash['email'])) {
- $hash['Email1Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
- $hash['Email1AddressType'] = 'SMTP';
+ if (isset($item['params']['TYPE'])) {
+ if (!is_array($item['params']['TYPE'])) {
+ $item['params']['TYPE'] =
array($item['params']['TYPE']);
+ }
+ // For vCard 3.0.
+ foreach ($item['params']['TYPE'] as $mail) {
+ if (String::upper($mail) == 'WORK') {
+ $hash['Email3Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email3AddressType'] = 'SMTP';
+ } elseif (String::upper($mail) == 'HOME') {
+ $hash['Email2Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email2AddressType'] = 'SMTP';
+ } else {
+ $hash['Email1Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email1AddressType'] = 'SMTP';
+ }
+ }
+ } else {
+ if (isset($item['params']['HOME'])) {
+ $hash['Email2Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email2AddressType'] = 'SMTP';
+ } elseif (isset($item['params']['WORK'])) {
+ $hash['Email3Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email3AddressType'] = 'SMTP';
+ } else {
+ $hash['Email1Address'] =
Horde_iCalendar_vcard::getBareEmail($item['value']);
+ $hash['Email1AddressType'] = 'SMTP';
+ }
}
break;