New "valid_date" smarty function to select purge dates
[platal.git] / modules / xnetgrp.php
index 2eacac8..88547d8 100644 (file)
@@ -79,17 +79,18 @@ class XnetGrpModule extends PLModule
             '%grp/site'           => $this->make_hook('site',      AUTH_PUBLIC),
             '%grp/edit'           => $this->make_hook('edit',      AUTH_MDP, 'groupadmin'),
             '%grp/mail'           => $this->make_hook('mail',      AUTH_MDP, 'groupadmin'),
-            '%grp/forum'          => $this->make_hook('forum',     AUTH_MDP),
-            '%grp/annuaire'       => $this->make_hook('annuaire',  AUTH_MDP),
-            '%grp/annuaire/vcard' => $this->make_hook('vcard',     AUTH_MDP),
-            '%grp/trombi'         => $this->make_hook('trombi',    AUTH_MDP),
+            '%grp/forum'          => $this->make_hook('forum',     AUTH_MDP, 'groupmember'),
+            '%grp/annuaire'       => $this->make_hook('annuaire',  AUTH_MDP, 'groupannu'),
+            '%grp/annuaire/vcard' => $this->make_hook('vcard',     AUTH_MDP, 'groupmember:groupannu'),
+            '%grp/trombi'         => $this->make_hook('trombi',    AUTH_MDP, 'groupannu'),
+            '%grp/geoloc'         => $this->make_hook('geoloc',    AUTH_MDP, 'groupannu'),
             '%grp/subscribe'      => $this->make_hook('subscribe', AUTH_MDP),
-            '%grp/unsubscribe'    => $this->make_hook('unsubscribe', AUTH_MDP),
+            '%grp/unsubscribe'    => $this->make_hook('unsubscribe', AUTH_MDP, 'groupmember'),
 
             '%grp/change_rights'  => $this->make_hook('change_rights', AUTH_MDP),
 
             '%grp/admin/annuaire'
-                 => $this->make_hook('admin_annuaire', AUTH_MDP),
+                 => $this->make_hook('admin_annuaire', AUTH_MDP, 'groupadmin'),
 
             '%grp/member'
                  => $this->make_hook('admin_member', AUTH_MDP, 'groupadmin'),
@@ -114,8 +115,7 @@ class XnetGrpModule extends PLModule
         if (!is_null($arg)) {
             return PL_NOT_FOUND;
         }
-
-        new_group_open_page('xnetgrp/asso.tpl');
+        $page->changeTpl('xnetgrp/asso.tpl');
 
         if (S::logged()) {
             if (Env::has('read')) {
@@ -171,7 +171,7 @@ class XnetGrpModule extends PLModule
                               'rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml');
         }
         
-        $page->register_modifier('url_catcher', array('MiniWiki','WikiToHTML'));
+        $page->register_modifier('wiki_to_html', array('MiniWiki','WikiToHTML'));
         $page->assign('articles', $arts);
 
         $page->assign('asso', $globals->asso());
@@ -220,8 +220,7 @@ class XnetGrpModule extends PLModule
     function handler_edit(&$page)
     {
         global $globals;
-
-        new_groupadmin_page('xnetgrp/edit.tpl');
+        $page->changeTpl('xnetgrp/edit.tpl');
 
         if (Post::has('submit')) {
             if (S::has_perms()) {
@@ -286,10 +285,11 @@ class XnetGrpModule extends PLModule
     {
         global $globals;
 
-        new_groupadmin_page('xnetgrp/mail.tpl');
+        $page->changeTpl('xnetgrp/mail.tpl');
         $mmlist = new MMList(S::v('uid'), S::v('password'),
                            $globals->asso('mail_domain'));
         $page->assign('listes', $mmlist->get_lists());
+        $page->addJsLink('ajax.js');
 
         if (Post::has('send')) {
             $from  = Post::v('from');
@@ -314,7 +314,7 @@ class XnetGrpModule extends PLModule
     function handler_forum(&$page, $group = null, $artid = null)
     {
         global $globals;
-        new_group_page('xnetgrp/forum.tpl');
+        $page->changeTpl('xnetgrp/forum.tpl');
         if (!$globals->asso('forum')) {
             return PL_NOT_FOUND;
         }
@@ -324,10 +324,20 @@ class XnetGrpModule extends PLModule
         run_banana($page, 'ForumsBanana', $get);
     }
 
-    function handler_annuaire(&$page)
+    function handler_annuaire(&$page, $action = null, $subaction = null)
     {
         global $globals;
-        new_annu_page('xnetgrp/annuaire.tpl');
+
+        if ($action == 'geoloc' || $action == 'trombi') {
+            $view = new UserSet();
+            $view->addMod('trombi', 'Trombinoscope');
+            $view->addMod('geoloc', 'Planisphère');
+            $view->apply('annuaire', $page, $action, $subaction);
+            if ($action == 'geoloc' && $subaction) {
+                return;
+            }
+        }
+        $page->changeTpl('xnetgrp/annuaire.tpl');
 
         $sort = Env::v('order');
         switch (Env::v('order')) {
@@ -427,63 +437,30 @@ class XnetGrpModule extends PLModule
         $page->jsonAssign('ann', $ann);
     }
 
-    function handler_trombi(&$page, $num = 1)
+    function handler_trombi(&$page)
     {
-        global $globals;
-        new_annu_page('xnetgrp/trombi.tpl');
-        
-        $page->assign('urlmainsite', "https://www.polytechnique.org/");
-        $trombi = new Trombi(array($this, '_trombi_getlist'));
-        $trombi->hidePromo();
-        $trombi->setAdmin();
-        $page->assign_by_ref('trombi', $trombi);
+        pl_redirect('annuaire/trombi');
     }
 
-    function _trombi_getlist($offset, $limit)
+    function handler_geoloc(&$page)
     {
-        global $globals;
-        $where  = "WHERE m.asso_id= '".addslashes($globals->asso('id'))."'";
-
-        $res = XDB::query(
-                "SELECT  COUNT(*)
-                   FROM  auth_user_md5 AS u
-             RIGHT JOIN  photo         AS p ON u.user_id=p.uid
-             INNER JOIN  groupex.membres AS m ON (m.uid = u.user_id)
-             $where");
-        $pnb = $res->fetchOneCell();
-        
-        $res = XDB::query("SELECT  promo, user_id, a.alias AS forlife,
-                         IF (nom_usage='', u.nom, nom_usage) AS nom, u.prenom
-                   FROM  photo         AS p
-             INNER JOIN  auth_user_md5 AS u ON u.user_id=p.uid
-             INNER JOIN  aliases       AS a ON ( u.user_id=a.id AND a.type='a_vie' )
-             INNER JOIN  groupex.membres AS m ON (m.uid = u.user_id)
-                  $where
-               ORDER BY  promo, u.nom, u.prenom LIMIT {?}, {?}", $offset*$limit, $limit);
-        
-        return array($pnb, $res->fetchAllAssoc());
+        pl_redirect('annuaire/geoloc');
     }
     
     function handler_vcard(&$page, $photos = null)
     {
         global $globals;
-
-        if (($globals->asso('pub') == 'public' && is_member()) || may_update()) {
-            $res = XDB::query('SELECT uid
-                                 FROM groupex.membres
-                                WHERE asso_id = {?}', $globals->asso('id'));
-            $vcard = new VCard($res->fetchColumn(), $photos == 'photos', 'Membre du groupe ' . $globals->asso('nom'));
-            $vcard->do_page($page);
-        } else {
-            return PL_FORBIDDEN;
-        }
+        $res = XDB::query('SELECT  uid
+                             FROM  groupex.membres
+                            WHERE  asso_id = {?}', $globals->asso('id'));
+        $vcard = new VCard($res->fetchColumn(), $photos == 'photos', 'Membre du groupe ' . $globals->asso('nom'));
+        $vcard->do_page($page);
     }
 
     function handler_subscribe(&$page, $u = null)
     {
         global $globals;
-
-        new_group_open_page('xnetgrp/inscrire.tpl');
+        $page->changeTpl('xnetgrp/inscrire.tpl');
 
         if (!$globals->asso('inscriptible'))
                 $page->kill("Il n'est pas possible de s'inscire en ligne à ce "
@@ -633,8 +610,7 @@ class XnetGrpModule extends PLModule
         global $globals;
 
         require_once dirname(__FILE__) . '/xnetgrp/mail.inc.php';
-
-        new_groupadmin_page('xnetgrp/annuaire-admin.tpl');
+        $page->changeTpl('xnetgrp/annuaire-admin.tpl');
         $mmlist = new MMList(S::v('uid'), S::v('password'),
                              $globals->asso('mail_domain'));
         $lists  = $mmlist->get_lists();
@@ -679,7 +655,7 @@ class XnetGrpModule extends PLModule
     {
         global $globals;
 
-        new_groupadmin_page('xnetgrp/membres-add.tpl');
+        $page->changeTpl('xnetgrp/membres-add.tpl');
         $page->addJsLink('ajax.js');
 
         if (is_null($email)) {
@@ -820,7 +796,7 @@ class XnetGrpModule extends PLModule
 
     function handler_unsubscribe(&$page)
     {
-        new_group_page('xnetgrp/membres-del.tpl');
+        $page->changeTpl('xnetgrp/membres-del.tpl');
         $user = get_infos(S::v('forlife'));
         if (empty($user)) {
             return PL_NOT_FOUND;
@@ -842,7 +818,7 @@ class XnetGrpModule extends PLModule
 
     function handler_admin_member_del(&$page, $user = null)
     {
-        new_groupadmin_page('xnetgrp/membres-del.tpl');
+        $page->changeTpl('xnetgrp/membres-del.tpl');
         $user = get_infos($user);
         if (empty($user)) {
             return PL_NOT_FOUND;
@@ -864,7 +840,7 @@ class XnetGrpModule extends PLModule
     {
         global $globals;
 
-        new_groupadmin_page('xnetgrp/membres-edit.tpl');
+        $page->changeTpl('xnetgrp/membres-edit.tpl');
 
         $user = get_infos($user);
         if (empty($user)) {
@@ -965,7 +941,7 @@ class XnetGrpModule extends PLModule
         global $globals;
         require_once('rss.inc.php');
         $uid = init_rss('xnetgrp/announce-rss.tpl', $user, $hash, false);
-        $page->register_modifier('url_catcher', array('MiniWiki', 'WikiToHTML'));
+        $page->register_modifier('wiki_to_html', array('MiniWiki', 'WikiToHTML'));
 
         if ($uid) {
             $rss = XDB::iterator("SELECT a.id, a.titre, a.texte, a.contacts, a.create_date,
@@ -991,8 +967,8 @@ class XnetGrpModule extends PLModule
     function handler_edit_announce(&$page, $aid = null)
     {
         global $globals, $platal;
-        new_groupadmin_page('xnetgrp/announce-edit.tpl');
-        $page->register_modifier('url_catcher', array('MiniWiki','WikiToHTML'));
+        $page->changeTpl('xnetgrp/announce-edit.tpl');
+        $page->register_modifier('wiki_to_html', array('MiniWiki','WikiToHTML'));
         $page->assign('new', is_null($aid));
         $art = array();
 
@@ -1091,22 +1067,6 @@ class XnetGrpModule extends PLModule
             }
         }
 
-        $select = '';
-        for ($i = 1 ; $i < 30 ; $i++) {
-            $time    = time() + 3600 * 24 * $i;
-            $p_stamp = date('Ymd', $time);
-            $year    = date('Y',   $time);
-            $month   = date('m',   $time);
-            $day     = date('d',   $time);
-
-            $select .= "<option value=\"$p_stamp\"";
-            if ($p_stamp == strtr(@$art['peremption'], array("-" => ""))) {
-                $select .= " selected='selected'";
-            }
-            $select .= "> $day / $month / $year</option>\n";
-        }
-        $page->assign('select', $select);
-
         if (is_null($aid)) {
             $events = XDB::iterator("SELECT *
                                       FROM groupex.evenements
@@ -1124,7 +1084,7 @@ class XnetGrpModule extends PLModule
     function handler_admin_announce(&$page)
     {
         global $globals;
-        new_groupadmin_page('xnetgrp/announce-admin.tpl');
+        $page->changeTpl('xnetgrp/announce-admin.tpl');
 
         if (Env::has('del')) {
             XDB::execute("DELETE FROM groupex.announces