Forbids user's name edition if she owns a profile, update profile sex when user has...
authorStéphane Jacob <sj@m4x.org>
Sat, 17 Jul 2010 16:23:01 +0000 (18:23 +0200)
committerStéphane Jacob <sj@m4x.org>
Sat, 17 Jul 2010 16:23:01 +0000 (18:23 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/admin.php
templates/admin/user.tpl

index 9621f21..4d58460 100644 (file)
@@ -413,20 +413,25 @@ class AdminModule extends PLModule
         if (Post::has('disable_weak_access')) {
             $to_update['weak_password'] = null;
         } else if (Post::has('update_account')) {
-            if (Post::s('full_name') != $user->fullName()) {
-                // XXX: Update profile if a profile is associated
-                $to_update['full_name'] = Post::s('full_name');
-            }
-            if (Post::s('display_name') != $user->displayName()) {
-                // XXX: Update profile if a profile is associated
-                $to_update['display_name'] = Post::s('display_name');
-            }
-            if (Post::s('directory_name') != $user->directoryName()) {
-                // XXX: Update profile if a profile is associated
-                $to_update['directory_name'] = Post::s('directory_name');
+            if (!$user->hasProfile()) {
+                if (Post::s('full_name') != $user->fullName()) {
+                    $to_update['full_name'] = Post::s('full_name');
+                }
+                if (Post::s('display_name') != $user->displayName()) {
+                    $to_update['display_name'] = Post::s('display_name');
+                }
+                if (Post::s('directory_name') != $user->directoryName()) {
+                    $to_update['directory_name'] = Post::s('directory_name');
+                }
             }
             if (Post::s('sex') != ($user->isFemale() ? 'female' : 'male')) {
                 $to_update['sex'] = Post::s('sex');
+                if ($user->hasProfile()) {
+                    XDB::execute('UPDATE  profiles
+                                     SET  sex = {?}
+                                   WHERE  pid = {?}',
+                                 Post::s('sex'), $user->profile()->id());
+                }
             }
             if (!Post::blank('hashpass')) {
                 $to_update['password'] = Post::s('hashpass');
@@ -669,6 +674,7 @@ class AdminModule extends PLModule
         }
 
         $page->assign('user', $user);
+        $page->assign('hasProfile', $user->hasProfile());
 
         // Displays forum bans.
         $res = XDB::query("SELECT  write_perm, read_perm, comment
index 115b517..7d74d28 100644 (file)
@@ -127,15 +127,15 @@ $(document).ready(function() {
     </tr>
     <tr>
       <td class="titre">Nom complet</td>
-      <td><input type="text" name="full_name" maxlength="255" value="{$user->fullName()}" /></td>
+      <td>{if $hasProfile}{$user->fullName()}{else}<input type="text" name="full_name" maxlength="255" value="{$user->fullName()}" />{/if}</td>
     </tr>
     <tr>
       <td class="titre">Nom annuaire</td>
-      <td><input type="text" name="directory_name" maxlength="255" value="{$user->directoryName()}" /></td>
+      <td>{if $hasProfile}{$user->directoryName()}{else}<input type="text" name="directory_name" maxlength="255" value="{$user->directoryName()}" />{/if}</td>
     </tr>
     <tr>
       <td class="titre">Nom affiché</td>
-      <td><input type="text" name="display_name" maxlength="255" value="{$user->displayName()}" /></td>
+      <td>{if $hasProfile}{$user->displayName()}{else}<input type="text" name="display_name" maxlength="255" value="{$user->displayName()}" />{/if}</td>
     </tr>
     <tr>
       <td class="titre">Sexe</td>