From 82a2a4d6c0521f6f2bc2ad80f4934e0cbf68b775 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 2 Feb 2012 10:05:06 +0000 Subject: [PATCH] Utiliser les fonctions de texte de SPIP pour extraire les multis en SQLite plutot que refaire une regexp buguee (ici on ne renvoyait pas la premiere langue de la multi quand la langue demandee n'etait pas definie) --- ecrire/req/sqlite_fonctions.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ecrire/req/sqlite_fonctions.php b/ecrire/req/sqlite_fonctions.php index a109d2f71f..7d807f4e00 100644 --- a/ecrire/req/sqlite_fonctions.php +++ b/ecrire/req/sqlite_fonctions.php @@ -206,9 +206,23 @@ function _sqlite_func_preg_replace($quoi, $cherche, $remplace) { * @return string, l'extrait trouve. **/ function _sqlite_func_extraire_multi($quoi, $lang) { - $cherche = "<multi>.*[\[]" . $lang . "[\]]([^\[]*).*</multi>"; - $return = preg_replace('%'.$cherche.'%sS', '$1', $quoi); - return $return; + if (!defined('_EXTRAIRE_MULTI')) + include_spip('inc/filtres'); + if (!function_exists('approcher_langue')) + include_spip('inc/lang'); + if (preg_match_all(_EXTRAIRE_MULTI, $quoi, $regs, PREG_SET_ORDER)) { + foreach ($regs as $reg) { + // chercher la version de la langue courante + $trads = extraire_trads($reg[1]); + if ($l = approcher_langue($trads, $lang)) { + $trad = $trads[$l]; + } else { + $trad = reset($trads); + } + $quoi = str_replace($reg[0], $trad, $quoi); + } + } + return $quoi; } -- GitLab