From b8c2ada6f52b3677e15f62bd0fe0377b04f4d4a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Wed, 23 Jul 2008 17:38:23 +0200 Subject: [PATCH] Adds the possibility to do an exact search (closes #791), updates ChangeLog --- ChangeLog | 1 + modules/search/classes.inc.php | 11 +++++++++-- templates/search/adv.form.tpl | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 660d5d3..337309c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Bug/Wish: * Search: - #691: Adds search on postcode and thus on "arrondissements" -JAC + - #791: Adds the possibility to do an exact search -JAC ================================================================================ VERSION 0.9.17 19 07 2008 diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index 42ee056..5f01c97 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -277,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); @@ -443,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%'"; } @@ -581,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%'"; } @@ -612,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%'"; } diff --git a/templates/search/adv.form.tpl b/templates/search/adv.form.tpl index ee53cba..7df08e4 100644 --- a/templates/search/adv.form.tpl +++ b/templates/search/adv.form.tpl @@ -415,6 +415,12 @@ checked="checked"{/if}/>Chercher uniquement les adresses où les camarades sont + + + + + + {/if} -- 2.1.4