From 393137f92bef68b4afd7645344e563c3777a4bd5 Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Thu, 15 Mar 2007 22:12:32 +0000 Subject: [PATCH] Some improvements git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1577 839d8a87-29fc-0310-9880-83ba4fa771e5 --- include/xorg.misc.inc.php | 22 +++++++++++----------- modules/search.php | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/include/xorg.misc.inc.php b/include/xorg.misc.inc.php index 86a8785..1031939 100644 --- a/include/xorg.misc.inc.php +++ b/include/xorg.misc.inc.php @@ -175,18 +175,18 @@ function soundex_fr($sIn) global $uc_convert; $convGuIn = array( 'GUI', 'GUE', 'GA', 'GO', 'GU', 'SC', 'CA', 'CO', 'CU', 'QU', 'Q', 'CC', 'CK', 'G', 'ST', 'PH'); $convGuOut = array( 'KI', 'KE', 'KA', 'KO', 'KU', 'SK', 'KA', 'KO', 'KU', 'K', 'K', 'K', 'K', 'J', 'T', 'F'); - $convVIn = array( '/E?(AU)/', '/([EA])?I([NM])([^EAIOUY]|$)/', '/[AE]O?[NM]([^AEIOUY]|$)/', + $convVIn = array( '/E?(AU)/', '/([EA])?[UI]([NM])([^EAIOUY]|$)/', '/[AE]O?[NM]([^AEIOUY]|$)/', '/[EA][IY]([NM]?[^NM]|$)/', '/(^|[^OEUIA])(OEU|OE|EU)([^OEUIA]|$)/', '/OI/', - '/(ILLE?|I)/', '/O(U|W)/', '/O[NM]($|[^EAOUIY])/', - '/([^AEIOUY])[^AEIOUYLKTP]([UAO])([^AEIOUY])/', '/([^AEIOUY]|^)([AUO])[^AEIOUYKTP]([^AEIOUY])/', '/^KN/', - '/^PF/', '/(SC|S|C)H/', '/^C|C$/', - '/C/', '/Z$/', '/(?!^)Z+/'); + '/(ILLE?|I)/', '/O(U|W)/', '/O[NM]($|[^EAOUIY])/', '/(SC|S|C)H/', + '/([^AEIOUY1])[^AEIOUYLKTP]([UAO])([^AEIOUY])/', '/([^AEIOUY]|^)([AUO])[^AEIOUYLKTP]([^AEIOUY1])/', '/^KN/', + '/^PF/', '/(SC|S|C)H/', '/C([^AEIOUY]|$)/', + '/C/', '/Z$/', '/(?!^)Z+/', '/ER$/', '/H/'); $convVOut = array( 'O', '1\3', 'A\1', - 'E\1', '\1\2', 'O', - 'Y', 'U', 'O\1', + 'E\1', '\1E\3', 'O', + 'Y', 'U', 'O\1', '9', '\1\2\3', '\1\2\3', 'N', - 'F', '9', 'K', - 'S', 'SE', 'S'); + 'F', 'K\1', + 'S', 'SE', 'S', 'E', ''); $accents = $uc_convert; $accents['Ç'] = 'S'; $accents['¿'] = 'E'; @@ -207,12 +207,12 @@ function soundex_fr($sIn) $sIn = preg_replace( '`(.)\1`', '$1', $sIn ); // on réinterprète les voyelles $sIn = preg_replace( $convVIn, $convVOut, $sIn); - $sIn = strtr($sIn, 'H', ''); + // on supprime les terminaisons T, D, S, X (et le L qui précède si existe) $sIn = preg_replace( '`L?[TDSX]$`', '', $sIn ); // on supprime les E, A et Y qui ne sont pas en première position $sIn = preg_replace( '`(?!^)Y([^AEOU]|$)`', '\1', $sIn); - $sIn = preg_replace( '`(?!^)([EA])`', '', $sIn); + $sIn = preg_replace( '`(?!^)[EA]`', '', $sIn); return substr( $sIn . ' ', 0, 4); } diff --git a/modules/search.php b/modules/search.php index 0a0229c..2a27ceb 100644 --- a/modules/search.php +++ b/modules/search.php @@ -47,6 +47,9 @@ class SearchModule extends PLModule function get_quick($offset, $limit, $order) { global $globals; + if (!S::logged()) { + Env::kill('with_soundex'); + } $qSearch = new QuickSearch('quick'); $fields = new SFieldGroup(true, array($qSearch)); -- 2.1.4