migrate annuaire
authorx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Fri, 14 Jul 2006 20:34:32 +0000 (20:34 +0000)
committerx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Fri, 14 Jul 2006 20:34:32 +0000 (20:34 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@485 839d8a87-29fc-0310-9880-83ba4fa771e5

12 files changed:
classes/Xnet.php
htdocs.net/groupe/annuaire.php [deleted file]
htdocs.net/groupe/edit.php [deleted file]
htdocs.net/groupe/membres-edit.php
include/xnet/page.inc.php
include/xnet/smarty.plugins.inc.php
modules/xnet.php
modules/xnetgrp.php
templates/xnet/admin.tpl
templates/xnet/groupe/edit.tpl
templates/xnet/groupe/mail.tpl
templates/xnet/groupe/membres-del.tpl

index 408ff55..f76e287 100644 (file)
@@ -31,7 +31,7 @@ class Xnet extends Platal
         global $globals;
         if ($globals->asso()) {
             if ($p = strpos($this->path, '/')) {
-                $this->ns   = substr($this->path, 0, $p);
+                $this->ns   = substr($this->path, 0, $p).'/';
                 $this->path = 'grp'.substr($this->path, $p);
             } else {
                 $this->ns   = $this->path.'/';
diff --git a/htdocs.net/groupe/annuaire.php b/htdocs.net/groupe/annuaire.php
deleted file mode 100644 (file)
index 76a9946..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-require 'xnet.inc.php';
-
-define('NB_PER_PAGE', 25);
-
-if ($globals->asso('pub') == 'public')
-       new_group_page('xnet/groupe/annuaire.tpl');
-else
-       new_groupadmin_page('xnet/groupe/annuaire.tpl');
-
-$page->assign('admin', may_update());
-
-switch (Env::get('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;
-    default             : $group = 'initiale'; $tri = 'nom, prenom, promo';
-}
-if ($group == 'initiale')
-    $res = $globals->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(*)
-                   FROM  groupex.membres AS m
-              LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
-                  WHERE  asso_id = {?}
-               GROUP BY  letter
-               ORDER BY  letter', $globals->asso('id'));
-else
-    $res = $globals->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
-              LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
-                  WHERE  asso_id = {?}
-               GROUP BY  promo
-               ORDER BY  promo_o DESC', $globals->asso('id'));
-
-$alphabet = array();
-$nb_tot = 0;
-while (list($char, $nb) = $res->next()) {
-    $alphabet[] = $char;
-    $nb_tot += $nb;
-    if (Env::has($group) && $char == strtoupper(Env::get($group))) {
-        $tot = $nb;
-    }
-}
-$page->assign('group', $group);
-$page->assign('request_group', Env::get($group));
-$page->assign('alphabet', $alphabet);
-$page->assign('nb_tot',   $nb_tot);
-
-$ofs   = Env::getInt('offset');
-$tot   = Env::get($group) ? $tot : $nb_tot;
-$nbp   = intval(($tot-1)/NB_PER_PAGE);
-$links = array();
-if ($ofs) {
-    $links['précédent'] = $ofs-1;
-}
-for ($i = 0; $i <= $nbp; $i++) {
-    $links[(string)($i+1)] = $i;
-}
-if ($ofs < $nbp) {
-    $links['suivant'] = $ofs+1;
-}
-if (count($links)>1) {
-    $page->assign('links', $links);
-}
-
-$ini = '';
-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')).'%"';
-elseif (Env::has('promo'))
-    $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,'') 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,
-                   m.perms='admin' AS admin,
-                   m.origine='X' AS x,
-                   m.uid
-             FROM  groupex.membres AS m
-        LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
-        LEFT JOIN  aliases         AS a ON ( a.id = m.uid AND a.type='a_vie' )
-            WHERE  m.asso_id = {?} $ini
-         ORDER BY  $tri
-            LIMIT  {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE);
-
-
-$page->assign('ann', $ann);
-
-$page->run();
-
-?>
diff --git a/htdocs.net/groupe/edit.php b/htdocs.net/groupe/edit.php
deleted file mode 100644 (file)
index dced958..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-    require 'xnet.inc.php';
-    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) !!!");
-            }
-            $globals->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::has('ax'), Post::has('pub')?'private':'public', Post::get('sub_url'), Post::get('inscriptible'),
-                 $globals->asso('id'));
-            if (Post::get('mail_domain')) {
-                $globals->xdb->execute('INSERT INTO virtual_domains (domain) VALUES({?})', Post::get('mail_domain'));
-            }
-        } else {
-            $globals->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::has('pub')?'private':'public', Post::get('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 SET logo={?}, logo_mime={?} WHERE id={?}', $logo, $mime, $globals->asso('id'));
-        }
-
-        redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit.php');
-    }
-
-    if (has_perms()) {
-        $dom = $globals->xdb->iterator('SELECT * FROM groupex.dom ORDER BY nom');
-        $page->assign('dom', $dom);
-        $page->assign('super', true);
-    }
-    $page->run();
-
-?>
index c5c86f5..72098bd 100644 (file)
@@ -86,7 +86,9 @@
         new_groupadmin_page('xnet/groupe/membres-edit.tpl');
 
         $user = get_infos(Env::get('edit'));
