pending commit, finished during MQ/S download ...
[platal.git] / modules / xnet.php
index 84bb0d2..22cdf7f 100644 (file)
@@ -34,6 +34,9 @@ class XnetModule extends PLModule
             'services'  => $this->make_hook('services',  AUTH_PUBLIC),
             'manuel'    => $this->make_hook('manuel',    AUTH_PUBLIC),
 
+            'admin'     => $this->make_hook('admin',     AUTH_MDP, 'admin'),
+            'groups'    => $this->make_hook('groups',    AUTH_PUBLIC),
+            'groupes.php' => $this->make_hook('groups2', AUTH_PUBLIC),
             'plan'      => $this->make_hook('plan',      AUTH_PUBLIC),
         );
     }
@@ -86,15 +89,64 @@ class XnetModule extends PLModule
         $page->useMenu();
     }
 
-    function handler_plan(&$page)
+    function handler_admin(&$page)
     {
-        global $globals;
+        new_admin_page('xnet/admin.tpl');
+        $page->useMenu();
+
+        if (Get::has('del')) {
+            $res = XDB::query('SELECT id, nom, mail_domain
+                                           FROM groupex.asso WHERE diminutif={?}',
+                                        Get::get('del'));
+            list($id, $nom, $domain) = $res->fetchOneRow();
+            $page->assign('nom', $nom);
+            if ($id && Post::has('del')) {
+                XDB::query('DELETE FROM groupex.membres WHERE asso_id={?}', $id);
+                $page->trig('membres supprimés');
+
+                if ($domain) {
+                    XDB::query('DELETE FROM  virtual_domains WHERE domain={?}', $domain);
+                    XDB::query('DELETE FROM  virtual, virtual_redirect
+                                                USING  virtual INNER JOIN virtual_redirect USING (vid)
+                                                WHERE  alias LIKE {?}', '%@'.$domain);
+                    $page->trig('suppression des alias mails');
+
+                    require_once('lists.inc.php');
+                    $client =& lists_xmlrpc(S::v('uid'), S::v('password'), $domain);
+                    if ($listes = $client->get_lists()) {
+                        foreach ($listes as $l) {
+                            $client->delete_list($l['list'], true);
+                        }
+                        $page->trig('mail lists surpprimées');
+                    }
+                }
+
+                XDB::query('DELETE FROM groupex.asso WHERE id={?}', $id);
+                $page->trig("Groupe $nom supprimé");
+                Get::kill('del');
+            }
+            if (!$id) {
+                Get::kill('del');
+            }
+        }
+
+        if (Post::has('diminutif')) {
+            XDB::query('INSERT INTO groupex.asso (id,diminutif)
+                                 VALUES(NULL,{?})', Post::get('diminutif'));
+            redirect(Post::get('diminutif').'/edit');
+        }
+
+        $res = XDB::query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM');
+        $page->assign('assos', $res->fetchAllAssoc());
+    }
 
+    function handler_plan(&$page)
+    {
         $page->changeTpl('xnet/plan.tpl');
 
         $page->setType('plan');
 
-        $res = $globals->xdb->iterator(
+        $res = XDB::iterator(
                 'SELECT  dom.id, dom.nom as domnom, asso.diminutif, asso.nom
                    FROM  groupex.dom
              INNER JOIN  groupex.asso ON dom.id = asso.dom
@@ -104,7 +156,7 @@ class XnetModule extends PLModule
         while ($tmp = $res->next()) { $groupesx[$tmp['id']][] = $tmp; }
         $page->assign('groupesx', $groupesx);
 
-        $res = $globals->xdb->iterator(
+        $res = XDB::iterator(
                 'SELECT  dom.id, dom.nom as domnom, asso.diminutif, asso.nom
                    FROM  groupex.dom
              INNER JOIN  groupex.asso ON dom.id = asso.dom
@@ -114,20 +166,58 @@ class XnetModule extends PLModule
         while ($tmp = $res->next()) { $binets[$tmp['id']][] = $tmp; }
         $page->assign('binets', $binets);
 
-        $res = $globals->xdb->iterator(
+        $res = XDB::iterator(
                 'SELECT  asso.diminutif, asso.nom
                    FROM  groupex.asso
                   WHERE  cat LIKE "%Promotions%"
                ORDER BY  diminutif');
         $page->assign('promos', $res);
 
-        $res = $globals->xdb->iterator(
+        $res = XDB::iterator(
                 'SELECT  asso.diminutif, asso.nom
                    FROM  groupex.asso
                   WHERE  FIND_IN_SET("Institutions", cat)
                ORDER BY  diminutif');
         $page->assign('inst', $res);
     }
+
+    function handler_groups2(&$page)
+    {
+        $this->handler_groups(&$page, Get::get('cat'), Get::get('dom'));
+    }
+
+    function handler_groups(&$page, $cat = null, $dom = null)
+    {
+        if (!$cat) {
+            $this->handler_index(&$page);
+        }
+
+        $cat = strtolower($cat);
+
+        $page->changeTpl('xnet/groupes.tpl');
+        $page->assign('cat', $cat);
+        $page->assign('dom', $dom);
+
+        $res  = XDB::query("SELECT id,nom FROM groupex.dom
+                                       WHERE FIND_IN_SET({?}, cat) ORDER BY nom", $cat);
+        $doms = $res->fetchAllAssoc();
+        $page->assign('doms', $doms);
+
+        if (empty($doms)) {
+            $res = XDB::iterator("SELECT diminutif, nom FROM groupex.asso
+                                             WHERE FIND_IN_SET({?}, cat) ORDER BY nom", $cat);
+        } elseif (!is_null($dom)) {
+            $res = XDB::iterator("SELECT diminutif, nom FROM groupex.asso
+                                             WHERE FIND_IN_SET({?}, cat) AND dom={?}
+                                          ORDER BY nom", $cat, $dom);
+        } else {
+            $res = null;
+        }
+        $page->assign('gps', $res);
+
+        $page->useMenu();
+        $page->setType($cat);
+    }
 }
 
 ?>