Fix so kolab_delegation plugin can modify list of addresses in

identity form (Bug #2191)
This commit is contained in:
Aleksander Machniak 2013-09-11 14:01:38 +02:00
parent 80afe69e40
commit cdd23787e2
3 changed files with 31 additions and 1 deletions

View file

@ -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',

View file

@ -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++;
}

View file

@ -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
*/