Fixes nationalities deletion.
[platal.git] / modules / xnet.php
index d38ae9d..136382c 100644 (file)
@@ -33,28 +33,22 @@ class XnetModule extends PLModule
             'plan'        => $this->make_hook('plan',      AUTH_PUBLIC),
             'photo'       => $this->make_hook('photo',     AUTH_MDP),
             'autologin'   => $this->make_hook('autologin', AUTH_MDP),
+
+            'Xnet'        => $this->make_wiki_hook(),
         );
     }
 
     function handler_photo(&$page, $x = null)
     {
-        if (is_null($x)) {
+        if (!$x || !($profile = Profile::get($x))) {
             return PL_NOT_FOUND;
         }
 
-        $res = XDB::query("SELECT attachmime, attach
-                             FROM aliases
-                       INNER JOIN photo ON(id = uid)
-                            WHERE alias = {?}", $x);
-
-        if ((list($type, $data) = $res->fetchOneRow())) {
-            pl_cached_dynamic_content_headers("image/$type");
-            echo $data;
-        } else {
-            pl_cached_dynamic_content_headers("image/png");
-            echo file_get_contents(dirname(__FILE__).'/../htdocs/images/none.png');
-        }
-        exit;
+        // Retrieve the photo and its mime type.
+        $photo = $profile->getPhoto(true, true);
+
+        // Display the photo, or a default one when not available.
+        $photo->send();
     }
 
     function handler_index(&$page)
@@ -76,14 +70,14 @@ class XnetModule extends PLModule
 
         if (Get::has('del')) {
             $res = XDB::query('SELECT id, nom, mail_domain
-                                           FROM #groupex#.asso WHERE diminutif={?}',
+                                           FROM groups WHERE diminutif={?}',
                                         Get::v('del'));
             list($id, $nom, $domain) = $res->fetchOneRow();
             $page->assign('nom', $nom);
             if ($id && Post::has('del')) {
                 S::assert_xsrf_token();
 
-                XDB::query('DELETE FROM #groupex#.membres WHERE asso_id={?}', $id);
+                XDB::query('DELETE FROM group_members WHERE asso_id={?}', $id);
                 $page->trigSuccess('membres supprimés');
 
                 if ($domain) {
@@ -102,7 +96,7 @@ class XnetModule extends PLModule
                     }
                 }
 
-                XDB::query('DELETE FROM #groupex#.asso WHERE id={?}', $id);
+                XDB::query('DELETE FROM groups WHERE id={?}', $id);
                 $page->trigSuccess("Groupe $nom supprimé");
                 Get::kill('del');
             }
@@ -115,22 +109,22 @@ class XnetModule extends PLModule
             S::assert_xsrf_token();
 
             $res = XDB::query('SELECT  COUNT(*)
-                                 FROM  #groupex#.asso
+                                 FROM  groups
                                 WHERE  diminutif = {?}',
                               Post::v('diminutif'));
 
             if ($res->fetchOneCell() == 0) {
-                XDB::execute('INSERT INTO  #groupex#.asso (id, diminutif)
+                XDB::execute('INSERT INTO  groups (id, diminutif)
                                    VALUES  (NULL, {?})',
                              Post::v('diminutif'));
-                pl_redirect('../' . Post::v('diminutif') . '/edit');
+                pl_redirect(Post::v('diminutif') . '/edit');
             } else {
                 $page->trigError('Le diminutif demandé est déjà pris.');
             }
         }
 
         $res = XDB::query('SELECT  nom, diminutif
-                             FROM  #groupex#.asso
+                             FROM  groups
                          ORDER BY  nom');
         $page->assign('assos', $res->fetchAllAssoc());
     }
@@ -142,35 +136,35 @@ class XnetModule extends PLModule
         $page->setType('plan');
 
         $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
-                  WHERE  FIND_IN_SET("GroupesX", dom.cat) AND FIND_IN_SET("GroupesX", asso.cat)
-               ORDER BY  dom.nom, asso.nom');
+                'SELECT  dom.id, dom.nom as domnom, groups.diminutif, groups.nom
+                   FROM  group_dom AS dom
+             INNER JOIN  groups ON dom.id = groups.dom
+                  WHERE  FIND_IN_SET("GroupesX", dom.cat) AND FIND_IN_SET("GroupesX", groups.cat)
+               ORDER BY  dom.nom, groups.nom');
         $groupesx = array();
         while ($tmp = $res->next()) { $groupesx[$tmp['id']][] = $tmp; }
         $page->assign('groupesx', $groupesx);
 
         $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
-                  WHERE  FIND_IN_SET("Binets", dom.cat) AND FIND_IN_SET("Binets", asso.cat)
-               ORDER BY  dom.nom, asso.nom');
+                'SELECT  dom.id, dom.nom as domnom, groups.diminutif, groups.nom
+                   FROM  group_dom AS dom
+             INNER JOIN  groups ON dom.id = groups.dom
+                  WHERE  FIND_IN_SET("Binets", dom.cat) AND FIND_IN_SET("Binets", groups.cat)
+               ORDER BY  dom.nom, groups.nom');
         $binets = array();
         while ($tmp = $res->next()) { $binets[$tmp['id']][] = $tmp; }
         $page->assign('binets', $binets);
 
         $res = XDB::iterator(
-                'SELECT  asso.diminutif, asso.nom
-                   FROM  #groupex#.asso
+                'SELECT  diminutif, nom
+                   FROM  groups
                   WHERE  cat LIKE "%Promotions%"
                ORDER BY  diminutif');
         $page->assign('promos', $res);
 
         $res = XDB::iterator(
-                'SELECT  asso.diminutif, asso.nom
-                   FROM  #groupex#.asso
+                'SELECT  diminutif, nom
+                   FROM  groups
                   WHERE  FIND_IN_SET("Institutions", cat)
                ORDER BY  diminutif');
         $page->assign('inst', $res);
@@ -194,7 +188,7 @@ class XnetModule extends PLModule
         $page->assign('dom', $dom);
 
         $res  = XDB::query("SELECT  id,nom 
-                              FROM  #groupex#.dom
+                              FROM  group_dom
                              WHERE  FIND_IN_SET({?}, cat)
                           ORDER BY  nom", $cat);
         $doms = $res->fetchAllAssoc();
@@ -202,13 +196,13 @@ class XnetModule extends PLModule
 
         if (empty($doms)) {
             $res = XDB::query("SELECT  diminutif, nom, site
-                                 FROM  #groupex#.asso
+                                 FROM  groups
                                 WHERE  FIND_IN_SET({?}, cat)
                                 ORDER  BY nom", $cat);
             $page->assign('gps', $res->fetchAllAssoc());
         } elseif (!is_null($dom)) {
             $res = XDB::query("SELECT  diminutif, nom, site
-                                 FROM  #groupex#.asso
+                                 FROM  groups
                                 WHERE  FIND_IN_SET({?}, cat) AND dom={?}
                              ORDER BY  nom", $cat, $dom);
             $page->assign('gps', $res->fetchAllAssoc());