From 445d244cc8597f6fef76b602dbfe9ec598c84ff7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Barrois?= Date: Sun, 19 Sep 2010 20:40:16 +0200 Subject: [PATCH] Improve xnet account creation (guess correct name/directory_name from email) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Raphaël Barrois --- modules/xnetgrp.php | 23 ++++++++++++++++------- templates/xnetgrp/annuaire.tpl | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index b4bc9f4..0424231 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -674,18 +674,27 @@ class XnetGrpModule extends PLModule } } else { // User is of type xnet. - list($firstname, $lastname) = explode('@', $email); - $hruid = User::makeHrid($firstname, $lastname, 'ext'); + list($mbox, $domain) = explode('@', strtolower($email)); + $hruid = User::makeHrid($mbox, $domain, 'ext'); // User might already have an account (in another group for example). $user = User::get($hruid); // If the user has no account yet, creates new account: build names from email address. if (empty($user)) { - $display_name = ucwords(strtolower(substr($hruid, strpos('.', $hruid)))); - $full_name = ucwords(strtolower(str_replace('.', ' ', substr($email, strpos('@', $email))))); - XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, email, type) - VALUES ({?}, {?}, {?}, {?}, \'xnet\')', - $hruid, $display_name, $full_name, $email); + $parts = explode('.', $mbox); + if (count($parts) == 1) { + $display_name = $full_name = $directory_name = ucfirst($mbox); + } else { + $firstname = ucfirst($parts[0]); + $lastname = ucwords(implode(' ', array_slice($parts, 1))); + $display_name = $firstname; + $full_name = "$firstname $lastname"; + $directory_name = strtoupper($lastname) . " " . $firstname; + } + XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, + email, type) + VALUES ({?}, {?}, {?}, {?}, {?}, \'xnet\')', + $hruid, $display_name, $full_name, $directory_name, $email); $user = User::get($hruid); } } diff --git a/templates/xnetgrp/annuaire.tpl b/templates/xnetgrp/annuaire.tpl index a190767..7da8c93 100644 --- a/templates/xnetgrp/annuaire.tpl +++ b/templates/xnetgrp/annuaire.tpl @@ -84,7 +84,7 @@ Le groupe {$asso->nom} compte {$nb_tot} membres : {elseif $order eq '-directory_name'} {/if} - Prénom NOM + NOM Prénom -- 2.1.4