mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 17:18:54 +01:00
Support of Funambol Outlook Sync Client
This commit is contained in:
parent
a34f7faec5
commit
89d8486583
@ -128,6 +128,9 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
}
|
}
|
||||||
$sysCharSet = $GLOBALS['egw']->translation->charset();
|
$sysCharSet = $GLOBALS['egw']->translation->charset();
|
||||||
|
|
||||||
|
// KAddressbook always requires non-ascii chars to be qprint encoded.
|
||||||
|
if ($this->productName == 'kde') $extra_charset_attribute = true;
|
||||||
|
|
||||||
if (!($entry = $this->read($_id)))
|
if (!($entry = $this->read($_id)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -235,8 +238,7 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
{
|
{
|
||||||
$values = (array) $GLOBALS['egw']->translation->convert($values, $sysCharSet, $_charset);
|
$values = (array) $GLOBALS['egw']->translation->convert($values, $sysCharSet, $_charset);
|
||||||
$value = implode(',', $values); // just for the CHARSET recognition
|
$value = implode(',', $values); // just for the CHARSET recognition
|
||||||
if(($extra_charset_attribute || $this->productName == 'kde')
|
if ($extra_charset_attribute && preg_match('/([\177-\377])/', $value))
|
||||||
&& preg_match('/([\177-\377])/',$value))
|
|
||||||
{
|
{
|
||||||
$options['CHARSET'] = $_charset;
|
$options['CHARSET'] = $_charset;
|
||||||
// KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that
|
// KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that
|
||||||
@ -244,6 +246,10 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
{
|
{
|
||||||
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$options['ENCODING'] = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$hasdata++;
|
$hasdata++;
|
||||||
}
|
}
|
||||||
@ -254,8 +260,9 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
{
|
{
|
||||||
if ($noTruncate)
|
if ($noTruncate)
|
||||||
{
|
{
|
||||||
Horde::logMessage("vCalAddressbook $vcardField omitted due to maximum size $size",
|
error_log(__FILE__ . __LINE__ . __METHOD__ . " vCalAddressbook $vcardField omitted due to maximum size $size");
|
||||||
__FILE__, __LINE__, PEAR_LOG_WARNING);
|
// Horde::logMessage("vCalAddressbook $vcardField omitted due to maximum size $size",
|
||||||
|
// __FILE__, __LINE__, PEAR_LOG_WARNING);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// truncate the value to size
|
// truncate the value to size
|
||||||
@ -269,8 +276,9 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
{
|
{
|
||||||
$value = '';
|
$value = '';
|
||||||
}
|
}
|
||||||
Horde::logMessage("vCalAddressbook $vcardField truncated to maximum size $size",
|
error_log(__FILE__ . __LINE__ . __METHOD__ . " vCalAddressbook $vcardField truncated to maximum size $size");
|
||||||
__FILE__, __LINE__, PEAR_LOG_INFO);
|
//Horde::logMessage("vCalAddressbook $vcardField truncated to maximum size $size",
|
||||||
|
// __FILE__, __LINE__, PEAR_LOG_INFO);
|
||||||
}
|
}
|
||||||
if (!empty($value) // required field
|
if (!empty($value) // required field
|
||||||
|| in_array($vcardField,array('FN','ORG','N'))
|
|| in_array($vcardField,array('FN','ORG','N'))
|
||||||
@ -278,20 +286,32 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
{
|
{
|
||||||
$value = $GLOBALS['egw']->translation->convert(trim($value), $sysCharSet, $_charset);
|
$value = $GLOBALS['egw']->translation->convert(trim($value), $sysCharSet, $_charset);
|
||||||
$values[] = $value;
|
$values[] = $value;
|
||||||
if(($extra_charset_attribute || $this->productName == 'kde')
|
if ($extra_charset_attribute)
|
||||||
&& preg_match('/([\177-\377])/',$value))
|
|
||||||
{
|
{
|
||||||
$options['CHARSET'] = $_charset;
|
if (preg_match('/([\177-\377])/', $value))
|
||||||
// KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that
|
{
|
||||||
if ($this->productName == 'kde')
|
$options['CHARSET'] = $_charset;
|
||||||
|
// KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that
|
||||||
|
if ($this->productName == 'kde')
|
||||||
|
{
|
||||||
|
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$options['ENCODING'] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// protect the CardDAV
|
||||||
|
if (preg_match('/([\000-\012\015\016\020-\037\075])/', $value))
|
||||||
{
|
{
|
||||||
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// protect the CardDAV
|
else
|
||||||
elseif (($extra_charset_attribute && preg_match('/([\000-\012\015\016\020-\037\075])/',$value)))
|
|
||||||
{
|
{
|
||||||
$options['ENCODING'] = 'QUOTED-PRINTABLE';
|
// avoid that these options are inserted from horde code
|
||||||
|
$options['CHARSET'] = '';
|
||||||
|
$options['ENCODING'] = '';
|
||||||
}
|
}
|
||||||
if ($vcardField == 'TEL' && $entry['tel_prefer'] &&
|
if ($vcardField == 'TEL' && $entry['tel_prefer'] &&
|
||||||
($databaseField == $entry['tel_prefer']))
|
($databaseField == $entry['tel_prefer']))
|
||||||
@ -325,7 +345,10 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
|
|
||||||
$result = $vCard->exportvCalendar();
|
$result = $vCard->exportvCalendar();
|
||||||
|
|
||||||
Horde::logMessage("vCalAddressbook getVCard:\n" . print_r($result, true), __FILE__, __LINE__, PEAR_LOG_DEBUG);
|
error_log(__FILE__ . __LINE__ . __METHOD__ . ':'
|
||||||
|
. str_replace(array("\n",' '),'',print_r($result,true)));
|
||||||
|
// Horde::logMessage("vCalAddressbook getVCard:\n" . print_r($result, true),
|
||||||
|
// __FILE__, __LINE__, PEAR_LOG_DEBUG);
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
@ -722,6 +745,35 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
//'PHOTO' => array('jpegphoto'),
|
//'PHOTO' => array('jpegphoto'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$defaultFields[14] = array( // Funambol Outlook Sync Client
|
||||||
|
'ADR;WORK' => array('','','adr_one_street','adr_one_locality','adr_one_region',
|
||||||
|
'adr_one_postalcode','adr_one_countryname'),
|
||||||
|
'ADR;HOME' => array('','','adr_two_street','adr_two_locality','adr_two_region',
|
||||||
|
'adr_two_postalcode','adr_two_countryname'),
|
||||||
|
'BDAY' => array('bday'),
|
||||||
|
'CATEGORIES' => array('cat_id'),
|
||||||
|
'EMAIL;INTERNET' => array('email'),
|
||||||
|
'EMAIL;INTERNET;HOME' => array('email_home'),
|
||||||
|
'N' => array('n_family','n_given','n_middle','n_prefix','n_suffix'),
|
||||||
|
'FN' => array('n_fn'),
|
||||||
|
'NOTE' => array('note'),
|
||||||
|
'ORG' => array('org_name','org_unit','room'),
|
||||||
|
'ROLE' => array('role'),
|
||||||
|
'CLASS' => array('private'),
|
||||||
|
'NICKNAME' => array('label'),
|
||||||
|
'TEL;CELL' => array('tel_cell'),
|
||||||
|
'TEL;HOME;FAX' => array('tel_fax_home'),
|
||||||
|
'TEL;WORK;FAX' => array('tel_fax'),
|
||||||
|
'TEL;VOICE;HOME' => array('tel_home'),
|
||||||
|
'TEL;VOICE;WORK' => array('tel_work'),
|
||||||
|
'TEL;PAGER' => array('tel_pager'),
|
||||||
|
'TEL;CAR;VOICE' => array('tel_car'),
|
||||||
|
'TITLE' => array('title'),
|
||||||
|
'URL' => array('url'),
|
||||||
|
'URL;HOME' => array('url_home'),
|
||||||
|
'PHOTO' => array('jpegphoto'),
|
||||||
|
);
|
||||||
|
|
||||||
//error_log("Client: $_productManufacturer $_productName");
|
//error_log("Client: $_productManufacturer $_productName");
|
||||||
switch ($this->productManufacturer)
|
switch ($this->productManufacturer)
|
||||||
{
|
{
|
||||||
@ -740,6 +792,10 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
$this->supportedFields = $defaultFields[11];
|
$this->supportedFields = $defaultFields[11];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'outlook sync client v.':
|
||||||
|
$this->supportedFields = $defaultFields[14];
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error_log("Funambol product '$this->productName', assuming same as thunderbird");
|
error_log("Funambol product '$this->productName', assuming same as thunderbird");
|
||||||
$this->supportedFields = $defaultFields[6];
|
$this->supportedFields = $defaultFields[6];
|
||||||
@ -770,6 +826,7 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
case 'e51':
|
case 'e51':
|
||||||
case 'e90':
|
case 'e90':
|
||||||
case 'e71':
|
case 'e71':
|
||||||
|
case 'n95':
|
||||||
$this->supportedFields = $defaultFields[9];
|
$this->supportedFields = $defaultFields[9];
|
||||||
break;
|
break;
|
||||||
case '9300':
|
case '9300':
|
||||||
@ -900,6 +957,7 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
'adr_two_postalcode','adr_two_countryname'),
|
'adr_two_postalcode','adr_two_countryname'),
|
||||||
'BDAY' => array('bday'),
|
'BDAY' => array('bday'),
|
||||||
'X-CLASS' => array('private'),
|
'X-CLASS' => array('private'),
|
||||||
|
'CLASS' => array('private'),
|
||||||
'CATEGORIES' => array('cat_id'),
|
'CATEGORIES' => array('cat_id'),
|
||||||
'EMAIL;WORK' => array('email'),
|
'EMAIL;WORK' => array('email'),
|
||||||
'EMAIL;HOME' => array('email_home'),
|
'EMAIL;HOME' => array('email_home'),
|
||||||
@ -907,7 +965,7 @@ class addressbook_vcal extends addressbook_bo
|
|||||||
'n_prefix','n_suffix'),
|
'n_prefix','n_suffix'),
|
||||||
'FN' => array('n_fn'),
|
'FN' => array('n_fn'),
|
||||||
'NOTE' => array('note'),
|
'NOTE' => array('note'),
|
||||||
'ORG' => array('org_name','org_unit'),
|
'ORG' => array('org_name','org_unit','room'),
|
||||||
'TEL;CELL;WORK' => array('tel_cell'),
|
'TEL;CELL;WORK' => array('tel_cell'),
|
||||||
'TEL;CELL;HOME' => array('tel_cell_private'),
|
'TEL;CELL;HOME' => array('tel_cell_private'),
|
||||||
'TEL;CAR' => array('tel_car'),
|
'TEL;CAR' => array('tel_car'),
|
||||||
|
Loading…
Reference in New Issue
Block a user