global $globals;
-$globals->search->result_where_statement = '
+@$globals->search->result_where_statement = '
LEFT JOIN applis_ins AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0)
LEFT JOIN applis_def AS ad0 ON (ad0.id = ai0.aid)
LEFT JOIN applis_ins AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1)
class SearchSet extends UserSet
{
+ private $score = null;
private $order = null;
private $quick = false;
if ($qSearch->isEmpty()) {
new ThrowError('Recherche trop générale.');
}
- parent::__construct($fields->get_select_statement() . ' ' . $globals->search->result_where_statement,
+ $this->score = $qSearch->get_score_statement();
+ parent::__construct("{$fields->get_select_statement()}
+ {$globals->search->result_where_statement}",
$fields->get_where_statement() .
(S::logged() && Env::has('nonins') ? ' AND u.perms="pending" AND u.deces=0' : ''));
$this->order = implode(',',array_filter(array($fields->get_order_statement(),
'promo DESC, NomSortKey, prenom')));
}
+
+ public function &get($fields, $joins, $where, $groupby, $order, $limitcount = null, $limitfrom = null)
+ {
+ if ($this->score) {
+ $fields .= ', ' . $this->score;
+ }
+ return parent::get($fields, $joins, $where, $groupby, $order, $limitcount, $limitfrom);
+ }
+}
+
+class ArraySet extends UserSet
+{
+ public function __construct(array $users)
+ {
+ $where = $this->getUids($users);
+ if ($where) {
+ $where = "a.alias IN ($where)";
+ } else {
+ $where = " 0 ";
+ }
+ parent::__construct('', $where);
+ }
+
+ private function getUids(array $users)
+ {
+ $users = get_users_forlife_list($users, true, '_silent_user_callback');
+ if (is_null($users)) {
+ return '';
+ }
+ return '\'' . implode('\', \'', $users) . '\'';
+ }
}
class MinificheView extends MultipageView
require_once 'applis.func.inc.php';
global $globals;
$this->entriesPerPage = $globals->search->per_page;
- $this->order = explode(',', Env::v('order', 'nom,prenom,promo'));
+ if (@$params['with_score']) {
+ $this->addSortKey('score', array('-score', '-watch_last', '-promo', 'nom', 'prenom'), 'pertinence');
+ }
+ $this->addSortKey('name', array('nom', 'prenom'), 'nom');
+ $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion');
+ $this->addSortKey('date', array('-watch_last', '-promo', 'nom', 'prenom'), 'dernière modification');
parent::__construct($set, $data, $params);
}
{
$this->entriesPerPage = 24;
$this->order = explode(',', Env::v('order', 'nom,prenom,promo'));
+ if (@$params['with_score']) {
+ $this->addSortKey('score', array('-score', '-watch_last', '-promo', 'nom', 'prenom'), 'pertinence');
+ }
+ $this->addSortKey('name', array('nom', 'prenom'), 'nom');
+ $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion');
parent::__construct($set, $data, $params);
}
is_file(dirname(__FILE__) . '/../modules/geoloc/icon.swf');
}
- private function make_qs($urlencode = true)
+ public function args()
{
- $qs = "";
- foreach ($_GET as $v=>$a) {
- if ($v != 'initfile' && $v != 'n' && $v != 'mapid') {
- if (!$urlencode) {
- $qs .= $v . '=' . $a . '&';
- } else {
- $qs .= urlencode($v) . '=' . urlencode($a) . '&';
- }
- }
- }
- return $qs;
+ $args = $this->set->args();
+ unset($args['initfile']);
+ unset($args['mapid']);
+ return $args;
}
public function apply(PlatalPage &$page)
if (!empty($GLOBALS['IS_XNET_SITE'])) {
$page->assign('background', 0xF2E9D0);
}
- $page->assign('querystring', $this->make_qs());
break;
case 'city':
header('Content-Type: text/xml');
header('Pragma:');
}
- $querystring = $this->make_qs();
- $page->assign('searchvars', $querystring);
$mapid = Env::has('mapid') ? Env::i('mapid', -2) : false;
list($countries, $cities) = geoloc_getData_subcountries($mapid, $this->set, 10);
$page->assign('countries', $countries);
}
$page->assign('protocole', @$_SERVER['HTTPS'] ? 'https' : 'http');
$this->set->get('u.user_id', null, "u.perms != 'pending' AND u.deces = 0", "u.user_id", null);
- $url = '?' . $this->make_qs(false);
- $page->assign('search_nourlencode', $url);
- $page->assign('search', urlencode($url));
return 'include/plview.geoloc.tpl';
}
}