Force baseurl because it is used in redirect
[platal.git] / modules / xnetgrp.php
index 2c8a39b..dc41ccd 100644 (file)
@@ -23,7 +23,7 @@ function get_infos($email)
 {
     global $globals;
     // look for uid instead of email if numeric
-    $field = is_numeric($email)?'uid':'email';
+    $field = is_numeric($email) ? 'uid' : 'email';
 
     if ($field == 'email') {
         $email = strtolower($email);
@@ -33,7 +33,7 @@ function get_infos($email)
         list($mbox,$dom) = explode('@', $email);
     }
 
-    $res = $globals->xdb->query(
+    $res = 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'));
@@ -41,7 +41,7 @@ function get_infos($email)
     if ($res->numRows()) {
         return $res->fetchOneAssoc();
     } elseif ($dom == 'polytechnique.org' || $dom == 'm4x.org') {
-        $res = $globals->xdb->query(
+        $res = XDB::query(
                 "SELECT  user_id AS uid, u.promo,
                          IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom,
                          u.prenom, b.alias,
@@ -65,23 +65,23 @@ class XnetGrpModule extends PLModule
     function handlers()
     {
         return array(
-            'grp'            => $this->make_hook('index',     AUTH_PUBLIC),
-            'grp/asso.php'   => $this->make_hook('index',     AUTH_PUBLIC),
-            'grp/logo'       => $this->make_hook('logo',      AUTH_PUBLIC),
-            'grp/edit'       => $this->make_hook('edit',      AUTH_MDP),
-            'grp/mail'       => $this->make_hook('mail',      AUTH_MDP),
-            'grp/annuaire'   => $this->make_hook('annuaire',  AUTH_MDP),
-            'grp/subscribe'  => $this->make_hook('subscribe', AUTH_MDP),
-            'grp/paiement'   => $this->make_hook('paiement',  AUTH_MDP),
-
-            'grp/admin/annuaire'
+            '%grp'            => $this->make_hook('index',     AUTH_PUBLIC),
+            '%grp/asso.php'   => $this->make_hook('index',     AUTH_PUBLIC),
+            '%grp/logo'       => $this->make_hook('logo',      AUTH_PUBLIC),
+            '%grp/edit'       => $this->make_hook('edit',      AUTH_MDP),
+            '%grp/mail'       => $this->make_hook('mail',      AUTH_MDP),
+            '%grp/annuaire'   => $this->make_hook('annuaire',  AUTH_MDP),
+            '%grp/subscribe'  => $this->make_hook('subscribe', AUTH_MDP),
+            '%grp/paiement'   => $this->make_hook('paiement',  AUTH_MDP),
+
+            '%grp/admin/annuaire'
                  => $this->make_hook('admin_annuaire', AUTH_MDP),
 
-            'grp/member'
+            '%grp/member'
                  => $this->make_hook('admin_member', AUTH_MDP),
-            'grp/member/new'
+            '%grp/member/new'
                  => $this->make_hook('admin_member_new', AUTH_MDP),
-            'grp/member/del'
+            '%grp/member/del'
                  => $this->make_hook('admin_member_del', AUTH_MDP),
         );
     }
@@ -98,7 +98,7 @@ class XnetGrpModule extends PLModule
         $page->useMenu();
         $page->setType($globals->asso('cat'));
         $page->assign('is_member', is_member());
-        $page->assign('logged', logged());
+        $page->assign('logged', S::logged());
 
         $page->assign('asso', $globals->asso());
     }
@@ -107,7 +107,7 @@ class XnetGrpModule extends PLModule
     {
         global $globals;
 
-        $res = $globals->xdb->query("SELECT logo, logo_mime
+        $res = XDB::query("SELECT logo, logo_mime
                                        FROM groupex.asso WHERE id = {?}",
                                     $globals->asso('id'));
         list($logo, $logo_mime) = $res->fetchOneRow();
@@ -138,56 +138,57 @@ class XnetGrpModule extends PLModule
         new_groupadmin_page('xnet/groupe/edit.tpl');
 
         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) !!!");
+            if (S::has_perms()) {
+                if (Post::v('mail_domain') && (strstr(Post::v('mail_domain'), '.') === false)) {
+                    $page->trig("le domaine doit être un FQDN (aucune modif effectuée) !!!");
+                    return;
                 }
-                $globals->xdb->execute(
+                XDB::execute(
                     "UPDATE  groupex.asso
                         SET  nom={?}, diminutif={?}, cat={?}, dom={?},
                              descr={?}, site={?}, mail={?}, resp={?},
                              forum={?}, mail_domain={?}, ax={?}, pub={?},
                              sub_url={?}, inscriptible={?}
                       WHERE  id={?}",
-                      Post::get('nom'), Post::get('diminutif'),
-                      Post::get('cat'), Post::getInt('dom'),
-                      Post::get('descr'), Post::get('site'),
-                      Post::get('mail'), Post::get('resp'),
-                      Post::get('forum'), Post::get('mail_domain'),
+                      Post::v('nom'), Post::v('diminutif'),
+                      Post::v('cat'), Post::i('dom'),
+                      Post::v('descr'), Post::v('site'),
+                      Post::v('mail'), Post::v('resp'),
+                      Post::v('forum'), Post::v('mail_domain'),
                       Post::has('ax'), Post::has('pub')?'private':'public',
-                      Post::get('sub_url'), Post::get('inscriptible'),
+                      Post::v('sub_url'), Post::v('inscriptible'),
                       $globals->asso('id'));
-                if (Post::get('mail_domain')) {
-                    $globals->xdb->execute('INSERT INTO virtual_domains (domain) VALUES({?})',
-                                           Post::get('mail_domain'));
+                if (Post::v('mail_domain')) {
+                    XDB::execute('INSERT INTO virtual_domains (domain) VALUES({?})',
+                                           Post::v('mail_domain'));
                 }
             } else {
-                $globals->xdb->execute(
+                XDB::execute(
                     "UPDATE  groupex.asso
                         SET  descr={?}, site={?}, mail={?}, resp={?},
                              forum={?}, ax={?}, pub= {?}, sub_url={?}
                       WHERE  id={?}",
-                      Post::get('descr'), Post::get('site'),
-                      Post::get('mail'), Post::get('resp'),
-                      Post::get('forum'), Post::has('ax'),
+                      Post::v('descr'), Post::v('site'),
+                      Post::v('mail'), Post::v('resp'),
+                      Post::v('forum'), Post::has('ax'),
                       Post::has('pub')?'private':'public',
-                      Post::get('sub_url'), $globals->asso('id'));
+                      Post::v('sub_url'), $globals->asso('id'));
             }
 
             if ($_FILES['logo']['name']) {
                 $logo = file_get_contents($_FILES['logo']['tmp_name']);
                 $mime = $_FILES['logo']['type'];
-                $globals->xdb->execute('UPDATE groupex.asso
+                XDB::execute('UPDATE groupex.asso
                                            SET logo={?}, logo_mime={?}
                                          WHERE id={?}', $logo, $mime,
                                         $globals->asso('id'));
             }
 
-            redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit');
+            pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit');
         }
 
-        if (has_perms()) {
-            $dom = $globals->xdb->iterator('SELECT * FROM groupex.dom ORDER BY nom');
+        if (S::has_perms()) {
+            $dom = XDB::iterator('SELECT * FROM groupex.dom ORDER BY nom');
             $page->assign('dom', $dom);
             $page->assign('super', true);
         }
@@ -200,21 +201,21 @@ class XnetGrpModule extends PLModule
         require_once 'lists.inc.php';
 
         new_groupadmin_page('xnet/groupe/mail.tpl');
-        $client =& lists_xmlrpc(Session::getInt('uid'),
-                                Session::get('password'),
+        $client =& lists_xmlrpc(S::v('uid'),
+                                S::v('password'),
                                 $globals->asso('mail_domain'));
         $page->assign('listes', $client->get_lists());
 
         if (Post::has('send')) {
-            $from  = Post::get('from');
-            $sujet = Post::get('sujet');
-            $body  = Post::get('body');
+            $from  = Post::v('from');
+            $sujet = Post::v('sujet');
+            $body  = Post::v('body');
 
-            $mls = array_keys(Env::getMixed('ml', array()));
+            $mls = array_keys(Env::v('ml', array()));
 
             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'));
+            send_xnet_mails($from, $sujet, $body, $tos, Post::v('replyto'));
             $page->kill("Mail envoyé !");
             $page->assign('sent', true);
         }
@@ -234,7 +235,7 @@ class XnetGrpModule extends PLModule
 
         $page->assign('admin', may_update());
 
-        switch (Env::get('order')) {
+        switch (Env::v('order')) {
             case 'promo'    : $group = 'promo';    $tri = 'promo_o DESC, nom, prenom'; break;
             case 'promo_inv': $group = 'promo';    $tri = 'promo_o, nom, prenom'; break;
             case 'alpha_inv': $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break;
@@ -242,7 +243,7 @@ class XnetGrpModule extends PLModule
         }
 
         if ($group == 'initiale')
-            $res = $globals->xdb->iterRow(
+            $res = XDB::iterRow(
                         'SELECT  UPPER(SUBSTRING(
                                      IF(m.origine="X", IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom),
                                      1, 1)) as letter, COUNT(*)
@@ -252,7 +253,7 @@ class XnetGrpModule extends PLModule
                        GROUP BY  letter
                        ORDER BY  letter', $globals->asso('id'));
         else
-            $res = $globals->xdb->iterRow(
+            $res = XDB::iterRow(
                         '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
@@ -266,17 +267,17 @@ class XnetGrpModule extends PLModule
         while (list($char, $nb) = $res->next()) {
             $alphabet[] = $char;
             $nb_tot += $nb;
-            if (Env::has($group) && $char == strtoupper(Env::get($group))) {
+            if (Env::has($group) && $char == strtoupper(Env::v($group))) {
                 $tot = $nb;
             }
         }
         $page->assign('group', $group);
-        $page->assign('request_group', Env::get($group));
+        $page->assign('request_group', Env::v($group));
         $page->assign('alphabet', $alphabet);
         $page->assign('nb_tot',   $nb_tot);
 
-        $ofs   = Env::getInt('offset');
-        $tot   = Env::get($group) ? $tot : $nb_tot;
+        $ofs   = Env::i('offset');
+        $tot   = Env::v($group) ? $tot : $nb_tot;
         $nbp   = intval(($tot-1)/NB_PER_PAGE);
         $links = array();
         if ($ofs) {
@@ -296,13 +297,13 @@ class XnetGrpModule extends PLModule
         if (Env::has('initiale')) {
             $ini = 'AND IF(m.origine="X",
                            IF(u.nom_usage<>"", u.nom_usage, u.nom),
-                           m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"';
+                           m.nom) LIKE "'.addslashes(Env::v('initiale')).'%"';
         } elseif (Env::has('promo')) {
             $ini = 'AND IF(m.origine="X", u.promo, "extérieur") = "'
-                 .addslashes(Env::get('promo')).'"';
+                 .addslashes(Env::v('promo')).'"';
         }
 
-        $ann = $globals->xdb->iterator(
+        $ann = 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,
@@ -340,14 +341,14 @@ class XnetGrpModule extends PLModule
 
         if (!is_null($u) && may_update()) {
             $page->assign('u', $u);
-            $res = $globals->xdb->query("SELECT nom, prenom, promo, user_id
+            $res = XDB::query("SELECT nom, prenom, promo, user_id
                                            FROM auth_user_md5 AS u
                                      INNER JOIN aliases AS al ON (al.id = u.user_id
                                                                   AND al.type != 'liste')
                                           WHERE al.alias = {?}", $u);
 
             if (list($nom, $prenom, $promo, $uid) = $res->fetchOneRow()) {
-                $res = $globals->xdb->query("SELECT  COUNT(*)
+                $res = XDB::query("SELECT  COUNT(*)
                                                FROM  groupex.membres AS m
                                          INNER JOIN  aliases  AS a ON (m.uid = a.id
                                                                        AND a.type != 'homonyme')
@@ -355,18 +356,19 @@ 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("$prenom $nom est déjà membre du groupe !");
+                    return;
                 }
                 elseif (Env::has('accept'))
                 {
-                    $globals->xdb->execute("INSERT INTO groupex.membres
+                    XDB::execute("INSERT INTO groupex.membres
                                             VALUES ({?}, {?}, 'membre', 'X', NULL, NULL, NULL, NULL)",
                                             $globals->asso('id'), $uid);
                     require_once 'diogenes/diogenes.hermes.inc.php';
                     $mailer = new HermesMailer();
                     $mailer->addTo("$u@polytechnique.org");
-                    $mailer->setFrom('"'.Session::get('prenom').' '.Session::get('nom')
-                                     .'" <'.Session::get('forlife').'@polytechnique.org>');
+                    $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom')
+                                     .'" <'.S::v('forlife').'@polytechnique.org>');
                     $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription');
                     $message = "Cher Camarade,\n"
                              . "\n"
@@ -384,10 +386,10 @@ class XnetGrpModule extends PLModule
                     require_once 'diogenes/diogenes.hermes.inc.php';
                     $mailer = new HermesMailer();
                     $mailer->addTo("$u@polytechnique.org");
-                    $mailer->setFrom('"'.Session::get('prenom').' '.Session::get('nom')
-                                     .'" <'.Session::get('forlife').'@polytechnique.org>');
+                    $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom')
+                                     .'" <'.S::v('forlife').'@polytechnique.org>');
                     $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée');
-                    $mailer->setTxtBody(Env::get('motif'));
+                    $mailer->setTxtBody(Env::v('motif'));
                     $mailer->send();
                     $page->kill("la demande $prenom $nom a bien été refusée");
                 } else {
@@ -408,7 +410,7 @@ class XnetGrpModule extends PLModule
         }
 
         if (Post::has('inscrire')) {
-            $res = $globals->xdb->query('SELECT  IF(m.email IS NULL,
+            $res = XDB::query('SELECT  IF(m.email IS NULL,
                                                     CONCAT(al.alias,"@polytechnique.org"),
                                                     m.email)
                                            FROM  groupex.membres AS m
@@ -422,12 +424,12 @@ class XnetGrpModule extends PLModule
             $append = "\n"
                     . "-- \n"
                     . "Ce message a été envoyé suite à la demande d'inscription de\n"
-                    . Session::get('prenom').' '.Session::get('nom').' (X'.Session::get('promo').")\n"
+                    . S::v('prenom').' '.S::v('nom').' (X'.S::v('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"
                     .
                     "http://www.polytechnique.net/".$globals->asso("diminutif")."/subscribe/"
-                        .Session::get('forlife')."\n"
+                        .S::v('forlife')."\n"
                     . "\n"
                     . "En cas de problème, contacter l'équipe de Polytechnique.org\n"
                     . "à l'adresse : support@polytechnique.org\n";
@@ -443,10 +445,10 @@ class XnetGrpModule extends PLModule
             require_once 'diogenes/diogenes.hermes.inc.php';
             $mailer = new HermesMailer();
             $mailer->addTo($to);
-            $mailer->setFrom('"'.Session::get('prenom').' '.Session::get('nom')
-                             .'" <'.Session::get('forlife').'@polytechnique.org>');
+            $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom')
+                             .'" <'.S::v('forlife').'@polytechnique.org>');
             $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription');
-            $mailer->setTxtBody(Post::get('message').$append);
+            $mailer->setTxtBody(Post::v('message').$append);
             $mailer->send();
         }
     }
@@ -457,7 +459,7 @@ class XnetGrpModule extends PLModule
 
         new_group_page('xnet/groupe/telepaiement.tpl');
 
-        $res = $globals->xdb->query(
+        $res = XDB::query(
                 "SELECT id, text
                   FROM {$globals->money->mpay_tprefix}paiements
                  WHERE asso_id = {?} AND NOT FIND_IN_SET(flags, 'old')
@@ -465,12 +467,12 @@ class XnetGrpModule extends PLModule
         $tit = $res->fetchAllAssoc();
         $page->assign('titres', $tit);
 
-        $order = Env::get('order', 'timestamp');
+        $order = Env::v('order', 'timestamp');
         $orders = array('timestamp', 'nom', 'promo', 'montant');
         if (!in_array($order, $orders)) {
             $order = 'timestamp';
         }
-        $inv_order = Env::get('order_inv', 0);
+        $inv_order = Env::v('order_inv', 0);
         $page->assign('order', $order);
         $page->assign('order_inv', !$inv_order);
 
@@ -500,7 +502,7 @@ class XnetGrpModule extends PLModule
             $trans = array();
             foreach($tit as $foo) {
                 $pid = $foo['id'];
-                $res = $globals->xdb->query(
+                $res = XDB::query(
                         "SELECT  IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom,
                                  u.prenom, u.promo, a.alias, timestamp AS `date`, montant
                            FROM  {$globals->money->mpay_tprefix}transactions AS t
@@ -527,8 +529,7 @@ class XnetGrpModule extends PLModule
         require_once 'xnet/mail.inc.php';
 
         new_groupadmin_page('xnet/groupe/annuaire-admin.tpl');
-        $client =& lists_xmlrpc(Session::getInt('uid'),
-                                Session::get('password'),
+        $client =& lists_xmlrpc(S::v('uid'), S::v('password'),
                                 $globals->asso('mail_domain'));
         $lists  = $client->get_lists();
         if (!$lists) $lists = array();
@@ -546,7 +547,7 @@ class XnetGrpModule extends PLModule
         $not_in_group_ext = array();
 
         foreach ($subscribers as $mail) {
-            $res = $globals->xdb->query(
+            $res = XDB::query(
                        'SELECT  COUNT(*)
                           FROM  groupex.membres AS m
                      LEFT JOIN  auth_user_md5   AS u ON (m.uid=u.user_id AND m.uid<50000)
@@ -586,26 +587,24 @@ class XnetGrpModule extends PLModule
         if ($x) {
             require_once 'user.func.inc.php';
             if ($forlife = get_user_forlife($email)) {
-                $globals->xdb->execute(
+                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");
+                          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);
+                pl_redirect("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');
+                $res = 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)
+                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");
+                pl_redirect("member/$email");
             } else {
                 $page->trig("« <strong>$email</strong> » n'est pas une adresse mail valide");
             }
@@ -627,7 +626,7 @@ class XnetGrpModule extends PLModule
             return;
         }
 
-        $globals->xdb->execute(
+        XDB::execute(
                 "DELETE FROM  groupex.membres WHERE uid={?} AND asso_id={?}",
                 $user['uid'], $globals->asso('id'));
 
@@ -637,7 +636,7 @@ class XnetGrpModule extends PLModule
         if (($domain = $globals->asso('mail_domain')) && empty($user_same_email)) {
 
             require 'lists.inc.php';
-            $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $domain);
+            $client =& lists_xmlrpc(S::v('uid'), S::v('password'), $domain);
             $listes = $client->get_lists($user['email2']);
 
             foreach ($listes as $liste) {
@@ -652,7 +651,7 @@ class XnetGrpModule extends PLModule
                 }
             }
 
-            $globals->xdb->execute(
+            XDB::execute(
                     "DELETE FROM  virtual_redirect
                            USING  virtual_redirect
                       INNER JOIN  virtual USING(vid)
@@ -677,27 +676,26 @@ class XnetGrpModule extends PLModule
         }
 
         require 'lists.inc.php';
-        $client =& lists_xmlrpc(Session::getInt('uid'),
-                                Session::get('password'),
+        $client =& lists_xmlrpc(S::v('uid'), S::v('password'),
                                 $globals->asso('mail_domain'));
 
         if (Post::has('change')) {
             if ($user['origine'] != 'X') {
-                $globals->xdb->query('UPDATE groupex.membres
+                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'],
+                                     Post::v('prenom'), Post::v('nom'),
+                                     Post::v('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');
+                $user['nom']    = Post::v('nom');
+                $user['prenom'] = Post::v('prenom');
+                $user['email']  = Post::v('email');
+                $user['email2'] = Post::v('email');
             }
 
-            $perms = Post::getInt('is_admin');
+            $perms = Post::i('is_admin');
             if ($user['perms'] != $perms) {
-                $globals->xdb->query('UPDATE groupex.membres SET perms={?}
+                XDB::query('UPDATE groupex.membres SET perms={?}
                                       WHERE uid={?} AND asso_id={?}',
                                       $perms ? 'admin' : 'membre',
                                       $user['uid'], $globals->asso('id'));
@@ -705,7 +703,7 @@ class XnetGrpModule extends PLModule
                 $page->trig('permissions modifiées');
             }
 
-            foreach (Env::getMixed('ml1', array()) as $ml => $state) {
+            foreach (Env::v('ml1', array()) as $ml => $state) {
                 $ask = empty($_REQUEST['ml2'][$ml]) ? 0 : 2;
                 if ($ask == $state) continue;
                 if ($state == '1') {
@@ -721,16 +719,16 @@ class XnetGrpModule extends PLModule
                 }
             }
 
-            foreach (Env::getMixed('ml3', array()) as $ml => $state) {
+            foreach (Env::v('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)
+                    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
+                    XDB::query("DELETE FROM  virtual_redirect
                                                 USING  virtual_redirect
                                            INNER JOIN  virtual USING(vid)
                                                 WHERE  redirect={?} AND alias={?}",
@@ -744,7 +742,7 @@ class XnetGrpModule extends PLModule
         $listes = $client->get_lists($user['email2']);
         $page->assign('listes', $listes);
 
-        $res = $globals->xdb->query(
+        $res = 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={?})