Reformat examples
[platal.git] / modules / search.php
index 4f7be95..d761175 100644 (file)
@@ -26,9 +26,24 @@ class SearchModule extends PLModule
         return array(
             'search'     => $this->make_hook('quick', AUTH_PUBLIC),
             'search/adv' => $this->make_hook('advanced', AUTH_COOKIE),
+            'search/ajax/region'  => $this->make_hook('region', AUTH_COOKIE, '', NO_AUTH),
+            'search/ajax/grade'   => $this->make_hook('grade',  AUTH_COOKIE, '', NO_AUTH),
+            'advanced_search.php' => $this->make_hook('redir_advanced', AUTH_PUBLIC),
         );
     }
 
+    function handler_redir_advanced(&$page, $mode = null)
+    {
+        pl_redirect('search/adv');
+        exit;
+    }
+
+    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 +64,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.', '):'')
@@ -71,6 +86,8 @@ class SearchModule extends PLModule
 
     function form_prepare()
     {
+        global $page;
+
         $page->assign('formulaire',1);
         $page->assign('choix_nats',
                       XDB::iterator('SELECT a2 AS id,IF(nat=\'\',pays,nat) AS text
@@ -88,21 +105,30 @@ class SearchModule extends PLModule
                       XDB::iterator('SELECT id,text FROM applis_def ORDER BY text'));
         $page->assign('choix_secteurs',
                       XDB::iterator('SELECT id,label FROM emploi_secteur ORDER BY label'));
+        $this->get_diplomas();
+    }
+
+    function get_diplomas($school = null)
+    {
+        if (is_null($school) && Env::has('school')) {
+            $school = Env::i('school');
+        }
 
-        if (Env::has('school')) {
-            $sql = 'SELECT type FROM applis_def WHERE id='.Env::getInt('school');
+        if (!is_null($school)) {
+            $sql = 'SELECT type FROM applis_def WHERE id=' . $school;
         } else {
             $sql = 'DESCRIBE applis_def type';
         }
 
         $res = XDB::query($sql);
         $row = $res->fetchOneRow();
-        if (Env::has('school')) {
+        if (!is_null($school)) {
             $types = $row[0];
         } else {
             $types = explode('(',$row[1]);
             $types = str_replace("'","",substr($types[1],0,-1));
         }
+        global $page;
         $page->assign('choix_diplomas', explode(',',$types));
     }
 
@@ -131,12 +157,13 @@ 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'))).'
@@ -151,7 +178,7 @@ class SearchModule extends PLModule
     {
         global $globals;
 
-        require_once 'search.inc.php';
+        require_once dirname(__FILE__).'/search/search.inc.php';
 
         $page->changeTpl('search/index.tpl');
 
@@ -170,7 +197,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');
@@ -188,20 +215,15 @@ class SearchModule extends PLModule
     {
         global $globals;
 
-        require_once 'search.inc.php' ;
+        require_once dirname(__FILE__).'/search/search.inc.php';
         require_once 'applis.func.inc.php';
         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();
@@ -224,8 +246,26 @@ class SearchModule extends PLModule
 
         }
 
+        $page->addJsLink('ajax.js');
         $page->register_modifier('display_lines', 'display_lines');
     }
+
+    function handler_region(&$page, $country = null)
+    {
+        header('Content-Type: text/html; charset="iso-8859-15"');
+        require_once("geoloc.inc.php");
+        $page->ChangeTpl('search/adv.region.form.tpl', NO_SKIN);
+        $page->assign('region', "");
+        $page->assign('country', $country);
+    }
+
+    function handler_grade(&$page, $school = null)
+    {
+        header('Content-Type: text/html; charset="iso-8859-15"');
+        $page->ChangeTpl('search/adv.grade.form.tpl', NO_SKIN);
+        $page->assign('grade', '');
+        $this->get_diplomas($school);
+    }
 }
 
 ?>