-        if (empty($user)) { redirect("annuaire.php"); }
+        if (empty($user)) {
+            redirect('annuaire');
+        }
 
         require 'lists.inc.php';
         $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $globals->asso('mail_domain'));
                     $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml");
                 }
             }
-           redirect("annuaire.php");
+           redirect('annuaire');
         }
-        
+
         $page->assign('user', $user);
         $listes = $client->get_lists($user['email2']);
         $page->assign('listes', $listes);
     {
         new_groupadmin_page('xnet/groupe/membres-del.tpl');
         $user = get_infos(Env::get('del'));
-        if (empty($user)) { redirect("annuaire.php"); }
+        if (empty($user)) {
+            redirect('annuaire');
+        }
         $page->assign('user', $user);
 
         if (Post::has('confirm')) {
 
             // 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']);
         }
     }
     else {
-        redirect("annuaire.php");
+        redirect('annuaire');
     }
 
     $page->run();
index f336167..1b79379 100644 (file)
@@ -74,7 +74,7 @@ class XnetPage extends PlatalPage
             $dim = $globals->asso('diminutif');
             $sub['présentation'] = "$dim/";
             if (may_update() || $globals->asso('pub') == 'public') {
-                $sub['annuaire du groupe'] = "$dim/annuaire.php";
+                $sub['annuaire du groupe'] = "$dim/annuaire";
                 if ($globals->xnet->geoloc)
                     $sub['carte'] = "$dim/geoloc.php";
             }
@@ -92,7 +92,7 @@ class XnetPage extends PlatalPage
 
         if (logged() && may_update()) {
             $sub = array();
-            $sub['modifier l\'accueil'] = "$dim/edit.php";
+            $sub['modifier l\'accueil'] = "$dim/edit";
             if ($globals->wiki->wikidir && $globals->xnet->wiki)
                 $sub['wiki'] = "$dim/Accueil";
             if ($globals->asso('mail_domain')) {
index 725b50f..f8331d5 100644 (file)
@@ -36,7 +36,7 @@ function list_all_my_groups($params)
               WHERE  m.uid={?}", Session::getInt('uid'));
     $html = '<div>Mes groupes :</div>';
     while (list($nom, $mini) = $res->next()) {
-        $html .= "<a class='gp' href='".smarty_function_rel()."/$mini'>&bull; $nom</a>";
+        $html .= "<a class='gp' href='".smarty_function_rel()."/$mini/'>&bull; $nom</a>";
     }
     return $html;
 }
index 2d4a983..7b7c0a9 100644 (file)
@@ -135,7 +135,7 @@ class XnetModule extends PLModule
         if (Post::has('diminutif')) {
             $globals->xdb->query('INSERT INTO groupex.asso (id,diminutif)
                                  VALUES(NULL,{?})', Post::get('diminutif'));
-            redirect(Post::get('diminutif').'/edit.php');
+            redirect(Post::get('diminutif').'/edit');
         }
 
         $res = $globals->xdb->query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM');
index feb9239..3b0c455 100644 (file)
@@ -24,17 +24,19 @@ 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'            => $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/annuaire'   => $this->make_hook('annuaire', AUTH_MDP),
         );
     }
 
