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) :
***************************************************************************/
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);
if (!Env::has('rechercher')) {
form_prepare();
} else {
- require_once('xorg.search.inc.php');
// {{{ function get_list()
function get_list($offset, $limit, $order, $order_inv) {
$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)
);
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)));
***************************************************************************/
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()) {
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) {
$qSearch = new QuickSearch('quick');
$fields = new SFieldGroup(true, array($qSearch));
- $offset = new NumericSField('offset');
-
if ($qSearch->isempty()) {
new ThrowError('Recherche trop générale.');
}
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);
***************************************************************************/
require_once('xorg.plugin.inc.php');
+require_once("search/classes.inc.php");
// {{{ class XOrgSearch
// }}}
// {{{ 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;
+ }
}
// }}}
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);
"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);
<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" />
<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