diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index c322c58779..f55eda4b5e 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -739,7 +739,7 @@ function obtain_word_list(&$censors) { do { - $censors['match'][] = '#(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')#i'; + $censors['match'][] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i'; $censors['replace'][] = $row['replacement']; } while ($row = $db->sql_fetchrow($result)); diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 9c6d0fd844..e48249bdfc 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -290,10 +290,17 @@ function display_forums($root_data = '', $display_moderators = TRUE) function display_attachments($attachment_data, &$update_count, $force_physical = false) { global $extensions, $template; - global $config, $user, $phpbb_root_path, $phpEx, $SID; + global $config, $user, $phpbb_root_path, $phpEx, $SID, $censors; + if (empty($censors)) + { + $censors = array(); + obtain_word_list($censors); + } + if (empty($extensions) || !is_array($extensions)) { + $extensions = array(); obtain_attach_extensions($extensions); } @@ -323,7 +330,7 @@ function display_attachments($attachment_data, &$update_count, $force_physical = $filesize = ($filesize >= 1048576) ? round((round($filesize / 1048576 * 100) / 100), 2) : (($filesize >= 1024) ? round((round($filesize / 1024 * 100) / 100), 2) : $filesize); $display_name = $attachment['real_filename']; - $comment = str_replace("\n", '
', $attachment['comment']); + $comment = (sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], str_replace("\n", '
', $attachment['comment'])) : str_replace("\n", '
', $attachment['comment']); $denied = FALSE; diff --git a/phpBB/posting.php b/phpBB/posting.php index c79edcebc1..fdabc7cb08 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -119,6 +119,12 @@ switch ($mode) trigger_error($user->lang['NO_MODE']); } +if (empty($censors)) +{ + $censors = array(); + obtain_word_list($censors); +} + if ($sql != '') { $result = $db->sql_query($sql); @@ -749,12 +755,6 @@ if ($submit || $preview || $refresh) // Preview if (!sizeof($error) && $preview) { - if (empty($censors)) - { - $censors = array(); - obtain_word_list($censors); - } - $post_time = ($mode == 'edit') ? $post_time : $current_time; $preview_subject = (sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], $subject) : $subject; @@ -824,13 +824,13 @@ if (count($poll_options)) if ($mode == 'quote' && !$preview && !$refresh) { - $post_text = '[quote="' . $quote_username . '"]' . trim($post_text) . "[/quote]\n"; + $post_text = '[quote="' . $quote_username . '"]' . ((sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], trim($post_text)) : trim($post_text)) . "[/quote]\n"; } if (($mode == 'reply' || $mode == 'quote') && !$preview && !$refresh) { - $post_subject = ((!preg_match('/^Re:/', $post_subject)) ? 'Re: ' : '') . $post_subject; + $post_subject = ((!preg_match('/^Re:/', $post_subject)) ? 'Re: ' : '') . ((sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], $post_subject) : $post_subject); }