X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fsearch%2Fclasses.inc.php;h=5f01c97c35af1a32778618594e82bd3f62429511;hb=993e0a863c5bcd5847520f817c0d88dff6fb1958;hp=91c924dfd4753d0497e3ad450f470d1788bc31da;hpb=a7d35093a40837b3a17d7fbac0259995f084812c;p=platal.git diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index 91c924d..5f01c97 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -19,8 +19,6 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -require_once("xorg.misc.inc.php"); - // {{{ Global variables used for the search Queries @$globals->search->result_fields = ' @@ -92,9 +90,10 @@ 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->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->trigWarning("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); @@ -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%'"; }