diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php index fb027199f4..e308310f5c 100644 --- a/phpBB/includes/bbcode.php +++ b/phpBB/includes/bbcode.php @@ -736,42 +736,36 @@ function bbcode_array_pop(&$stack) // Smilies code ... would this be better tagged on to the end of bbcode.php? // Probably so and I'll move it before B2 // -function smilies_pass($message) -{ - global $db, $board_config; - static $smilies; +function smilies_pass($message) +{ + static $orig, $repl; - if( empty($smilies) ) - { - $sql = "SELECT code, smile_url - FROM " . SMILIES_TABLE; - if( !$result = $db->sql_query($sql) ) - { - message_die(GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql); - } + if (!isset($orig)) + { + global $db, $board_config; + $orig = $repl = array(); - if( !$db->sql_numrows($result) ) - { - return $message; - } + $sql = 'SELECT code, smile_url FROM ' . SMILIES_TABLE; + if( !$result = $db->sql_query($sql) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql); + } + $smilies = $db->sql_fetchrowset($result); - $smilies = $db->sql_fetchrowset($result); - } + usort($smilies, 'smiley_sort'); + for($i = 0; $i < count($smilies); $i++) + { + $orig[] = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/"; + $repl[] = '' . $smilies[$i]['smile_url'] . ''; + } + } - usort($smilies, 'smiley_sort'); - for($i = 0; $i < count($smilies); $i++) - { - $orig[] = "/(?<=.\\W|\\W.|^\\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\\W|\\W.|\\W$)/"; - $repl[] = '' . $smilies[$i]['smile_url'] . ''; - } - - if( $i > 0 ) - { - $message = preg_replace($orig, $repl, ' ' . $message . ' '); - $message = substr($message, 1, -1); - } - - return $message; + if (count($orig)) + { + $message = preg_replace($orig, $repl, ' ' . $message . ' '); + $message = substr($message, 1, -1); + } + return $message; } function smiley_sort($a, $b)