X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fuserset.inc.php;h=f96ccfb4f85584cb29b9102177201530499d3a42;hb=1cc0afe77b0c234f12840a84b0adac52fe07c4fe;hp=db56b4ce0250e3efeecb345359c3c7c643eb9437;hpb=22467482830abab21d288fab22458450801f6da0;p=platal.git diff --git a/include/userset.inc.php b/include/userset.inc.php index db56b4c..f96ccfb 100644 --- a/include/userset.inc.php +++ b/include/userset.inc.php @@ -24,7 +24,7 @@ require_once('user.func.inc.php'); 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) @@ -57,6 +57,7 @@ class UserSet extends PlSet class SearchSet extends UserSet { + private $score = null; private $order = null; private $quick = false; @@ -88,7 +89,9 @@ class SearchSet extends UserSet 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' : '')); @@ -108,6 +111,37 @@ class SearchSet extends UserSet $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 @@ -117,7 +151,12 @@ 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); } @@ -171,6 +210,11 @@ class TrombiView extends MultipageView { $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); } @@ -218,19 +262,12 @@ class GeolocView implements PlView 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) @@ -258,7 +295,6 @@ class GeolocView implements PlView if (!empty($GLOBALS['IS_XNET_SITE'])) { $page->assign('background', 0xF2E9D0); } - $page->assign('querystring', $this->make_qs()); break; case 'city': @@ -282,8 +318,6 @@ class GeolocView implements PlView 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); @@ -300,9 +334,6 @@ class GeolocView implements PlView } $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'; } }