-    function handler_index(&$page)
+    function handler_index(&$page, $arg = null)
     {
         global $globals;
 
-        if (!$globals->asso('id')) {
+        if (!is_null($arg)) {
             return PL_NOT_FOUND;
         }
 
@@ -74,6 +76,170 @@ class XnetGrpModule extends PLModule
 
         exit;
     }
+
+    function handler_edit(&$page)
+    {
+        global $globals;
+
+        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) !!!");
+                }
+                $globals->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::has('ax'), Post::has('pub')?'private':'public',
+                      Post::get('sub_url'), Post::get('inscriptible'),
+                      $globals->asso('id'));
+                if (Post::get('mail_domain')) {
+                    $globals->xdb->execute('INSERT INTO virtual_domains (domain) VALUES({?})',
+                                           Post::get('mail_domain'));
+                }
+            } else {
+                $globals->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::has('pub')?'private':'public',
+                      Post::get('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
+                                           SET logo={?}, logo_mime={?}
+                                         WHERE id={?}', $logo, $mime,
+                                        $globals->asso('id'));
+            }
+
+            redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit');
+        }
+
+        if (has_perms()) {
+            $dom = $globals->xdb->iterator('SELECT * FROM groupex.dom ORDER BY nom');
+            $page->assign('dom', $dom);
+            $page->assign('super', true);
+        }
+    }
+
+    function handler_annuaire(&$page)
+    {
+        global $globals;
+
+        define('NB_PER_PAGE', 25);
+
+        if ($globals->asso('pub') == 'public') {
+            new_group_page('xnet/groupe/annuaire.tpl');
+        } else {
+            new_groupadmin_page('xnet/groupe/annuaire.tpl');
+        }
+
+        $page->assign('admin', may_update());
+
+        switch (Env::get('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;
+            default         : $group = 'initiale'; $tri = 'nom, prenom, promo';
+        }
+
+        if ($group == 'initiale')
+            $res = $globals->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(*)
+                           FROM  groupex.membres AS m
+                      LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
+                          WHERE  asso_id = {?}
+                       GROUP BY  letter
+                       ORDER BY  letter', $globals->asso('id'));
+        else
+            $res = $globals->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
+                      LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
+                          WHERE  asso_id = {?}
+                       GROUP BY  promo
+                       ORDER BY  promo_o DESC', $globals->asso('id'));
+
+        $alphabet = array();
+        $nb_tot = 0;
+        while (list($char, $nb) = $res->next()) {
+            $alphabet[] = $char;
+            $nb_tot += $nb;
+            if (Env::has($group) && $char == strtoupper(Env::get($group))) {
+                $tot = $nb;
+            }
+        }
+        $page->assign('group', $group);
+        $page->assign('request_group', Env::get($group));
+        $page->assign('alphabet', $alphabet);
+        $page->assign('nb_tot',   $nb_tot);
+
+        $ofs   = Env::getInt('offset');
+        $tot   = Env::get($group) ? $tot : $nb_tot;
+        $nbp   = intval(($tot-1)/NB_PER_PAGE);
+        $links = array();
+        if ($ofs) {
+            $links['précédent'] = $ofs-1;
+        }
+        for ($i = 0; $i <= $nbp; $i++) {
+            $links[(string)($i+1)] = $i;
+        }
+        if ($ofs < $nbp) {
+            $links['suivant'] = $ofs+1;
+        }
+        if (count($links)>1) {
+            $page->assign('links', $links);
+        }
+
+        $ini = '';
+        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')).'%"';
+        } elseif (Env::has('promo')) {
+            $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,'') 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,
+                           m.perms='admin' AS admin,
+                           m.origine='X' AS x,
+                           m.uid
+                     FROM  groupex.membres AS m
+                LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
+                LEFT JOIN  aliases         AS a ON ( a.id = m.uid AND a.type='a_vie' )
+                    WHERE  m.asso_id = {?} $ini
+                 ORDER BY  $tri
+                    LIMIT  {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE);
+
+        $page->assign('ann', $ann);
+    }
 }
 
 ?>
index dca95f5..0f7f9fa 100644 (file)
@@ -34,7 +34,7 @@
 
 <h1>Ajouter un groupe</h1>
 
-<form action="{$smarty.server.PHP_SELF}" method="post">
+<form action="{rel}/admin" method="post">
   <p class="descr">
   Pour ajouter un groupe, choisir ici le diminutif qu'il va utiliser,
   tu seras ensuite redirigé vers une page te permettant d'éditer le groupe :
@@ -52,7 +52,7 @@
   {foreach from=$assos item=a key=i name=all}
   {if $i is even}<tr>{/if}
     <td><a href='?del={$a.diminutif}'><img src='{rel}/images/del.png' alt='delete' /></a></td>
-    <td><a href='{rel}/{$a.diminutif}/edit.php'>{$a.nom}</a></td>
+    <td><a href='{rel}/{$a.diminutif}/edit'>{$a.nom}</a></td>
     {if $i is odd || $smarty.foreach.all.last}</tr>{/if}
   {/foreach}
 </table>
index f62348b..65c3a56 100644 (file)
@@ -24,7 +24,7 @@
 
 <h1>{$asso.nom} : Éditer l'accueil</h1>
 
-<form method="post" action="{$smarty.server.PHP_SELF}" enctype="multipart/form-data">
+<form method="post" action="{rel}/{$platal->ns}edit" enctype="multipart/form-data">
   {if $super}
   <table cellpadding="0" cellspacing="0" class='tiny'>
     <tr>
index 2636eca..48f0f85 100644 (file)
@@ -57,7 +57,7 @@ masculin ou f
       </td>
       <td>
         <input type="checkbox" name="membres" value="1" {if $smarty.request.membres}checked="checked"{/if} />
-        <em>écrit à tout l'annuaire du groupe</em> <a href="annuaire.php" class='popup'>(voir annuaire)</a>
+        <em>écrit à tout l'annuaire du groupe</em> <a href="{rel}/{$platal->ns}annuaire" class='popup'>(voir annuaire)</a>
       </td>
     </tr>
 
index d26bf48..3e40155 100644 (file)
@@ -23,7 +23,7 @@
 {if $smarty.post.confirm}
 
 <p class="descr">
-<a href="annuaire.php">retour à l'annuaire</a>
+<a href="{rel}/{$platal->ns}annuaire">retour à l'annuaire</a>
 </p>
 
 {else}
@@ -43,7 +43,7 @@
     et le désabonner de toutes les listes de diffusion du groupe ?
     </p>
     <input type='submit' name='confirm' value='Oui, je le désinscris complètement du groupe !' />
-  </div>                                                                      
+  </div>
 </form>
 
 {/if}