Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F223295
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/plugins/new_user_identity/new_user_identity.php b/plugins/new_user_identity/new_user_identity.php
index 3943134b2..bc0658a4b 100644
--- a/plugins/new_user_identity/new_user_identity.php
+++ b/plugins/new_user_identity/new_user_identity.php
@@ -1,85 +1,111 @@
<?php
/**
* New user identity
*
* Populates a new user's default identity from LDAP on their first visit.
*
* This plugin requires that a working public_ldap directory be configured.
*
* @version @package_version@
* @author Kris Steinhoff
* @license GNU GPLv3+
*
* Example configuration:
*
* // The id of the address book to use to automatically set a new
* // user's full name in their new identity. (This should be an
* // string, which refers to the $config['ldap_public'] array.)
* $config['new_user_identity_addressbook'] = 'People';
*
* // When automatically setting a new users's full name in their
* // new identity, match the user's login name against this field.
* $config['new_user_identity_match'] = 'uid';
*/
class new_user_identity extends rcube_plugin
{
public $task = 'login';
private $ldap;
function init()
{
$this->add_hook('user_create', array($this, 'lookup_user_name'));
}
function lookup_user_name($args)
{
if ($this->init_ldap($args['host'])) {
$results = $this->ldap->search('*', $args['user'], true);
if (count($results->records) == 1) {
$user_name = is_array($results->records[0]['name']) ? $results->records[0]['name'][0] : $results->records[0]['name'];
$user_email = is_array($results->records[0]['email']) ? $results->records[0]['email'][0] : $results->records[0]['email'];
$args['user_name'] = $user_name;
if (!$args['user_email'] && strpos($user_email, '@')) {
$args['user_email'] = rcube_utils::idn_to_ascii($user_email);
}
+
+ $args['email_list'] = array();
+ $i=0;
+ $keys = array_keys( $results[0] );
+
+ foreach ( $keys as $key ) {
+ if (!preg_match( '/^email($|:)/', $key )) {
+ continue;
+ }
+
+ if (is_array($results->records[0][$key])) {
+ foreach($results->records[0][$key] as $alias) {
+ if(strpos($alias, '@')) {
+ $args['email_list'][$i++] = rcube_idn_to_ascii($alias);
+ }
+ }
+ }
+ else {
+ $alias = $results->records[0][$key];
+ if (strpos($alias, '@')) {
+ $args['email_list'][$i++] = rcube_idn_to_ascii($alias);
+ }
+
+ }
+ }
+
}
}
return $args;
}
private function init_ldap($host)
{
if ($this->ldap) {
return $this->ldap->ready;
}
$rcmail = rcmail::get_instance();
$addressbook = $rcmail->config->get('new_user_identity_addressbook');
$ldap_config = (array)$rcmail->config->get('ldap_public');
$match = $rcmail->config->get('new_user_identity_match');
if (empty($addressbook) || empty($match) || empty($ldap_config[$addressbook])) {
return false;
}
$this->ldap = new new_user_identity_ldap_backend(
$ldap_config[$addressbook],
$rcmail->config->get('ldap_debug'),
$rcmail->config->mail_domain($host),
$match);
return $this->ldap->ready;
}
}
class new_user_identity_ldap_backend extends rcube_ldap
{
function __construct($p, $debug, $mail_domain, $search)
{
parent::__construct($p, $debug, $mail_domain);
$this->prop['search_fields'] = (array)$search;
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Mar 1, 2:37 AM (16 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
165552
Default Alt Text
(3 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment