Search UI is more coherent :
[platal.git] / modules / search.php
index 3400caf..0db2640 100644 (file)
@@ -29,6 +29,12 @@ class SearchModule extends PLModule
         );
     }
 
+    function on_subscribe($forlife, $uid, $promo, $pass)
+    {
+        require_once 'user.func.inc.php';
+        user_reindex($uid);
+    }
+
     function get_quick($offset, $limit, $order)
     {
         global $globals;
@@ -49,13 +55,13 @@ class SearchModule extends PLModule
                 '.$fields->get_select_statement().'
                 LEFT JOIN  auth_user_quick AS q  ON (u.user_id = q.user_id)
                 LEFT JOIN  aliases         AS a  ON (u.user_id = a.id AND a.type="a_vie")
-                LEFT JOIN  contacts        AS c  ON (c.uid='.Session::getInt('uid').'
+                LEFT JOIN  contacts        AS c  ON (c.uid='.S::i('uid', -1).'
                                                      AND c.contact=u.user_id)
                 LEFT JOIN  watch_nonins    AS w  ON (w.ni_id=u.user_id
-                                                     AND w.uid='.Session::getInt('uid').')
+                                                     AND w.uid='.S::i('uid', -1).')
                 '.$globals->search->result_where_statement.'
                     WHERE  '.$fields->get_where_statement()
-                    .(logged() && Env::has('nonins') ? ' AND u.perms="pending" AND u.deces=0' : '')
+                    .(S::logged() && Env::has('nonins') ? ' AND u.perms="pending" AND u.deces=0' : '')
                 .'
                  GROUP BY  u.user_id
                  ORDER BY  '.($order?($order.', '):'')
@@ -63,41 +69,41 @@ class SearchModule extends PLModule
                                                 'u.promo DESC, NomSortKey, prenom'))).'
                     LIMIT  '.$offset * $globals->search->per_page.','
                 .$globals->search->per_page;
