Page MenuHomePhorge

No OneTemporary

diff --git a/plugins/new_user_identity/composer.json b/plugins/new_user_identity/composer.json
index 11a0af7cd..a2e9e95dc 100644
--- a/plugins/new_user_identity/composer.json
+++ b/plugins/new_user_identity/composer.json
@@ -1,24 +1,24 @@
{
"name": "roundcube/new_user_identity",
"type": "roundcube-plugin",
"description": "Populates a new user's default identity from LDAP on their first visit.",
"license": "GNU GPLv3+",
- "version": "1.0.7",
+ "version": "1.1",
"authors": [
{
"name": "Aleksander Machniak",
"email": "alec@alec.pl",
"role": "Lead"
}
],
"repositories": [
{
"type": "composer",
"url": "http://plugins.roundcube.net"
}
],
"require": {
"php": ">=5.3.0",
"roundcube/plugin-installer": ">=0.1.3"
}
}
diff --git a/plugins/new_user_identity/new_user_identity.php b/plugins/new_user_identity/new_user_identity.php
index 976472210..f7d60d4fa 100644
--- a/plugins/new_user_identity/new_user_identity.php
+++ b/plugins/new_user_identity/new_user_identity.php
@@ -1,127 +1,133 @@
<?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+
*/
class new_user_identity extends rcube_plugin
{
public $task = 'login';
private $rc;
private $ldap;
function init()
{
$this->rc = rcmail::get_instance();
$this->add_hook('user_create', array($this, 'lookup_user_name'));
$this->add_hook('login_after', array($this, 'login_after'));
}
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;
$args['email_list'] = array();
if (!$args['user_email'] && strpos($user_email, '@')) {
$args['user_email'] = rcube_utils::idn_to_ascii($user_email);
}
foreach (array_keys($results[0]) as $key) {
if (!preg_match('/^email($|:)/', $key)) {
continue;
}
foreach ((array) $results->records[0][$key] as $alias) {
if (strpos($alias, '@')) {
$args['email_list'][] = rcube_utils::idn_to_ascii($alias);
}
}
}
}
}
return $args;
}
function login_after($args)
{
$this->load_config();
if ($this->ldap || !$this->rc->config->get('new_user_identity_onlogin')) {
return $args;
}
- $identities = $this->rc->user->list_identities();
- $ldap_entry = $this->lookup_user_name(array('user' => $this->rc->user->data['username'],
- 'host' => $this->rc->user->data['mail_host']));
-
- foreach ($ldap_entry['email_list'] as $email) {
- foreach($identities as $identity) {
+ $identities = $this->rc->user->list_identities();
+ $ldap_entry = $this->lookup_user_name(array(
+ 'user' => $this->rc->user->data['username'],
+ 'host' => $this->rc->user->data['mail_host'],
+ ));
+
+ foreach ((array) $ldap_entry['email_list'] as $email) {
+ foreach ($identities as $identity) {
if ($identity['email'] == $email ) {
continue 2;
}
}
$plugin = $this->rc->plugins->exec_hook('identity_create', array(
- 'login' => true,
- 'record' => array('user_id' => $this->rc->user->ID, 'standard' => 0,
- 'email' => $email, 'name' => $ldap_entry['user_name']),
+ 'login' => true,
+ 'record' => array(
+ 'user_id' => $this->rc->user->ID,
+ 'standard' => 0,
+ 'email' => $email,
+ 'name' => $ldap_entry['user_name']
+ ),
));
if (!$plugin['abort'] && $plugin['record']['email']) {
$this->rc->user->insert_identity($plugin['record']);
}
}
return $args;
}
private function init_ldap($host)
{
if ($this->ldap) {
return $this->ldap->ready;
}
$this->load_config();
$addressbook = $this->rc->config->get('new_user_identity_addressbook');
$ldap_config = (array)$this->rc->config->get('ldap_public');
$match = $this->rc->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],
$this->rc->config->get('ldap_debug'),
$this->rc->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;
}
}
diff --git a/plugins/new_user_identity/package.xml b/plugins/new_user_identity/package.xml
index 45a3c4c8d..12409392b 100644
--- a/plugins/new_user_identity/package.xml
+++ b/plugins/new_user_identity/package.xml
@@ -1,49 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
http://pear.php.net/dtd/tasks-1.0.xsd
http://pear.php.net/dtd/package-2.0
http://pear.php.net/dtd/package-2.0.xsd">
<name>new_user_identity</name>
<channel>pear.roundcube.net</channel>
<summary>Populates a new user's default identity from LDAP on their first visit.</summary>
<description>
Populates a new user's default identity from LDAP on their first visit.
</description>
<lead>
<name>Aleksander Machniak</name>
<user>alec</user>
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2012-08-13</date>
+ <date>2014-10-30</date>
<version>
- <release>1.0.7</release>
+ <release>1.1</release>
<api>1.1</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
<notes>-</notes>
<contents>
<dir baseinstalldir="/" name="/">
<file name="new_user_identity.php" role="php">
<tasks:replace from="@name@" to="name" type="package-info"/>
<tasks:replace from="@package_version@" to="version" type="package-info"/>
</file>
</dir>
<!-- / -->
</contents>
<dependencies>
<required>
<php>
<min>5.2.1</min>
</php>
<pearinstaller>
<min>1.7.0</min>
</pearinstaller>
</required>
</dependencies>
<phprelease/>
</package>

File Metadata

Mime Type
text/x-diff
Expires
Sat, Mar 1, 1:59 AM (5 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
165425
Default Alt Text
(7 KB)

Event Timeline