aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorrxu <rxu@mail.ru>2011-01-04 11:54:10 +0700
committerrxu <rxu@mail.ru>2011-01-07 20:51:43 +0700
commit9a25e4ad8956f46fa41a6057a8af53f2955fb532 (patch)
treec38ef8792dd74434f249db01789189b4bbfc3ab2 /phpBB
parent7a2348bf7f0ee67856cc5ae15591b7d1b7c48763 (diff)
downloadforums-9a25e4ad8956f46fa41a6057a8af53f2955fb532.tar
forums-9a25e4ad8956f46fa41a6057a8af53f2955fb532.tar.gz
forums-9a25e4ad8956f46fa41a6057a8af53f2955fb532.tar.bz2
forums-9a25e4ad8956f46fa41a6057a8af53f2955fb532.tar.xz
forums-9a25e4ad8956f46fa41a6057a8af53f2955fb532.zip
[ticket/9933] Wrong handling consecutive multiple asterisks in word censor
Fix consecutive asterisks issue in word censor. PHPBB3-9933
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/includes/acp/acp_words.php3
-rw-r--r--phpBB/includes/cache.php4
2 files changed, 5 insertions, 2 deletions
diff --git a/phpBB/includes/acp/acp_words.php b/phpBB/includes/acp/acp_words.php
index 1cb9545967..88c5bbe592 100644
--- a/phpBB/includes/acp/acp_words.php
+++ b/phpBB/includes/acp/acp_words.php
@@ -95,6 +95,9 @@ class acp_words
trigger_error($user->lang['ENTER_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
}
+ // Replace multiple consecutive asterisks with single one as those are not needed
+ $word = preg_replace('#\*{2,}#', '*', $word);
+
$sql_ary = array(
'word' => $word,
'replacement' => $replacement
diff --git a/phpBB/includes/cache.php b/phpBB/includes/cache.php
index b50fab4ca2..9b90483b50 100644
--- a/phpBB/includes/cache.php
+++ b/phpBB/includes/cache.php
@@ -90,9 +90,9 @@ class cache extends acm
{
// Unescape the asterisk to simplify further conversions
$row['word'] = str_replace('\*', '*', preg_quote($row['word'], '#'));
-
+
// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
- $row['word'] = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*(?=[\p{Nd}\p{L}_])#iu', '#^\*#', '#\*$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $row['word']);
+ $row['word'] = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*+(?=[\p{Nd}\p{L}_])#iu', '#^\*+#', '#\*+$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $row['word']);
// Generate the final substitution
$censors['match'][] = '#(?<![\p{Nd}\p{L}_-])(' . $row['word'] . ')(?![\p{Nd}\p{L}_-])#iu';