Fix so kolab_delegation plugin can modify list of addresses in
identity form (Bug #2191)
This commit is contained in:
parent
80afe69e40
commit
cdd23787e2
3 changed files with 31 additions and 1 deletions
|
@ -490,6 +490,10 @@ class kolab_auth extends rcube_plugin
|
||||||
$emails = array_merge($emails, array_filter($values));
|
$emails = array_merge($emails, array_filter($values));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// kolab_delegation might want to modify this addresses list
|
||||||
|
$plugin = $rcmail->plugins->exec_hook('kolab_auth_emails', array('emails' => $emails));
|
||||||
|
$emails = $plugin['emails'];
|
||||||
|
|
||||||
if (!empty($emails)) {
|
if (!empty($emails)) {
|
||||||
$args['form']['addressing']['content']['email'] = array(
|
$args['form']['addressing']['content']['email'] = array(
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
|
|
|
@ -119,6 +119,7 @@ class kolab_auth_ldap extends rcube_ldap_generic
|
||||||
$entries = $result->entries(true);
|
$entries = $result->entries(true);
|
||||||
$dn = key($entries);
|
$dn = key($entries);
|
||||||
$entry = array_pop($entries);
|
$entry = array_pop($entries);
|
||||||
|
$entry = rcube_ldap_generic::normalize_entry($entry);
|
||||||
$entry = $this->field_mapping($dn, $entry);
|
$entry = $this->field_mapping($dn, $entry);
|
||||||
|
|
||||||
return $entry;
|
return $entry;
|
||||||
|
@ -288,6 +289,7 @@ class kolab_auth_ldap extends rcube_ldap_generic
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$dn = $result->get_dn();
|
$dn = $result->get_dn();
|
||||||
|
$entry = rcube_ldap_generic::normalize_entry($entry);
|
||||||
$list[$dn] = $this->field_mapping($dn, $entry);
|
$list[$dn] = $this->field_mapping($dn, $entry);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,9 @@ class kolab_delegation extends rcube_plugin
|
||||||
$this->add_hook('calendar_list_filter', array($this, 'calendar_list_filter'));
|
$this->add_hook('calendar_list_filter', array($this, 'calendar_list_filter'));
|
||||||
$this->add_hook('calendar_load_itip', array($this, 'calendar_load_itip'));
|
$this->add_hook('calendar_load_itip', array($this, 'calendar_load_itip'));
|
||||||
|
|
||||||
|
// delegation support in kolab_auth plugin
|
||||||
|
$this->add_hook('kolab_auth_emails', array($this, 'kolab_auth_emails'));
|
||||||
|
|
||||||
if ($this->rc->task == 'settings') {
|
if ($this->rc->task == 'settings') {
|
||||||
// delegation management interface
|
// delegation management interface
|
||||||
$this->register_action('plugin.delegation', array($this, 'controller_ui'));
|
$this->register_action('plugin.delegation', array($this, 'controller_ui'));
|
||||||
|
@ -240,6 +243,27 @@ class kolab_delegation extends rcube_plugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegation support in kolab_auth plugin
|
||||||
|
*/
|
||||||
|
public function kolab_auth_emails($args)
|
||||||
|
{
|
||||||
|
// Add delegators addresses to address selector in user identity form
|
||||||
|
|
||||||
|
if (!empty($_SESSION['delegators'])) {
|
||||||
|
// @TODO: Consider not adding all delegator addresses to the list.
|
||||||
|
// Instead add only address of currently edited identity
|
||||||
|
foreach ($_SESSION['delegators'] as $emails) {
|
||||||
|
$args['emails'] = array_merge($args['emails'], $emails);
|
||||||
|
}
|
||||||
|
|
||||||
|
$args['emails'] = array_unique($args['emails']);
|
||||||
|
sort($args['emails']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $args;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delegation UI handler
|
* Delegation UI handler
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue