avoid the ugly include for varstream, use a dummy VarStream::init()
[platal.git] / modules / xnetgrp.php
index 85b4d07..0b3dc7d 100644 (file)
@@ -65,14 +65,15 @@ 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'                => $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/annuaire/vcard' => $this->make_hook('vcard',     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),
@@ -235,12 +236,14 @@ class XnetGrpModule extends PLModule
 
         $page->assign('admin', may_update());
 
+        $sort = Env::v('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;
-            default         : $group = 'initiale'; $tri = 'nom, prenom, promo';
+            default         : $group = 'initiale'; $tri = 'nom, prenom, promo'; $sort = 'alpha';
         }
+        $page->assign('sort', $sort);
 
         if ($group == 'initiale')
             $res = XDB::iterRow(
@@ -324,6 +327,22 @@ class XnetGrpModule extends PLModule
         $page->assign('ann', $ann);
     }
 
+    function handler_vcard(&$page)
+    {
+        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'));
+            require_once('vcard.inc.php');
+            $vcard = new VCard($res->fetchColumn(), 'Membre du groupe ' . $globals->asso('nom'));
+            $vcard->do_page($page);
+        } else {
+            return PL_NOTALLOWED;
+        }
+    }
+
     function handler_subscribe(&$page, $u = null)
     {
         global $globals;
@@ -357,7 +376,7 @@ class XnetGrpModule extends PLModule
                                             $u, $globals->asso('id'));
                 $n   = $res->fetchOneCell();
                 if ($n) {
-                    $page->trig("$prenom $nom est déjà membre du groupe !");
+                    $page->kill("$prenom $nom est déjà membre du groupe !");
                     return;
                 }
                 elseif (Env::has('accept'))