closes #109
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Tue, 8 Feb 2005 06:09:06 +0000 (06:09 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:28:06 +0000 (23:28 +0200)
some tiny corrections :
  * one bug in quick search (offset was ignored)
  * make 'modification date' checkboxes work again

+

Make search a real clean module with public include and hidden ones (like said in the R.I.P doc)

git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-457

ChangeLog
htdocs/advanced_search.php
htdocs/search.php
include/search.inc.php [moved from include/xorg.search.inc.php with 87% similarity]
include/search/classes.inc.php [moved from include/search.classes.inc.php with 100% similarity]
templates/search.adv.form.tpl
templates/search.quick.form.tpl

index d3d903f..930befa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,7 +18,8 @@ New :
 
 Bug/Wish :
 
-       - #270: private/public flags are now used for search.                                   -Car
+       - #109: Lots of sorting methods for search.                                                             -Car
+       - #270: Private/public flags are now used for search.                                   -Car
 
 Fixes (from 0.9.4 branch) :
 
index 47aa049..c25d670 100644 (file)
@@ -20,7 +20,7 @@
  ***************************************************************************/
 
 require_once("xorg.inc.php");
-require_once("search.classes.inc.php");
+require_once('search.inc.php');
 new_skinned_page('search.tpl', AUTH_COOKIE);
 
 $page->assign('advanced',1);
@@ -63,7 +63,6 @@ function form_prepare()
 if (!Env::has('rechercher')) {
     form_prepare();
 } else {
-    require_once('xorg.search.inc.php');
     // {{{ function get_list()
 
     function get_list($offset, $limit, $order, $order_inv) {
@@ -101,12 +100,12 @@ if (!Env::has('rechercher')) {
         $freeField       = new RefSField('free',array('q.profile_freetext'),'','','',false);
       
         $fields          = new SFieldGroup(true, array( 
-            $nameField, $firstnameField, $nicknameField, $promo1Field,
-            $promo2Field, $womanField, $subscriberField, $aliveField,
-            $townField, $countryField, $regionField, $entrepriseField,
-            $posteField, $secteurField, $cvField, $natField, $binetField,
-            $groupexField, $sectionField, $schoolField, $diplomaField,
-            $freeField)
+                    $nameField, $firstnameField, $nicknameField, $promo1Field,
+                    $promo2Field, $womanField, $subscriberField, $aliveField,
+                    $townField, $countryField, $regionField, $entrepriseField,
+                    $posteField, $secteurField, $cvField, $natField, $binetField,
+                    $groupexField, $sectionField, $schoolField, $diplomaField,
+                    $freeField)
                 );
 
     
@@ -142,7 +141,9 @@ if (!Env::has('rechercher')) {
         return Array($liste, $nb_tot);
     }
 
-    $search = new XOrgSearch(get_list);
+    // }}}
+
+    $search = new XOrgSearch('get_list');
     $search->setNbLines($globals->search->per_page);
             
     $page->assign('url_search_form', $search->make_url(Array('rechercher'=>0)));
index 2ab604c..a6a66f9 100644 (file)
@@ -20,7 +20,7 @@
  ***************************************************************************/
 
 require_once("xorg.inc.php");
-require_once("search.classes.inc.php");
+require_once("search.inc.php");
 
 new_skinned_page('search.tpl', AUTH_PUBLIC);
 if (logged()) {
@@ -31,7 +31,6 @@ require_once("applis.func.inc.php");
 require_once("geoloc.inc.php");
 
 if (Env::has('quick')) {
-    require_once("xorg.search.inc.php");
     $page->assign('formulaire', 0);
 
     function get_list($offset, $limit, $order, $order_inv) {
@@ -39,8 +38,6 @@ if (Env::has('quick')) {
         $qSearch = new QuickSearch('quick');
         $fields  = new SFieldGroup(true, array($qSearch));
 
-        $offset  = new NumericSField('offset');
-        
         if ($qSearch->isempty()) {
             new ThrowError('Recherche trop générale.');
         }
@@ -63,8 +60,8 @@ if (Env::has('quick')) {
                    HAVING  mark>0
                  ORDER BY '.($order?($order.($order_inv?" DESC":"").', '):'')
                             .implode(',',array_filter(array($fields->get_order_statement(), 'u.promo DESC, NomSortKey, prenom'))).'
-                    LIMIT  '.$offset->value.','.$globals->search->per_page;
-        $list = $globals->xdb->iterator($sql);
+                    LIMIT  '.$offset * $globals->search->per_page.','.$globals->search->per_page;
+        $list    = $globals->xdb->iterator($sql);
         $res     = $globals->xdb->query("SELECT  FOUND_ROWS()");
         $nb_tot  = $res->fetchOneCell();
         return array($list, $nb_tot);
similarity index 87%
rename from include/xorg.search.inc.php
rename to include/search.inc.php
index 963f714..c161308 100644 (file)
@@ -20,6 +20,7 @@
  ***************************************************************************/
 
 require_once('xorg.plugin.inc.php');
+require_once("search/classes.inc.php");
 
 // {{{ class XOrgSearch
 
@@ -45,22 +46,28 @@ class XOrgSearch extends XOrgPlugin
     // }}}
     // {{{ function setAuth()
 
-    function setAuth() {
-        foreach ($this->orders as $key=>$o)
-            if ($o[3] == AUTH_COOKIE)
+    function setAuth()
+    {
+        foreach ($this->orders as $key=>$o) {
+            if ($o[3] == AUTH_COOKIE) {
                 $this->orders[$key][3] = logged();
-            elseif ($o[3] == AUTH_PUBLIC)
+            } elseif ($o[3] == AUTH_PUBLIC) {
                 $this->orders[$key][3] = true;
-            else
+            } else {
                 $this->orders[$key][3] = identified();
+            }
+        }
     }
 
     // }}}
     // {{{ function addOrder()
 
-    function addOrder($name, $field, $inv_order, $text, $auth, $defaut=false) {
+    function addOrder($name, $field, $inv_order, $text, $auth, $defaut=false)
+    {
         $this->orders[$name] = array($field, $inv_order, $text, $auth);
-        if ($defaut) $this->order_defaut = $name;
+        if ($defaut) {
+            $this->order_defaut = $name;
+        }
     }
 
     // }}}
@@ -72,9 +79,11 @@ class XOrgSearch extends XOrgPlugin
        global $page;
 
         $offset = intval($this->get_value('offset'));
-        $tab = $this->orders[$this->get_value('order')];
-        if (!$tab || !$tab[3]) $tab = $this->orders[$this->order_defaut];
-        $order = $tab[0];
+        $tab    = $this->orders[$this->get_value('order')];
+        if (!$tab || !$tab[3]) {
+            $tab = $this->orders[$this->order_defaut];
+        }
+        $order     = $tab[0];
         $order_inv = ($this->get_value('order_inv') != '') == $tab[1];
        
         list($list, $total) = call_user_func($this->_callback, $offset, $this->limit, $order, $order_inv);
@@ -104,7 +113,8 @@ class XOrgSearch extends XOrgPlugin
                 "text"=>$o[2],
                 "url" =>$this->make_url(Array('order'    =>$key,'order_inv'=>($o[0] == $order) && ($order_inv != $o[1]))),
                 "asc" =>($o[0] == $order) && $order_inv,
-                "desc"=>($o[0] == $order) && !$order_inv);
+                "desc"=>($o[0] == $order) && !$order_inv
+            );
         }
         $page->assign('search_order_link', $order_links);
   
index a1de05c..acd19ab 100644 (file)
   <div class="center">
     <br />
     {min_auth level='cookie'}
-    <input type='checkbox' name='mod_date_sort' {if $smarty.request.mod_date_sort}checked='checked'{/if} />
+    <input type='checkbox' name='order' value='date_mod' {if $smarty.request.order eq "date_mod"}checked='checked'{/if} />
     mettre les fiches modifiées récemment en premier <br /> <br />
     {/min_auth}
     <input type="submit" name="rechercher" value="Chercher" />
index 838476f..15d6b6c 100644 (file)
@@ -26,7 +26,7 @@
       <td style="width: 78%">
         <input type='text' name="quick" value="{$smarty.request.quick}" style="width: 100%" /><br />
         {min_auth level='cookie'}
-        <input type='checkbox' name='mod_date_sort' {if $smarty.request.mod_date_sort}checked='checked'{/if} />
+        <input type='checkbox' name='order' value='date_mod' {if $smarty.request.order eq "date_mod"}checked='checked'{/if} />
         mettre les fiches modifiées récemment en premier
         {if $smarty.request.nonins}
         <br /><input type='checkbox' name='nonins' readonly="readonly" checked='checked' value='1' /> Chercher uniquement des non inscrits