Only admin can edit original corps (Closes #1364).
authorStéphane Jacob <sj@m4x.org>
Sat, 27 Nov 2010 23:02:08 +0000 (00:02 +0100)
committerStéphane Jacob <sj@m4x.org>
Sat, 27 Nov 2010 23:02:20 +0000 (00:02 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/profile/jobs.inc.php
templates/profile/jobs.tpl

index 723370b..83dcade 100644 (file)
@@ -312,10 +312,11 @@ class ProfileSettingCorps implements ProfileSetting
     {
         $success = true;
         if (is_null($value)) {
-            $res = XDB::query("SELECT  original_corpsid AS original, current_corpsid AS current,
-                                       rankid AS rank, corps_pub AS pub
-                                 FROM  profile_corps
-                                WHERE  pid = {?}",
+            $res = XDB::query('SELECT  c.original_corpsid AS original, e.name AS originalText,
+                                       c.current_corpsid AS current, c.rankid AS rank, c.corps_pub AS pub
+                                 FROM  profile_corps      AS c
+                           INNER JOIN  profile_corps_enum AS e ON (c.original_corpsid = e.id)
+                                WHERE  c.pid = {?}',
                             $page->pid());
             return $res->fetchOneAssoc();
         }
@@ -324,11 +325,19 @@ class ProfileSettingCorps implements ProfileSetting
 
     public function save(ProfilePage &$page, $field, $value)
     {
-        XDB::execute('INSERT INTO  profile_corps (original_corpsid, current_corpsid, rankid, corps_pub, pid)
-                           VALUES  ({?}, {?}, {?}, {?}, {?})
-          ON DUPLICATE KEY UPDATE  original_corpsid = VALUES(original_corpsid), current_corpsid = VALUES(current_corpsid),
-                                   rankid = VALUES(rankid), corps_pub = VALUES(corps_pub)',
-                      $value['original'], $value['current'], $value['rank'], $value['pub'], $page->pid());
+        if (!S::user()->isMe($page->owner)) {
+            XDB::execute('INSERT INTO  profile_corps (original_corpsid, current_corpsid, rankid, corps_pub, pid)
+                               VALUES  ({?}, {?}, {?}, {?}, {?})
+              ON DUPLICATE KEY UPDATE  original_corpsid = VALUES(original_corpsid), current_corpsid = VALUES(current_corpsid),
+                                       rankid = VALUES(rankid), corps_pub = VALUES(corps_pub)',
+                          $value['original'], $value['current'], $value['rank'], $value['pub'], $page->pid());
+        } else {
+            XDB::execute('INSERT INTO  profile_corps (current_corpsid, rankid, corps_pub, pid)
+                               VALUES  ({?}, {?}, {?}, {?})
+              ON DUPLICATE KEY UPDATE  current_corpsid = VALUES(current_corpsid),
+                                       rankid = VALUES(rankid), corps_pub = VALUES(corps_pub)',
+                          $value['current'], $value['rank'], $value['pub'], $page->pid());
+        }
     }
 
     public function getText($value)
@@ -384,10 +393,12 @@ class ProfilePageJobs extends ProfilePage
         require_once 'emails.combobox.inc.php';
         fill_email_combobox($page, $this->owner);
 
-        $res = XDB::iterator("SELECT  id, name
-                                FROM  profile_corps_enum
-                            ORDER BY  id = 1 DESC, name");
-        $page->assign('original_corps', $res->fetchAllAssoc());
+        if (!S::user()->isMe($page->owner)) {
+            $res = XDB::iterator('SELECT  id, name
+                                    FROM  profile_corps_enum
+                                ORDER BY  id = 1 DESC, name');
+            $page->assign('original_corps', $res->fetchAllAssoc());
+        }
 
         $res = XDB::iterator("SELECT  id, name
                                 FROM  profile_corps_enum
index aa6e0df..f496e24 100644 (file)
   <tr>
     <td class="titre">Corps d'origine</td>
     <td>
+    {if $isMe}
+      {$corps.originalText}
+      <input type="hidden" name="corps[original]" value="{$corps.original}" />
+      <input type="hidden" name="corps[originalText]" value="{$corps.originalText}" />
+    {else}
       <select name="corps[original]">
         {foreach from=$original_corps item=o_corps}
         <option value="{$o_corps.id}" {if $o_corps.id eq $corps.original}selected="selected"{/if}>{$o_corps.name}</option>
         {/foreach}
       </select>
+      <input type="hidden" name="corps[originalText]" value="{$corps.originalText}" />
+    {/if}
     </td>
   </tr>
   <tr>