diff options
Diffstat (limited to 'plugins/new_user_identity/new_user_identity.php')
-rw-r--r-- | plugins/new_user_identity/new_user_identity.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/plugins/new_user_identity/new_user_identity.php b/plugins/new_user_identity/new_user_identity.php new file mode 100644 index 000000000..ecdf7c137 --- /dev/null +++ b/plugins/new_user_identity/new_user_identity.php @@ -0,0 +1,50 @@ +<?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 1.0 + * @author Kris Steinhoff + * + * 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 $rcmail_config['ldap_public'] array.) + * $rcmail_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. + * $rcmail_config['new_user_identity_match'] = 'uid'; + */ +class new_user_identity extends rcube_plugin +{ + public $task = 'login'; + + function init() + { + $this->add_hook('user_create', array($this, 'lookup_user_name')); + } + + function lookup_user_name($args) + { + $rcmail = rcmail::get_instance(); + if ($addressbook = $rcmail->config->get('new_user_identity_addressbook')) { + $match = $rcmail->config->get('new_user_identity_match'); + $ldap = $rcmail->get_address_book($addressbook); + $ldap->prop['search_fields'] = array($match); + $results = $ldap->search($match, $args['user'], TRUE); + if (count($results->records) == 1) { + $args['user_name'] = $results->records[0]['name']; + if (!$args['user_email'] && strpos($results->records[0]['email'], '@')) { + $args['user_email'] = idn_to_ascii($results->records[0]['email']); + } + } + } + return $args; + } +} +?> |