-        $list    = $globals->xdb->iterator($sql);
-        $res     = $globals->xdb->query("SELECT  FOUND_ROWS()");
+        $list    = XDB::iterator($sql);
+        $res     = XDB::query("SELECT  FOUND_ROWS()");
         $nb_tot  = $res->fetchOneCell();
         return array($list, $nb_tot);
     }
 
     function form_prepare()
     {
-        global $page,$globals;
+        global $page;
 
         $page->assign('formulaire',1);
         $page->assign('choix_nats',
-                      $globals->xdb->iterator('SELECT a2 AS id,IF(nat=\'\',pays,nat) AS text
+                      XDB::iterator('SELECT a2 AS id,IF(nat=\'\',pays,nat) AS text
                                                  FROM geoloc_pays ORDER BY text'));
         $page->assign('choix_postes',
-                      $globals->xdb->iterator('SELECT id,fonction_fr FROM fonctions_def
+                      XDB::iterator('SELECT id,fonction_fr FROM fonctions_def
                                              ORDER BY fonction_fr'));
         $page->assign('choix_binets',
-                      $globals->xdb->iterator('SELECT id,text FROM binets_def ORDER BY text'));
+                      XDB::iterator('SELECT id,text FROM binets_def ORDER BY text'));
         $page->assign('choix_groupesx',
-                      $globals->xdb->iterator('SELECT id,text FROM groupesx_def ORDER BY text'));
+                      XDB::iterator('SELECT id,text FROM groupesx_def ORDER BY text'));
         $page->assign('choix_sections',
-                      $globals->xdb->iterator('SELECT id,text FROM sections ORDER BY text'));
+                      XDB::iterator('SELECT id,text FROM sections ORDER BY text'));
         $page->assign('choix_schools',
-                      $globals->xdb->iterator('SELECT id,text FROM applis_def ORDER BY text'));
+                      XDB::iterator('SELECT id,text FROM applis_def ORDER BY text'));
         $page->assign('choix_secteurs',
-                      $globals->xdb->iterator('SELECT id,label FROM emploi_secteur ORDER BY label'));
+                      XDB::iterator('SELECT id,label FROM emploi_secteur ORDER BY label'));
 
         if (Env::has('school')) {
-            $sql = 'SELECT type FROM applis_def WHERE id='.Env::getInt('school');
+            $sql = 'SELECT type FROM applis_def WHERE id='.Env::i('school');
         } else {
             $sql = 'DESCRIBE applis_def type';
         }
 
-        $res = $globals->xdb->query($sql);
+        $res = XDB::query($sql);
         $row = $res->fetchOneRow();
         if (Env::has('school')) {
             $types = $row[0];
@@ -133,18 +139,19 @@ class SearchModule extends PLModule
                 '.$fields->get_select_statement().'
                 '.(Env::has('only_referent') ? ' INNER JOIN mentor AS m ON (m.uid = u.user_id)' : '').'
                 LEFT JOIN  aliases        AS a ON (u.user_id = a.id AND a.type="a_vie")
-                LEFT JOIN  contacts       AS c ON (c.uid='.Session::getInt('uid').'
+                LEFT JOIN  contacts       AS c ON (c.uid='.S::v('uid').'
                                                    AND c.contact=u.user_id)
                 LEFT JOIN  watch_nonins   AS w ON (w.ni_id=u.user_id
-                                                   AND w.uid='.Session::getInt('uid').')
+                                                   AND w.uid='.S::v('uid').')
                 '.$globals->search->result_where_statement."
                     $where
+                 GROUP BY  u.user_id
                  ORDER BY  ".($order?($order.', '):'')
                 .implode(',',array_filter(array($fields->get_order_statement(),
                                                 'promo DESC, NomSortKey, prenom'))).'
                     LIMIT  '.($offset * $limit).','.$limit;
-        $liste   = $globals->xdb->iterator($sql);
-        $res     = $globals->xdb->query("SELECT  FOUND_ROWS()");
+        $liste   = XDB::iterator($sql);
+        $res     = XDB::query("SELECT  FOUND_ROWS()");
         $nb_tot  = $res->fetchOneCell();
         return Array($liste, $nb_tot);
     }
@@ -172,7 +179,7 @@ class SearchModule extends PLModule
 
             $nb_tot = $search->show();
 
-            if (!logged() && $nb_tot > $globals->search->public_max) {
+            if (!S::logged() && $nb_tot > $globals->search->public_max) {
                 new ThrowError('Votre recherche a généré trop de résultats pour un affichage public.');
             } elseif ($nb_tot > $globals->search->private_max) {
                 new ThrowError('Recherche trop générale');
@@ -184,8 +191,6 @@ class SearchModule extends PLModule
         }
 
         $page->register_modifier('display_lines', 'display_lines');
-
-        return PL_OK;
     }
 
     function handler_advanced(&$page, $mode = null)
@@ -197,21 +202,16 @@ class SearchModule extends PLModule
         require_once 'geoloc.inc.php';
 
 
-        $page->changeTpl('search/index.tpl');
-
-        if ($mode == 'mini') {
-            $page->assign('simple', true);
-        }
+        $page->changeTpl('search/index.tpl', $mode == 'mini' ? SIMPLE : SKINNED);
 
         $page->assign('advanced',1);
         $page->assign('public_directory',0);
-        $page->assign('use_map', $globals->geoloc->use_map());
 
         if (!Env::has('rechercher')) {
             $this->form_prepare();
         } else {
 
-            $search = new XOrgSearch('get_list');
+            $search = new XOrgSearch(array($this, 'get_advanced'));
             $search->setNbLines($globals->search->per_page);
 
             $page->assign('url_search_form', $search->make_url(Array('rechercher'=>0)));
@@ -229,8 +229,6 @@ class SearchModule extends PLModule
         }
 
         $page->register_modifier('display_lines', 'display_lines');
-
-        return PL_OK;
     }
 }