/******************************************************************************* * Pour mettre à jour votre Forum FSB 1.0.7 en FSB v1.0.8 * * Date : 10 aout 2007 * *******************************************************************************/ # # [] ========== OUVRIR ========================================================= includes/class/class_tpl.php # # [] ---------- chercher ------------------------------------------------------- # Correction de bugs - Mauvaise évaluation des variables [...] en dehors des conditions # /* ** On parse les variables globales et de blocks des structures ** conditionelles. On les parse de la même façon que les autres variables ** à la différence prèt que leur structure est de la forme [VAR] ou bien ** [bloc1::bloc2::VAR]. */ $str = preg_replace('/\[([A-Z0-9\-_]+)\]/s', '(isset($this->data[\'' . $mask . '\'][\'vars\'][\'\\1\']) ? $this->data[\'' . $mask . '\'][\'vars\'][\'\\1\'] : $this->data[\'parent\'][\'vars\'][\'\\1\'])', $str); preg_match_all('/\[(([a-z0-9\-_]+?\.)+?)([A-Z0-9\-_]+?)\]/s', $str, $vars_b); $count_vars_b = count($vars_b[1]); for ($v = 0; $v < $count_vars_b; $v++) { $str = str_replace($vars_b[0][$v], '$this->data[\'' . $mask . '\'][\'blocks\']' . $this->get_vars_blocks($vars_b[1][$v]) . '[\'' . $vars_b[3][$v] . '\']', $str); } /* ** On parse les blocks conditionels IF et ELSEIF, ces blocks doivent ** automatiquement être suivi d'une condition. */ preg_match_all('//si', $str, $if); $count_if = count($if[0]); for ($v = 0; $v < $count_if; $v++) { $str = str_replace($if[0][$v], "';\n" . (($if[1][$v] == 'ELSE') ? "}\nelse " : '') . "if (" . stripslashes($if[2][$v]) . ")\n{\n$assign '", $str); } # # [] ---------- remplacer par ------------------------------------------------- # Correction de bugs - Mauvaise évaluation des variables [...] en dehors des conditions # /* ** On parse les blocks conditionels IF et ELSEIF, ces blocks doivent ** automatiquement être suivi d'une condition. */ preg_match_all('//si', $str, $if); $count_if = count($if[0]); for ($v = 0; $v < $count_if; $v++) { /* ** On parse les variables globales et de blocks des structures ** conditionelles. On les parse de la même façon que les autres variables ** à la différence prèt que leur structure est de la forme [VAR] ou bien ** [bloc1::bloc2::VAR]. */ $if[2][$v] = preg_replace('/\[([A-Z0-9\-_]+)\]/s', '(isset($this->data[\'' . $mask . '\'][\'vars\'][\'\\1\']) ? $this->data[\'' . $mask . '\'][\'vars\'][\'\\1\'] : $this->data[\'parent\'][\'vars\'][\'\\1\'])', $if[2][$v]); preg_match_all('/\[(([a-z0-9\-_]+?\.)+?)([A-Z0-9\-_]+?)\]/s', $if[2][$v], $vars_b); $count_vars_b = count($vars_b[1]); for ($w = 0; $w < $count_vars_b; $w++) { $if[2][$v] = str_replace($vars_b[0][$w], '$this->data[\'' . $mask . '\'][\'blocks\']' . $this->get_vars_blocks($vars_b[1][$w]) . '[\'' . $vars_b[3][$w] . '\']', $if[2][$w]); } $str = str_replace($if[0][$v], "';\n" . (($if[1][$v] == 'ELSE') ? "}\nelse " : '') . "if (" . stripslashes($if[2][$v]) . ")\n{\n$assign '", $str); } # # [] ========== OUVRIR ========================================================= includes/functions/fonctions.php # # [] ---------- chercher ------------------------------------------------------- # Correction de bugs - Le bannissement d'un membre pouvait bloquer d'autres membres si leurs pseudonymes se ressemblaient # function is_matching($mask, $str) { return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE); } # # [] ---------- remplacer par ------------------------------------------------- # Correction de bugs - Le bannissement d'un membre pouvait bloquer d'autres membres si leurs pseudonymes se ressemblaient # function is_matching($mask, $str) { return ((preg_match('/^' . str_replace('\*', '.*', preg_quote($mask)) . '$/i', $str)) ? TRUE : FALSE); }