migrate member edition / deletion / ...
authorx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sat, 15 Jul 2006 14:30:06 +0000 (14:30 +0000)
committerx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sat, 15 Jul 2006 14:30:06 +0000 (14:30 +0000)
split those in 3 contexts, so that it's understandable

git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@500 839d8a87-29fc-0310-9880-83ba4fa771e5

htdocs.net/groupe/membres-edit.php [deleted file]
modules/xnetgrp.php
templates/xnet/groupe/annuaire-admin.tpl
templates/xnet/groupe/annuaire.tpl
templates/xnet/groupe/membres-add.tpl
templates/xnet/groupe/membres-del.tpl
templates/xnet/groupe/membres-edit.tpl

diff --git a/htdocs.net/groupe/membres-edit.php b/htdocs.net/groupe/membres-edit.php
deleted file mode 100644 (file)
index 72098bd..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-<?php
-
-    require 'xnet.inc.php';
-
-    function get_infos($email)
-    {
-        global $globals;
-        // look for uid instead of email if numeric
-        $field = is_numeric($email)?'uid':'email';
-
-        if ($field == 'email') {
-            $email = strtolower($email);
-            if (strpos($email, '@') === false) {
-                $email .= '@m4x.org';
-            }
-            list($mbox,$dom) = explode('@', $email);
-        }
-
-        $res = $globals->xdb->query(
-                "SELECT  uid, nom, prenom, email, email AS email2, perms='admin', origine
-                   FROM  groupex.membres
-                  WHERE  $field = {?} AND asso_id = {?}", $email, $globals->asso('id'));
-
-        if ($res->numRows()) {
-            return $res->fetchOneAssoc();
-        } elseif ($dom == 'polytechnique.org' || $dom == 'm4x.org') {
-            $res = $globals->xdb->query(
-                    "SELECT  user_id AS uid, u.promo, IF(u.nom_usage<>'', u.nom_usage, u.nom) as nom, u.prenom, b.alias,
-                             CONCAT(b.alias, '@m4x.org') AS email,
-                             CONCAT(b.alias, '@polytechnique.org') AS email2,
-                             m.perms='admin' AS perms, m.origine
-                       FROM  auth_user_md5   AS u
-                 INNER JOIN  aliases         AS a ON ( u.user_id = a.id AND a.type != 'homonyme' )
-                 INNER JOIN  aliases         AS b ON ( u.user_id = b.id AND b.type = 'a_vie' )
-                 INNER JOIN  groupex.membres AS m ON ( m.uid = u.user_id AND asso_id={?})
-                      WHERE  a.alias = {?} AND u.user_id < 50000", $globals->asso('id'), $mbox);
-            return $res->fetchOneAssoc();
-        }
-
-        return null;
-    }
-
-    if (Env::has('new'))
-    {
-        new_groupadmin_page('xnet/groupe/membres-add.tpl');
-        $x = (Env::get('new') == 'x');
-
-        if (Env::has('email')) {
-            $email = Env::get('email');
-            list(,$fqdn) = explode('@', $email);
-            $fqdn = strtolower($fqdn);
-            if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' ||
-                $fqdn == 'm4x.org' || $fqdn == 'melix.net')
-            {
-                $x = true;
-            }
-
-            if ($x) {
-                require_once 'user.func.inc.php';
-                if ($forlife = get_user_forlife($email)) {
-                    $globals->xdb->execute(
-                        'INSERT INTO  groupex.membres (uid,asso_id,origine)
-                        SELECT  user_id,{?},"X"
-                        FROM  auth_user_md5 AS u
-                        INNER JOIN  aliases       AS a ON (u.user_id = a.id)
-                        WHERE  a.alias={?}', $globals->asso('id'), $forlife);
-                        redirect($_SERVER['PHP_SELF'].'?edit='.$email);
-                } else {
-                    $page->trig($email." n'est pas un alias polytechnique.org valide");
-                }
-            } else {
-                if (isvalid_email($email)) {
-                    $res = $globals->xdb->query('SELECT MAX(uid)+1 FROM groupex.membres');
-                    $uid = max(intval($res->fetchOneCell()), 50001);
-                    $globals->xdb->execute('INSERT INTO  groupex.membres (uid,asso_id,origine,email) VALUES({?},{?},"ext",{?})',
-                            $uid, $globals->asso('id'), $email);
-                    redirect($_SERVER['PHP_SELF'].'?edit='.$email);
-                } else {
-                    $page->trig("« <strong>$email</strong> » n'est pas une adresse mail valide");
-                }
-            }
-        }
-    }
-    elseif (Env::has('edit'))
-    {
-        new_groupadmin_page('xnet/groupe/membres-edit.tpl');
-
-        $user = get_infos(Env::get('edit'));
-        if (empty($user)) {
-            redirect('annuaire');
-        }
-
-        require 'lists.inc.php';
-        $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $globals->asso('mail_domain'));
-
-        if (Post::has('change')) {
-
-            if ($user['origine'] != 'X')
-            {
-                $globals->xdb->query('UPDATE groupex.membres SET prenom={?}, nom={?}, email={?} WHERE uid={?} AND asso_id={?}',
-                        Post::get('prenom'), Post::get('nom'), Post::get('email'), $user['uid'], $globals->asso('id'));
-                $user['nom']    = Post::get('nom');
-                $user['prenom'] = Post::get('prenom');
-                $user['email']  = Post::get('email');
-                $user['email2'] = Post::get('email');
-            }
-
-            $perms = Post::getInt('is_admin');
-            if ($user['perms'] != $perms) {
-                $globals->xdb->query('UPDATE groupex.membres SET perms={?} WHERE uid={?} AND asso_id={?}',
-                    $perms ? 'admin' : 'membre', $user['uid'], $globals->asso('id'));
-                $user['perms'] = $perms;
-                $page->trig('permissions modifiées');
-            }
-
-            foreach (Env::getMixed('ml1',array()) as $ml => $state) {
-                $ask = empty($_REQUEST['ml2'][$ml]) ? 0 : 2;
-                if ($ask == $state) continue;
-                if ($state == '1') {
-                    $page->trig("{$user['prenom']} {$user['nom']} a actuellement une demande d'inscription en cours sur <strong>$ml@</strong> !!!");
-                } elseif ($ask) {
-                    $client->mass_subscribe($ml, Array($user['email2']));
-                    $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml@");
-                } else {
-                    $client->mass_unsubscribe($ml, Array($user['email2']));
-                    $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml@");
-                }
-            }
-
-            foreach (Env::getMixed('ml3', array()) as $ml => $state) {
-                $ask = !empty($_REQUEST['ml4'][$ml]);
-                if($state == $ask) continue;
-                if($ask) {
-                    $globals->xdb->query("INSERT INTO  virtual_redirect (vid,redirect)
-                                               SELECT  vid,{?} FROM virtual WHERE alias={?}",
-                                         $user['email'], $ml);
-                    $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml");
-                } else {
-                    $globals->xdb->query("DELETE FROM  virtual_redirect
-                                                USING  virtual_redirect
-                                           INNER JOIN  virtual USING(vid)
-                                                WHERE  redirect={?} AND alias={?}", $user['email'], $ml);
-                    $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml");
-                }
-            }
-           redirect('annuaire');
-        }
-
-        $page->assign('user', $user);
-        $listes = $client->get_lists($user['email2']);
-        $page->assign('listes', $listes);
-
-        $res = $globals->xdb->query(
-                'SELECT  alias, redirect IS NOT NULL as sub
-                   FROM  virtual          AS v
-              LEFT JOIN  virtual_redirect AS vr ON(v.vid=vr.vid AND redirect={?})
-                  WHERE  alias LIKE {?} AND type="user"', $user['email'], '%@'.$globals->asso('mail_domain'));
-        $page->assign('alias', $res->fetchAllAssoc());
-    }
-    elseif (Env::has('del'))
-    {
-        new_groupadmin_page('xnet/groupe/membres-del.tpl');
-        $user = get_infos(Env::get('del'));
-        if (empty($user)) {
-            redirect('annuaire');
-        }
-        $page->assign('user', $user);
-
-        if (Post::has('confirm')) {
-
-            $globals->xdb->execute(
-                    "DELETE FROM  groupex.membres WHERE uid={?} AND asso_id={?}",
-                    $user['uid'], $globals->asso('id'));
-
-            // don't unsubscribe email from list if other user use same email
-            $user_same_email = get_infos($user['email']);
-
-            if (($domain = $globals->asso('mail_domain')) && empty($user_same_email)) {
-
-                require 'lists.inc.php';
-                $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $domain);
-                $listes = $client->get_lists($user['email2']);
-
-                foreach ($listes as $liste) {
-                    if ($liste['sub'] == 2) {
-                        $client->mass_unsubscribe($liste['list'], Array($user['email2']));
-                        $page->trig("{$user['prenom']} {$user['nom']} a été désinscrit de {$liste['list']}");
-                    } elseif ($liste['sub']) {
-                        $page->trig("{$user['prenom']} {$user['nom']} a une demande d'inscription en cours sur la liste {$liste['list']}@ !");
-                    }
-                }
-
-                $globals->xdb->execute(
-                        "DELETE FROM  virtual_redirect
-                               USING  virtual_redirect
-                          INNER JOIN  virtual USING(vid)
-                               WHERE  redirect={?} AND alias LIKE {?}", $user['email'], '%@'.$domain);
-                if (mysql_affected_rows()) {
-                    $page->trig("{$user['prenom']} {$user['nom']} a été désabonné des alias du groupe !");
-                }
-            }
-
-            $page->trig("{$user['prenom']} {$user['nom']} a été retiré du groupe !");
-        }
-    }
-    else {
-        redirect('annuaire');
-    }
-
-    $page->run();
-
-?>
index e94ad1f..2c8a39b 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
+function get_infos($email)
+{
+    global $globals;
+    // look for uid instead of email if numeric
+    $field = is_numeric($email)?'uid':'email';
+
+    if ($field == 'email') {
+        $email = strtolower($email);
+        if (strpos($email, '@') === false) {
+            $email .= '@m4x.org';
+        }
+        list($mbox,$dom) = explode('@', $email);
+    }
+
+    $res = $globals->xdb->query(
+            "SELECT  uid, nom, prenom, email, email AS email2, perms='admin', origine
+               FROM  groupex.membres
+              WHERE  $field = {?} AND asso_id = {?}", $email, $globals->asso('id'));
+
+    if ($res->numRows()) {
+        return $res->fetchOneAssoc();
+    } elseif ($dom == 'polytechnique.org' || $dom == 'm4x.org') {
+        $res = $globals->xdb->query(
+                "SELECT  user_id AS uid, u.promo,
+                         IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom,
+                         u.prenom, b.alias,
+                         CONCAT(b.alias, '@m4x.org') AS email,
+                         CONCAT(b.alias, '@polytechnique.org') AS email2,
+                         m.perms='admin' AS perms, m.origine
+                   FROM  auth_user_md5   AS u
+             INNER JOIN  aliases         AS a ON ( u.user_id = a.id AND a.type != 'homonyme' )
+             INNER JOIN  aliases         AS b ON ( u.user_id = b.id AND b.type = 'a_vie' )
+             INNER JOIN  groupex.membres AS m ON ( m.uid = u.user_id AND asso_id={?})
+                  WHERE  a.alias = {?} AND u.user_id < 50000", $globals->asso('id'), $mbox);
+        return $res->fetchOneAssoc();
+    }
+
+    return null;
+}
+
+
 class XnetGrpModule extends PLModule
 {
     function handlers()
@@ -35,6 +76,13 @@ class XnetGrpModule extends PLModule
 
             'grp/admin/annuaire'
                  => $this->make_hook('admin_annuaire', AUTH_MDP),
+
+            'grp/member'
+                 => $this->make_hook('admin_member', AUTH_MDP),
+            'grp/member/new'
+                 => $this->make_hook('admin_member_new', AUTH_MDP),
+            'grp/member/del'
+                 => $this->make_hook('admin_member_del', AUTH_MDP),
         );
     }
 
@@ -92,7 +140,7 @@ class XnetGrpModule extends PLModule
         if (Post::has('submit')) {
             if (has_perms()) {
                 if (Post::get('mail_domain') && (strstr(Post::get('mail_domain'), '.') === false)) {
-                    $page->trig_run("le domaine doit être un FQDN (aucune modif effectuée) !!!");
+                    $page->trig_run("le domaine doit être un FQDN (aucune modif effectuée) !!!");
                 }
                 $globals->xdb->execute(
                     "UPDATE  groupex.asso
@@ -167,7 +215,7 @@ class XnetGrpModule extends PLModule
             require_once 'xnet/mail.inc.php';
             $tos = get_all_redirects(Post::has('membres'), $mls, $client);
             send_xnet_mails($from, $sujet, $body, $tos, Post::get('replyto'));
-            $page->kill("Mail envoyé !");
+            $page->kill("Mail envoyé !");
             $page->assign('sent', true);
         }
     }
@@ -205,7 +253,7 @@ class XnetGrpModule extends PLModule
                        ORDER BY  letter', $globals->asso('id'));
         else
             $res = $globals->xdb->iterRow(
-                        'SELECT  IF(m.origine="X",u.promo,"extérieur") AS promo,
+                        'SELECT  IF(m.origine="X",u.promo,"extérieur") AS promo,
                                  COUNT(*), IF(m.origine="X",u.promo,"") AS promo_o
                            FROM  groupex.membres AS m
                       LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
@@ -232,7 +280,7 @@ class XnetGrpModule extends PLModule
         $nbp   = intval(($tot-1)/NB_PER_PAGE);
         $links = array();
         if ($ofs) {
-            $links['précédent'] = $ofs-1;
+            $links['précédent'] = $ofs-1;
         }
         for ($i = 0; $i <= $nbp; $i++) {
             $links[(string)($i+1)] = $i;
@@ -250,14 +298,14 @@ class XnetGrpModule extends PLModule
                            IF(u.nom_usage<>"", u.nom_usage, u.nom),
                            m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"';
         } elseif (Env::has('promo')) {
-            $ini = 'AND IF(m.origine="X", u.promo, "extérieur") = "'
+            $ini = 'AND IF(m.origine="X", u.promo, "extérieur") = "'
                  .addslashes(Env::get('promo')).'"';
         }
 
         $ann = $globals->xdb->iterator(
                   "SELECT  IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
                            IF(m.origine='X',u.prenom,m.prenom) AS prenom,
-                           IF(m.origine='X',u.promo,'extérieur') AS promo,
+                           IF(m.origine='X',u.promo,'extérieur') AS promo,
                            IF(m.origine='X',u.promo,'') AS promo_o,
                            IF(m.origine='X',a.alias,m.email) AS email,
                            IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
@@ -286,9 +334,9 @@ class XnetGrpModule extends PLModule
         $page->assign('admin', may_update());
 
         if (!$globals->asso('inscriptible'))
-                $page->kill("Il n'est pas possible de s'inscire en ligne à ce "
-                            ."groupe. Essaie de joindre le contact indiqué "
-                            ."sur la page de présentation.");
+                $page->kill("Il n'est pas possible de s'inscire en ligne à ce "
+                            ."groupe. Essaie de joindre le contact indiqué "
+                            ."sur la page de présentation.");
 
         if (!is_null($u) && may_update()) {
             $page->assign('u', $u);
@@ -307,7 +355,7 @@ class XnetGrpModule extends PLModule
                                             $u, $globals->asso('id'));
                 $n   = $res->fetchOneCell();
                 if ($n) {
-                    $page->trig_run("$prenom $nom est déjà membre du groupe !");
+                    $page->trig_run("$prenom $nom est déjà membre du groupe !");
                 }
                 elseif (Env::has('accept'))
                 {
@@ -322,14 +370,14 @@ class XnetGrpModule extends PLModule
                     $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription');
                     $message = "Cher Camarade,\n"
                              . "\n"
-                             . "  Suite à ta demande d'adhésion à ".$globals->asso('nom').",\n"
-                             . "j'ai le plaisir de t'annoncer que ton inscription a été validée !\n"
+                             . "  Suite à ta demande d'adhésion à ".$globals->asso('nom').",\n"
+                             . "j'ai le plaisir de t'annoncer que ton inscription a été validée !\n"
                              . "\n"
                              . "Bien cordialement,\n"
                              . "{$_SESSION["prenom"]} {$_SESSION["nom"]}.";
                     $mailer->setTxtBody($message);
                     $mailer->send();
-                    $page->kill("$prenom $nom a bien été inscrit");
+                    $page->kill("$prenom $nom a bien été inscrit");
                 }
                 elseif (Env::has('refuse'))
                 {
@@ -338,10 +386,10 @@ class XnetGrpModule extends PLModule
                     $mailer->addTo("$u@polytechnique.org");
                     $mailer->setFrom('"'.Session::get('prenom').' '.Session::get('nom')
                                      .'" <'.Session::get('forlife').'@polytechnique.org>');
-                    $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée');
+                    $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée');
                     $mailer->setTxtBody(Env::get('motif'));
                     $mailer->send();
-                    $page->kill("la demande $prenom $nom a bien été refusée");
+                    $page->kill("la demande $prenom $nom a bien été refusée");
                 } else {
                     $page->assign('show_form', true);
                     $page->assign('prenom', $prenom);
@@ -355,7 +403,7 @@ class XnetGrpModule extends PLModule
         }
 
         if (is_member()) {
-            $page->kill("tu es déjà membre !");
+            $page->kill("tu es déjà membre !");
             return;
         }
 
@@ -373,7 +421,7 @@ class XnetGrpModule extends PLModule
 
             $append = "\n"
                     . "-- \n"
-                    . "Ce message a été envoyé suite à la demande d'inscription de\n"
+                    . "Ce message a été envoyé suite à la demande d'inscription de\n"
                     . Session::get('prenom').' '.Session::get('nom').' (X'.Session::get('promo').")\n"
                     . "Via le site www.polytechnique.net. Tu peux choisir de valider ou\n"
                     . "de refuser sa demande d'inscription depuis la page :\n"
@@ -381,15 +429,15 @@ class XnetGrpModule extends PLModule
                     "http://www.polytechnique.net/".$globals->asso("diminutif")."/subscribe/"
                         .Session::get('forlife')."\n"
                     . "\n"
-                    . "En cas de problème, contacter l'équipe de Polytechnique.org\n"
-                    . "à l'adresse : support@polytechnique.org\n";
+                    . "En cas de problème, contacter l'équipe de Polytechnique.org\n"
+                    . "à l'adresse : support@polytechnique.org\n";
 
             if (!$to) {
                 $to = $globals->asso("mail").", support@polytechnique.org";
                 $append = "\n-- \nLe groupe ".$globals->asso("nom")
-                        ." n'a pas d'administrateur, l'équipe de"
-                        ." Polytechnique.org a été prévenue et va rapidement"
-                        ." résoudre ce problème.\n";
+                        ." n'a pas d'administrateur, l'équipe de"
+                        ." Polytechnique.org a été prévenue et va rapidement"
+                        ." résoudre ce problème.\n";
             }
 
             require_once 'diogenes/diogenes.hermes.inc.php';
@@ -519,6 +567,191 @@ class XnetGrpModule extends PLModule
         $page->assign('not_in_group_x', $not_in_group_x);
         $page->assign('lists', $lists);
     }
+
+    function handler_admin_member_new(&$page, $email = null)
+    {
+        global $globals;
+
+        new_groupadmin_page('xnet/groupe/membres-add.tpl');
+
+        if (is_null($email)) {
+            return;
+        }
+
+        list(,$fqdn) = explode('@', $email);
+        $fqdn = strtolower($fqdn);
+        $x = ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' ||
+              $fqdn == 'm4x.org' || $fqdn == 'melix.net');
+
+        if ($x) {
+            require_once 'user.func.inc.php';
+            if ($forlife = get_user_forlife($email)) {
+                $globals->xdb->execute(
+                    'INSERT INTO  groupex.membres (uid,asso_id,origine)
+                    SELECT  user_id,{?},"X"
+                    FROM  auth_user_md5 AS u
+                    INNER JOIN  aliases       AS a ON (u.user_id = a.id)
+                    WHERE  a.alias={?}', $globals->asso('id'), $forlife);
+                global $platal;
+                redirect(smarty_function_rel()."/{$platal->ns}member/$email");
+            } else {
+                $page->trig($email." n'est pas un alias polytechnique.org valide");
+            }
+        } else {
+            if (isvalid_email($email)) {
+                $res = $globals->xdb->query('SELECT MAX(uid)+1 FROM groupex.membres');
+                $uid = max(intval($res->fetchOneCell()), 50001);
+                $globals->xdb->execute('INSERT INTO  groupex.membres (uid,asso_id,origine,email)
+                                        VALUES({?},{?},"ext",{?})', $uid,
+                                        $globals->asso('id'), $email);
+                global $platal;
+                redirect(smarty_function_rel()."/{$platal->ns}member/$email");
+            } else {
+                $page->trig("« <strong>$email</strong> » n'est pas une adresse mail valide");
+            }
+        }
+    }
+
+    function handler_admin_member_del(&$page, $user = null)
+    {
+        global $globals;
+
+        new_groupadmin_page('xnet/groupe/membres-del.tpl');
+        $user = get_infos($user);
+        if (empty($user)) {
+            return PL_NOT_FOUND;
+        }
+        $page->assign('user', $user);
+
+        if (!Post::has('confirm')) {
+            return;
+        }
+
+        $globals->xdb->execute(
+                "DELETE FROM  groupex.membres WHERE uid={?} AND asso_id={?}",
+                $user['uid'], $globals->asso('id'));
+
+        // don't unsubscribe email from list if other user use same email
+        $user_same_email = get_infos($user['email']);
+
+        if (($domain = $globals->asso('mail_domain')) && empty($user_same_email)) {
+
+            require 'lists.inc.php';
+            $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $domain);
+            $listes = $client->get_lists($user['email2']);
+
+            foreach ($listes as $liste) {
+                if ($liste['sub'] == 2) {
+                    $client->mass_unsubscribe($liste['list'], Array($user['email2']));
+                    $page->trig("{$user['prenom']} {$user['nom']} a été"
+                                ." désinscrit de {$liste['list']}");
+                } elseif ($liste['sub']) {
+                    $page->trig("{$user['prenom']} {$user['nom']} a une"
+                                ." demande d'inscription en cours sur la"
+                                ." liste {$liste['list']}@ !");
+                }
+            }
+
+            $globals->xdb->execute(
+                    "DELETE FROM  virtual_redirect
+                           USING  virtual_redirect
+                      INNER JOIN  virtual USING(vid)
+                           WHERE  redirect={?} AND alias LIKE {?}", $user['email'], '%@'.$domain);
+            if (mysql_affected_rows()) {
+                $page->trig("{$user['prenom']} {$user['nom']} a été désabonné des alias du groupe !");
+            }
+        }
+
+        $page->trig("{$user['prenom']} {$user['nom']} a été retiré du groupe !");
+    }
+
+    function handler_admin_member(&$page, $user)
+    {
+        global $globals;
+
+        new_groupadmin_page('xnet/groupe/membres-edit.tpl');
+
+        $user = get_infos($user);
+        if (empty($user)) {
+            return PL_NOT_FOUND;
+        }
+
+        require 'lists.inc.php';
+        $client =& lists_xmlrpc(Session::getInt('uid'),
+                                Session::get('password'),
+                                $globals->asso('mail_domain'));
+
+        if (Post::has('change')) {
+            if ($user['origine'] != 'X') {
+                $globals->xdb->query('UPDATE groupex.membres
+                                         SET prenom={?}, nom={?}, email={?}
+                                       WHERE uid={?} AND asso_id={?}',
+                                     Post::get('prenom'), Post::get('nom'),
+                                     Post::get('email'), $user['uid'],
+                                     $globals->asso('id'));
+                $user['nom']    = Post::get('nom');
+                $user['prenom'] = Post::get('prenom');
+                $user['email']  = Post::get('email');
+                $user['email2'] = Post::get('email');
+            }
+
+            $perms = Post::getInt('is_admin');
+            if ($user['perms'] != $perms) {
+                $globals->xdb->query('UPDATE groupex.membres SET perms={?}
+                                      WHERE uid={?} AND asso_id={?}',
+                                      $perms ? 'admin' : 'membre',
+                                      $user['uid'], $globals->asso('id'));
+                $user['perms'] = $perms;
+                $page->trig('permissions modifiées');
+            }
+
+            foreach (Env::getMixed('ml1', array()) as $ml => $state) {
+                $ask = empty($_REQUEST['ml2'][$ml]) ? 0 : 2;
+                if ($ask == $state) continue;
+                if ($state == '1') {
+                    $page->trig("{$user['prenom']} {$user['nom']} a "
+                               ."actuellement une demande d'inscription en "
+                               ."cours sur <strong>$ml@</strong> !!!");
+                } elseif ($ask) {
+                    $client->mass_subscribe($ml, Array($user['email2']));
+                    $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml@");
+                } else {
+                    $client->mass_unsubscribe($ml, Array($user['email2']));
+                    $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml@");
+                }
+            }
+
+            foreach (Env::getMixed('ml3', array()) as $ml => $state) {
+                $ask = !empty($_REQUEST['ml4'][$ml]);
+                if($state == $ask) continue;
+                if($ask) {
+                    $globals->xdb->query("INSERT INTO  virtual_redirect (vid,redirect)
+                                               SELECT  vid,{?} FROM virtual WHERE alias={?}",
+                                         $user['email'], $ml);
+                    $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml");
+                } else {
+                    $globals->xdb->query("DELETE FROM  virtual_redirect
+                                                USING  virtual_redirect
+                                           INNER JOIN  virtual USING(vid)
+                                                WHERE  redirect={?} AND alias={?}",
+                                         $user['email'], $ml);
+                    $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml");
+                }
+            }
+        }
+
+        $page->assign('user', $user);
+        $listes = $client->get_lists($user['email2']);
+        $page->assign('listes', $listes);
+
+        $res = $globals->xdb->query(
+                'SELECT  alias, redirect IS NOT NULL as sub
+                   FROM  virtual          AS v
+              LEFT JOIN  virtual_redirect AS vr ON(v.vid=vr.vid AND redirect={?})
+                  WHERE  alias LIKE {?} AND type="user"',
+                $user['email'], '%@'.$globals->asso('mail_domain'));
+        $page->assign('alias', $res->fetchAllAssoc());
+    }
 }
 
 ?>
index 325ab96..49aed64 100644 (file)
@@ -26,7 +26,7 @@
 
 <ul>
   {foreach from=$not_in_group_x item=n}
-  <li>{$n} [<a href='membres-edit.php?new=x&email={$n}' class='popup'>l'inscrire</a>]</li>
+  <li>{$n} [<a href='{rel}/{$platal->ns}member/new/x/{$n}' class='popup'>l'inscrire</a>]</li>
   {foreachelse}
   <li><em>tous les polytechniciens présents sur les listes sont inscrits à l'annuaire du groupe.</em></li>
   {/foreach}
@@ -35,7 +35,7 @@
 <h2>non Polytechniciens</h2>
 <ul>
   {foreach from=$not_in_group_ext item=n}
-  <li>{$n} [<a href='membres-edit.php?new=ext&email={$n}' class='popup'>l'inscrire</a>]</li>
+  <li>{$n} [<a href='{rel}/{$platal->ns}member/new/ext/{$n}' class='popup'>l'inscrire</a>]</li>
   {foreachelse}
   <li><em>tous les non-polytechniciens présents sur les listes sont inscrits à l'annuaire du groupe.</em></li>
   {/foreach}
index 76ea884..5152d35 100644 (file)
@@ -35,8 +35,7 @@ Les membres ext
 Fonctionnalités visibles uniquement par les administrateurs :
 </p>
 <ul class="descr">
-  <li><a href="membres-edit.php?new=x">Ajouter un membre X</a></li>
-  <li><a href="membres-edit.php?new=ext">Ajouter un membre extérieur</a></li>
+  <li><a href="{rel}/{$platal->ns}member/new">Ajouter un membre</a></li>
   <li><a href="{rel}/{$platal->ns}admin/annuaire">Synchroniser annuaire et Listes de diffusion</a></li>
 </ul>
 {/if}
@@ -72,8 +71,8 @@ Fonctionnalit
       {/if}
     </td>
     {if $admin}
-    <td><a href="membres-edit.php?edit={if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/profil.png" alt="Edition du profil" /></a></td>
-    <td><a href="membres-edit.php?del={if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/del.png" alt="Suppression de {$m.prenom} {$m.nom}" /></a></td>
+    <td><a href="{rel}/{$platal->ns}member/{if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/profil.png" alt="Edition du profil" /></a></td>
+    <td><a href="{rel}/{$platal->ns}member/del/{if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/del.png" alt="Suppression de {$m.prenom} {$m.nom}" /></a></td>
     {/if}
   </tr>
   {/iterate}
index 09da80e..300a857 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
-{if $smarty.request.new eq x}
+<h1>{$asso.nom} : Ajout d'un membre</h1>
 
-<h1>{$asso.nom} : Ajout d'un membre X</h1>
-
-<form method="post" action="{$smarty.server.REQUEST_URI}">
+<form method="post" action="{rel}/{$platal->ns}member/new/">
   <p class="descr">
-  Pour ajouter un X dans ton groupe, il suffit d'entrer ici une de ses adresses mail @polytechnique.org. Pour rentrer plusieurs X en une seule fois, sépare les adresses par des espaces :
+  <ul class='descr'>
+    <li>
+      Pour ajouter un X dans ton groupe, il suffit d'entrer ici une de ses
+      adresses mail @polytechnique.org.
+    </li>
+    <li>
+      Pour ajouter un extérieur dans ton groupe, il suffit d'entrer ici son
+      adresse mail, tu seras ensuite redirigé vers une page te permettant
+      d'éditer son profil (nom, prenom, ...)
+    </li>
+  </ul>
   </p>
   <div class="center">
-    <input type="text" name="email" size="40" value="{$smarty.request.email}" />
-    <input type='submit' value='Ajouter' />
-  </div>                                                                      
+    <input type="text" name="email" size="40" value="{$platal->argv[1]}" />
+    <input type='submit' value='Ajouter'
+      onclick='this.form.action += this.form.email.value' />
+  </div>
 </form>
 
-{else}
-
-<h1>{$asso.nom} : Ajout d'un membre extérieur</h1>
-
-<form method="post" action="{$smarty.server.REQUEST_URI}">
-  <p class="descr">
-  Pour ajouter un extérieur dans ton groupe, il suffit d'entrer ici son adresse mail,
-  tu seras ensuite redirigé vers une page te permettant d'éditer son profil (nom, prenom, ...) :
-  </p>
-  <div class="center">
-    <input type="text" name="email" size="40" value="{$smarty.request.email}" />
-    <input type='submit' value='Ajouter' />
-  </div>                                                                      
-</form>
-
-{/if}
-
 {* vim:set et sw=2 sts=2 sws=2: *}
index 3e40155..1416497 100644 (file)
@@ -35,7 +35,7 @@
 </h2>
 
 
-<form method="post" action="{$smarty.server.REQUEST_URI}">
+<form method="post" action="{rel}/{$platal->ns}member/del/{$platal->argv[1]}">
   <div class="center">
     <p class="descr">
     Etes-vous sûr de vouloir supprimer {$user.prenom} {$user.nom} du groupe,
index 280e969..8315819 100644 (file)
 
 <h1>{$asso.nom} : gestion des membres</h1>
 
+<p>
+[<a href='{rel}/{$platal->ns}annuaire'>Retour à l'annuaire</a>]
+</p>
+
 <h2>
   Édition du profil de {$user.prenom} {$user.nom}
   {if $user.origine eq 'X'}
   (X{$user.promo})
   <a href="https://www.polytechnique.org/profile/{$user.alias}"><img src="{rel}/images/loupe.gif" alt="Voir la fiche" /></a>
   {/if}
-  <a href="?del={$user.email}"><img src="{rel}/images/del.png" alt="Suppression du compte" /></a>
+  <a href="{rel}/{$platal->ns}member/del/{$user.email}"><img src="{rel}/images/del.png" alt="Suppression du compte" /></a>
   <a href="mailto:{$user.email}"><img src="{rel}/images/mail.png" alt="Ecrire un mail" /></a>
 </h2>
 
-<form method="post" action="{$smarty.server.REQUEST_URI}">
+<form method="post" action="{rel}/{$platal->ns}member/{$platal->argv[1]}">
   <table cellpadding="0" cellspacing="0" class='tiny'>
     <tr>
       <td class="titre">
@@ -89,7 +93,7 @@
         <input type='checkbox' name='ml2[{$liste.list}]' {if $liste.sub eq 2}checked="checked"{/if} />
       </td>
       <td>
-        <a href='listes-members.php?liste={$liste.list}'>{$liste.list}</a>
+        <a href='{rel}/{$platal->ns}lists/members/{$liste.list}'>{$liste.list}</a>
       </td>
       <td>{$liste.desc}</td>
       <td class='right'>{$liste.nbsub}</td>