Fix wrong mapping of title/role fields in contacts + simplified saving of relateds

This commit is contained in:
Thomas Bruederli 2013-11-06 13:38:57 +01:00
parent 2775d7091e
commit b5d7d3d765

View file

@ -107,8 +107,8 @@ class kolab_format_contact extends kolab_format
if (isset($object['nickname'])) if (isset($object['nickname']))
$this->obj->setNickNames(self::array2vector($object['nickname'])); $this->obj->setNickNames(self::array2vector($object['nickname']));
if (isset($object['profession'])) if (isset($object['jobtitle']))
$this->obj->setTitles(self::array2vector($object['profession'])); $this->obj->setTitles(self::array2vector($object['jobtitle']));
// organisation related properties (affiliation) // organisation related properties (affiliation)
$org = new Affiliation; $org = new Affiliation;
@ -117,17 +117,17 @@ class kolab_format_contact extends kolab_format
$org->setOrganisation($object['organization']); $org->setOrganisation($object['organization']);
if ($object['department']) if ($object['department'])
$org->setOrganisationalUnits(self::array2vector($object['department'])); $org->setOrganisationalUnits(self::array2vector($object['department']));
if ($object['jobtitle']) if ($object['profession'])
$org->setRoles(self::array2vector($object['jobtitle'])); $org->setRoles(self::array2vector($object['profession']));
$rels = new vectorrelated; $rels = new vectorrelated;
if ($object['manager']) { foreach (array('manager','assistant') as $field) {
foreach ((array)$object['manager'] as $manager) if (!empty($object[$field])) {
$rels->push(new Related(Related::Text, $manager, Related::Manager)); $reltype = $this->relatedmap[$field];
} foreach ((array)$object[$field] as $value) {
if ($object['assistant']) { $rels->push(new Related(Related::Text, $value, $reltype));
foreach ((array)$object['assistant'] as $assistant) }
$rels->push(new Related(Related::Text, $assistant, Related::Assistant)); }
} }
$org->setRelateds($rels); $org->setRelateds($rels);
@ -219,12 +219,13 @@ class kolab_format_contact extends kolab_format
// spouse and children are relateds // spouse and children are relateds
$rels = new vectorrelated; $rels = new vectorrelated;
if ($object['spouse']) { foreach (array('spouse','children') as $field) {
$rels->push(new Related(Related::Text, $object['spouse'], Related::Spouse)); if (!empty($object[$field])) {
} $reltype = $this->relatedmap[$field];
if ($object['children']) { foreach ((array)$object[$field] as $value) {
foreach ((array)$object['children'] as $child) $rels->push(new Related(Related::Text, $value, $reltype));
$rels->push(new Related(Related::Text, $child, Related::Child)); }
}
} }
$this->obj->setRelateds($rels); $this->obj->setRelateds($rels);
@ -296,7 +297,7 @@ class kolab_format_contact extends kolab_format
$object['prefix'] = join(' ', self::vector2array($nc->prefixes())); $object['prefix'] = join(' ', self::vector2array($nc->prefixes()));
$object['suffix'] = join(' ', self::vector2array($nc->suffixes())); $object['suffix'] = join(' ', self::vector2array($nc->suffixes()));
$object['nickname'] = join(' ', self::vector2array($this->obj->nickNames())); $object['nickname'] = join(' ', self::vector2array($this->obj->nickNames()));
$object['profession'] = join(' ', self::vector2array($this->obj->titles())); $object['jobtitle'] = join(' ', self::vector2array($this->obj->titles()));
$object['categories'] = self::vector2array($this->obj->categories()); $object['categories'] = self::vector2array($this->obj->categories());
// organisation related properties (affiliation) // organisation related properties (affiliation)
@ -304,7 +305,7 @@ class kolab_format_contact extends kolab_format
if ($orgs->size()) { if ($orgs->size()) {
$org = $orgs->get(0); $org = $orgs->get(0);
$object['organization'] = $org->organisation(); $object['organization'] = $org->organisation();
$object['jobtitle'] = join(' ', self::vector2array($org->roles())); $object['profession'] = join(' ', self::vector2array($org->roles()));
$object['department'] = join(' ', self::vector2array($org->organisationalUnits())); $object['department'] = join(' ', self::vector2array($org->organisationalUnits()));
$this->read_relateds($org->relateds(), $object); $this->read_relateds($org->relateds(), $object);
} }