Provides generic functions to build full and directory names.
authorStéphane Jacob <sj@m4x.org>
Mon, 21 Nov 2011 10:34:50 +0000 (11:34 +0100)
committerStéphane Jacob <sj@m4x.org>
Mon, 28 Nov 2011 14:05:30 +0000 (15:05 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
include/name.func.inc.php
modules/admin.php
modules/xnet.php
modules/xnetgrp.php

index 3aecf92..7dd3687 100644 (file)
@@ -67,10 +67,10 @@ function build_display_names(array $public_names, array $private_names, $isFemal
     $firstname = build_first_name($public_names);
 
     $display_names = array();
-    $display_names['public_name']    = $firstname . ' ' . $full_last_name;
+    $display_names['public_name']    = build_full_name($firstname, $full_last_name);
     $display_names['private_name']   = $display_names['public_name'] . $private_last_name_end;
-    $display_names['directory_name'] = $full_last_name . ' ' . $firstname;
-    $display_names['short_name']     = $firstname . ' ' . $short_last_name;
+    $display_names['directory_name'] = build_directory_name($firstname, $full_last_name);
+    $display_names['short_name']     = build_full_name($firstname, $short_last_name);
     $display_names['sort_name']      = $short_last_name . ' ' . $firstname;
 
     return $display_names;
@@ -127,6 +127,22 @@ function build_private_name(array $private_names)
     return ' (' . implode(', ', $names_array) . ')';
 }
 
+function build_directory_name($firstname, $lastname)
+{
+    if ($firstname == '') {
+        return mb_strtoupper($lastname);
+    }
+    return mb_strtoupper($lastname) . ' ' . $firstname;
+}
+
+function build_full_name($firstname, $lastname)
+{
+    if ($firstname == '') {
+        return $lastname;
+    }
+    return $firstname . ' ' . $lastname;
+}
+
 /** Splits a name into tokens, as used in search_name.
  * Used for search_name rebuilding and for queries.
  */
index 8a53ba4..db8fae5 100644 (file)
@@ -464,13 +464,11 @@ class AdminModule extends PLModule
                     $name_update = true;
                 }
                 if ($name_update) {
-                    if (Post::s('type') != 'virtual') {
-                        $to_update['full_name'] = $firstname . ' ' . $lastname;
-                        $to_update['directory_name'] = $lastname . ' ' . $firstname;
-                    } else {
-                        $to_update['full_name'] = $lastname;
-                        $to_update['directory_name'] = $lastname;
+                    if (Post::s('type') == 'virtual') {
+                        $firstname = '';
                     }
+                    $to_update['full_name'] = build_full_name($firstname, $lastname);
+                    $to_update['directory_name'] = build_directory_name($firstname, $lastname);
                 }
                 if (Post::s('display_name') != $user->displayName()) {
                     $to_update['display_name'] = Post::s('display_name');
@@ -866,8 +864,8 @@ class AdminModule extends PLModule
                         $lastname = capitalize_name($infos[0]);
                         $firstname = capitalize_name($infos[1]);
                         if (!is_null($sex)) {
-                            $fullName = $firstname . ' ' . $lastname;
-                            $directoryName = $lastname . ' ' . $firstname;
+                            $fullName = build_full_name($firstname, $lastname);
+                            $directoryName = build_directory_name($firstname, $lastname);
                             $birthDate = self::formatBirthDate($infos[2]);
                             if ($type == 'x') {
                                 $xorgId = Profile::getXorgId($infos[4]);
@@ -919,8 +917,8 @@ class AdminModule extends PLModule
                         if (!is_null($sex)) {
                             $lastname = capitalize_name($infos[0]);
                             $firstname = capitalize_name($infos[1]);
-                            $fullName = $firstname . ' ' . $lastname;
-                            $directoryName = $lastname . ' ' . $firstname;
+                            $fullName = build_full_name($firstname, $lastname);
+                            $directoryName = build_directory_name($firstname, $lastname);
                             XDB::execute('INSERT INTO  accounts (hruid, type, is_admin, state, email, full_name, directory_name,
                                                                  display_name, lastname, firstname, sex)
                                                VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
index cb3e7f6..4dbab88 100644 (file)
@@ -256,8 +256,8 @@ class XnetModule extends PLModule
             // Update user info
             $lastname = capitalize_name(Post::t('lastname'));
             $firstname = capitalize_name(Post::t('firstname'));
-            $full_name = $firstname . ' ' . $lastname;
-            $directory_name = $lastname . ' ' . $firstname;
+            $full_name = build_full_name($firstname, $lastname);
+            $directory_name = build_directory_name($firstname, $lastname);
             XDB::query('UPDATE  accounts
                            SET  full_name = {?}, directory_name = {?}, display_name = {?},
                                 firstname = {?}, lastname = {?}, sex = {?}
index 6277582..11524dd 100644 (file)
@@ -514,17 +514,17 @@ class XnetGrpModule extends PLModule
                     continue;
                 }
 
+                require_once 'name.func.inc.php';
                 $parts = explode('.', $local_part);
                 if (count($parts) == 1) {
-                    $lastname = $display_name = $full_name = $directory_name = ucfirst($local_part);
+                    $lastname = $display_name = capitalize_name($mbox);
                     $firstname = '';
                 } else {
-                    $firstname = ucfirst($parts[0]);
-                    $lastname = ucwords(implode(' ', array_slice($parts, 1)));
-                    $display_name = $firstname;
-                    $full_name = $firstname . ' ' . $lastname;
-                    $directory_name = strtoupper($lastname) . ' ' . $firstname;
+                    $display_name = $firstname = capitalize_name($parts[0]);
+                    $lastname = capitalize_name(implode(' ', array_slice($parts, 1)));
                 }
+                $full_name = build_full_name($firstname, $lastname);
+                $directory_name = build_directory_name($firstname, $lastname);
                 XDB::execute('INSERT INTO  accounts (hruid, display_name, full_name, directory_name, firstname, lastname, email, type, state)
                                    VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
                              $hruid, $display_name, $full_name, $directory_name, $firstname, $lastname, $email);
@@ -949,15 +949,14 @@ class XnetGrpModule extends PLModule
                     require_once 'name.func.inc.php';
                     $parts = explode('.', $mbox);
                     if (count($parts) == 1) {
-                        $lastname = $display_name = $full_name = $directory_name = capitalize_name($mbox);
+                        $lastname = $display_name = capitalize_name($mbox);
                         $firstname = '';
                     } else {
-                        $firstname = capitalize_name($parts[0]);
+                        $display_name = $firstname = capitalize_name($parts[0]);
                         $lastname = capitalize_name(implode(' ', array_slice($parts, 1)));
-                        $display_name = $firstname;
-                        $full_name = $firstname . ' ' . $lastname;
-                        $directory_name = $lastname . ' ' . $firstname;
                     }
+                    $full_name = build_full_name($firstname, $lastname);
+                    $directory_name = build_directory_name($firstname, $lastname);
                     XDB::execute('INSERT INTO  accounts (hruid, display_name, full_name, directory_name, firstname, lastname, email, type, state)
                                        VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
                                  $hruid, $display_name, $full_name, $directory_name, $firstname, $lastname, $email);
@@ -1235,8 +1234,9 @@ class XnetGrpModule extends PLModule
         $mmlist = new MMList(S::user(), $globals->asso('mail_domain'));
 
         if (Post::has('change')) {
-            require_once 'emails.inc.php';
             S::assert_xsrf_token();
+            require_once 'emails.inc.php';
+            require_once 'name.func.inc.php';
 
             // Convert user status to X
             if (!Post::blank('login_X')) {
@@ -1251,13 +1251,11 @@ class XnetGrpModule extends PLModule
                 $lastname = capitalize_name(Post::t('lastname'));
                 if (Post::s('type') != 'virtual') {
                     $firstname = capitalize_name(Post::t('firstname'));
-                    $full_name = $firstname . ' ' . $lastname;
-                    $directory_name = $lastname . ' ' . $firstname;
                 } else {
                     $firstname = '';
-                    $full_name = $lastname;
-                    $directory_name = $lastname;
                 }
+                $full_name = build_full_name($firstname, $lastname);
+                $directory_name = build_directory_name($firstname, $lastname);
                 XDB::query('UPDATE  accounts
                                SET  full_name = {?}, directory_name = {?}, display_name = {?},
                                     firstname = {?}, lastname = {?}, sex = {?}, type = {?}