Adds positions for group members.
authorStéphane Jacob <sj@m4x.org>
Fri, 31 Dec 2010 17:39:48 +0000 (18:39 +0100)
committerStéphane Jacob <sj@m4x.org>
Fri, 31 Dec 2010 17:39:48 +0000 (18:39 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
classes/user.php
modules/xnetgrp.php
templates/xnetgrp/membres-edit.tpl
upgrade/1.1.0/04_xnetgrp.sql

index fb9059c..b5669fa 100644 (file)
@@ -172,6 +172,7 @@ class User extends PlUser
             $joins .= XDB::format("LEFT JOIN group_members AS gpm ON (gpm.uid = a.uid AND gpm.asso_id = {?})\n", $globals->asso('id'));
             $fields[] = 'gpm.perms AS group_perms';
             $fields[] = 'gpm.comm AS group_comm';
+            $fields[] = 'gpm.position AS group_position';
         }
         if (count($fields) > 0) {
             $fields = ', ' . implode(', ', $fields);
index 76be456..eb70ad1 100644 (file)
@@ -919,11 +919,12 @@ class XnetGrpModule extends PLModule
             // Update group params for user
             $perms = Post::v('group_perms');
             $comm  = Post::t('comm');
-            if ($user->group_perms != $perms || $user->group_comm != $comm) {
+            $position = (Post::t('group_position') == '') ? null : Post::v('group_position');
+            if ($user->group_perms != $perms || $user->group_comm != $comm || $user->group_position != $position) {
                 XDB::query('UPDATE  group_members
-                               SET  perms = {?}, comm = {?}
+                               SET  perms = {?}, comm = {?}, position = {?}
                              WHERE  uid = {?} AND asso_id = {?}',
-                            ($perms == 'admin') ? 'admin' : 'membre', $comm,
+                            ($perms == 'admin') ? 'admin' : 'membre', $comm, $position,
                             $user->id(), $globals->asso('id'));
                 if (XDB::affectedRows()) {
                     if ($perms != $user->group_perms) {
@@ -992,9 +993,13 @@ class XnetGrpModule extends PLModule
             }
         }
 
+        $res = XDB::rawFetchAllAssoc('SHOW COLUMNS FROM group_members LIKE \'position\'');
+        $positions = str_replace(array('enum(', ')', '\''), '', $res[0]['Type']);
+
         $page->assign('user', $user);
         $page->assign('listes', $mmlist->get_lists($user->forlifeEmail()));
         $page->assign('alias', $user->emailAliases($globals->asso('mail_domain'), 'user', true));
+        $page->assign('positions', explode(',', $positions));
     }
 
     function handler_rss(&$page, $user = null, $hash = null)
index ea1050d..b2f9adf 100644 (file)
         </select>
       </td>
     </tr>
+    <tr class="pair">
+      <td class="titre">
+        Poste&nbsp;:
+      </td>
+      <td>
+        <select name="group_position">
+          <option value=""{if $user->group_position eq ''} selected="selected"{/if}></option>
+          {foreach from=$positions item=position}
+          <option value="{$position}"{if $user->group_position eq $position} selected="selected"{/if}>{$position}</option>
+          {/foreach}
+        </select>
+      </td>
+    </tr>
     {if !$user->profile()}
     <tr class="impair">
       <td class="titre">
index 3b32205..568cd5d 100644 (file)
@@ -1,3 +1,4 @@
 ALTER TABLE groups ADD COLUMN axDate DATE DEFAULT NULL;
+ALTER TABLE group_members ADD COLUMN position ENUM('Président', 'Vice-président', 'Trésorier', 'Vice-trésorier', 'Secrétaire', 'Directeur', 'Délégué général', 'Secrétaire général', 'Membre du bureau') DEFAULT NULL;
 
 -- vim:set syntax=mysql: