Also merge properties of child cols of composite address book fields + remove undefined fields from template

pull/1/head
thomascube 13 years ago
parent 2429cfde78
commit 3ac5cdb4ac

@ -119,9 +119,13 @@ class rcube_ldap extends rcube_addressbook
// support for composite address
if ($this->fieldmap['street'] && $this->fieldmap['locality']) {
$this->coltypes['address'] = array('limit' => max(1, $this->coltypes['locality']['limit']), 'subtypes' => $this->coltypes['locality']['subtypes']);
foreach (array('street','locality','zipcode','region','country') as $childcol)
unset($this->coltypes[$childcol]); // remove address child col from global coltypes list
$this->coltypes['address'] = array('limit' => max(1, $this->coltypes['locality']['limit']), 'subtypes' => $this->coltypes['locality']['subtypes'], 'childs' => array());
foreach (array('street','locality','zipcode','region','country') as $childcol) {
if ($this->fieldmap[$childcol]) {
$this->coltypes['address']['childs'][$childcol] = array('type' => 'text');
unset($this->coltypes[$childcol]); // remove address child col from global coltypes list
}
}
}
else if ($this->coltypes['address'])
$this->coltypes['address'] = array('type' => 'textarea', 'childs' => null, 'limit' => 1, 'size' => 40);

@ -140,8 +140,13 @@ function rcmail_contact_source($source=null, $init_env=false, $writable=false)
$CONTACT_COLTYPES = array_intersect_key($CONTACT_COLTYPES, $contact_cols);
// add associative coltypes definition
if (!$CONTACTS->coltypes[0]) {
foreach ($CONTACTS->coltypes as $col => $colprop)
foreach ($CONTACTS->coltypes as $col => $colprop) {
if (is_array($colprop['childs'])) {
foreach ($colprop['childs'] as $childcol => $childprop)
$colprop['childs'][$childcol] = array_merge((array)$CONTACT_COLTYPES[$col]['childs'][$childcol], $childprop);
}
$CONTACT_COLTYPES[$col] = $CONTACT_COLTYPES[$col] ? array_merge($CONTACT_COLTYPES[$col], $colprop) : $colprop;
}
}
}
@ -597,7 +602,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
$coltypes[$field] += (array)$colprop;
$coltypes[$field]['count']++;
$val = strtr($template, $composite);
$val = preg_replace('/\{\w+\}/', '', strtr($template, $composite));
}
else if ($edit_mode) {
// call callback to render/format value

Loading…
Cancel
Save