Improve xnet account creation (guess correct name/directory_name from email)
authorRaphaël Barrois <raphael.barrois@polytechnique.org>
Sun, 19 Sep 2010 18:40:16 +0000 (20:40 +0200)
committerRaphaël Barrois <raphael.barrois@polytechnique.org>
Sun, 19 Sep 2010 18:40:16 +0000 (20:40 +0200)
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
modules/xnetgrp.php
templates/xnetgrp/annuaire.tpl

index b4bc9f4..0424231 100644 (file)
@@ -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);
             }
         }
index a190767..7da8c93 100644 (file)
@@ -84,7 +84,7 @@ Le groupe {$asso->nom} compte {$nb_tot} membres&nbsp;:
       {elseif $order eq '-directory_name'}
         <img src="{$platal->baseurl}images/up.png" alt="" title="Tri décroissant" />
       {/if}
-      Prénom NOM
+      NOM Prénom
       </a>
     </th>
     <th>