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));
|
||||
}
|
||||
|
||||
// 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)) {
|
||||
$args['form']['addressing']['content']['email'] = array(
|
||||
'type' => 'select',
|
||||
|
|
|
@ -119,6 +119,7 @@ class kolab_auth_ldap extends rcube_ldap_generic
|
|||
$entries = $result->entries(true);
|
||||
$dn = key($entries);
|
||||
$entry = array_pop($entries);
|
||||
$entry = rcube_ldap_generic::normalize_entry($entry);
|
||||
$entry = $this->field_mapping($dn, $entry);
|
||||
|
||||
return $entry;
|
||||
|
@ -287,7 +288,8 @@ class kolab_auth_ldap extends rcube_ldap_generic
|
|||
if ($limit && $limit <= $i) {
|
||||
break;
|
||||
}
|
||||
$dn = $result->get_dn();
|
||||
$dn = $result->get_dn();
|
||||
$entry = rcube_ldap_generic::normalize_entry($entry);
|
||||
$list[$dn] = $this->field_mapping($dn, $entry);
|
||||
$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_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') {
|
||||
// delegation management interface
|
||||
$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
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue