X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=modules%2Fsearch%2Fclasses.inc.php;h=5f01c97c35af1a32778618594e82bd3f62429511;hb=993e0a863c5bcd5847520f817c0d88dff6fb1958;hp=11202bbac5507b9ed8ce01127a7ff6c0e551291e;hpb=63fac48e801886b27c5b0254c16f25a5c9084071;p=platal.git diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index 11202bb..5f01c97 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -1,6 +1,6 @@ search->result_fields = ' @@ -36,7 +34,7 @@ require_once("xorg.misc.inc.php"); ad1.text AS app1text, ad1.url AS app1url, ai1.type AS app1type, es.label AS secteur, ef.fonction_fr AS fonction, IF(n.nat=\'\',n.pays,n.nat) AS nat, n.a2 AS iso3166, - COUNT(em.email) > 0 AS actif,'; + (COUNT(em.email) > 0 OR FIND_IN_SET("googleapps", u.mail_storage) > 0) AS actif,'; // hide private information if not logged if (S::logged()) $globals->search->result_fields .=' @@ -92,11 +90,12 @@ class ThrowError */ private static function defaultHandler($explain) { - global $page, $globals; + global $globals; + $page =& Platal::page(); $page->changeTpl('search/index.tpl'); - $page->assign('xorg_title','Polytechnique.org - Annuaire'); + $page->setTitle('Polytechnique.org - Annuaire'); $page->assign('baseurl', $globals->baseurl); - $page->trig('Erreur : '.$explain); + $page->trigError($explain); $page->run(); } } @@ -253,8 +252,7 @@ class QuickSearch extends SField $s = preg_replace('!\d+!', ' ', $s); $this->strings = preg_split("![^a-zA-Z%]+!",$s, -1, PREG_SPLIT_NO_EMPTY); if (count($this->strings) > 5) { - global $page; - $page->trig("Tu as indiqué trop d'éléments dans ta recherche, seuls les 5 premiers seront pris en compte"); + Platal::page()->trigWarning("Tu as indiqué trop d'éléments dans ta recherche, seuls les 5 premiers seront pris en compte"); $this->strings = array_slice($this->strings, 0, 5); } @@ -279,6 +277,8 @@ class QuickSearch extends SField if (Env::i('with_soundex') && strlen($s) > 1) { $t = soundex_fr($s); $where[] = "sn$i.soundex = '$t'"; + } elseif (Env::i('exact')) { + $where[] = "sn$i.token = '$s'"; } else { $t = str_replace('*', '%', $s).'%'; $t = str_replace('%%', '%', $t); @@ -307,8 +307,8 @@ class QuickSearch extends SField $where[] = 'ems.email = ' . XDB::escape($this->email); } if (!empty($this->ip)) { - $ip = XDB::escape($this->ip); - $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip )"; + $ip = ip_to_uint($this->ip); + $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip ) AND ls.suid = 0"; } return join(" AND ", $where); @@ -445,6 +445,7 @@ class RefSField extends SField function compare() { $val = addslashes($this->value); + if (Env::i('exact')) return "='$val'"; return $this->exact ? "='$val'" : " LIKE '%$val%'"; } @@ -583,7 +584,9 @@ class StringSField extends SField * @param field nom de champ de la bdd concerné par la clause */ function get_single_where_statement($field) { - $regexp = strtr(addslashes($this->value), '-*', '_%'); + $val = addslashes($this->value); + if (Env::i('exact')) return "$field = '$val'"; + $regexp = strtr($val, '-*', '_%'); return "$field LIKE '$regexp%'"; } @@ -614,7 +617,9 @@ class NameSField extends StringSField function get_single_where_statement($field) { - $regexp = strtr(addslashes($this->value), '-*', '_%'); + $val = addslashes($this->value); + if (Env::i('exact')) return "$field = '$val'"; + $regexp = strtr($val, '-*', '_%'); return "$field LIKE '$regexp%' OR $field LIKE '% $regexp%' OR $field LIKE '%-$regexp%'"; }