plugins/libkolab
Thomas Brüderli
bruederli at kolabsys.com
Wed Aug 13 15:55:19 CEST 2014
plugins/libkolab/lib/kolab_format_contact.php | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
New commits:
commit bcfb008dce4ee5f0775bdecb9b5b4e7cfcbafdad
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Aug 13 15:54:52 2014 +0200
Add support for some Vcard 4.0 contact properties
diff --git a/plugins/libkolab/lib/kolab_format_contact.php b/plugins/libkolab/lib/kolab_format_contact.php
index 63efe9a..806a819 100644
--- a/plugins/libkolab/lib/kolab_format_contact.php
+++ b/plugins/libkolab/lib/kolab_format_contact.php
@@ -203,6 +203,8 @@ class kolab_format_contact extends kolab_format
$this->obj->setNote($object['notes']);
if (isset($object['freebusyurl']))
$this->obj->setFreeBusyUrl($object['freebusyurl']);
+ if (isset($object['lang']))
+ $this->obj->setLanguages(self::array2vector($object['lang']));
if (isset($object['birthday']))
$this->obj->setBDay(self::get_datetime($object['birthday'], false, true));
if (isset($object['anniversary']))
@@ -227,6 +229,12 @@ class kolab_format_contact extends kolab_format
}
}
}
+ // add other relateds
+ if (is_array($object['related'])) {
+ foreach ($object['related'] as $value) {
+ $rels->push(new Related(Related::Text, $value));
+ }
+ }
$this->obj->setRelateds($rels);
// insert/replace crypto keys
@@ -346,6 +354,7 @@ class kolab_format_contact extends kolab_format
$object['notes'] = $this->obj->note();
$object['freebusyurl'] = $this->obj->freeBusyUrl();
+ $object['lang'] = self::vector2array($this->obj->languages());
if ($bday = self::php_datetime($this->obj->bDay()))
$object['birthday'] = $bday;
@@ -363,7 +372,7 @@ class kolab_format_contact extends kolab_format
$object['photo'] = $photo_name;
// relateds -> spouse, children
- $this->read_relateds($this->obj->relateds(), $object);
+ $this->read_relateds($this->obj->relateds(), $object, 'related');
// crypto settings: currently only key values are supported
$keys = $this->obj->keys();
@@ -446,7 +455,7 @@ class kolab_format_contact extends kolab_format
/**
* Helper method to map contents of a Related vector to the contact data object
*/
- private function read_relateds($rels, &$object)
+ private function read_relateds($rels, &$object, $catchall = null)
{
$typemap = array_flip($this->relatedmap);
@@ -455,13 +464,19 @@ class kolab_format_contact extends kolab_format
if ($rel->type() != Related::Text) // we can't handle UID relations yet
continue;
+ $known = false;
$types = $rel->relationTypes();
foreach ($typemap as $t => $field) {
if ($types & $t) {
$object[$field][] = $rel->text();
+ $known = true;
break;
}
}
+
+ if (!$known && $catchall) {
+ $object[$catchall][] = $rel->text();
+ }
}
}
}
More information about the commits
mailing list