diff options
Diffstat (limited to 'phpBB/includes/functions_posting.php')
-rw-r--r-- | phpBB/includes/functions_posting.php | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index df5d0aeeab..5385b1db9e 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -44,27 +44,27 @@ class parse_message $message = preg_replace($match, $replace, $message); // Message length check - if ( !strlen($message) || ( $config['max_post_chars'] && strlen($message) > intval($config['max_post_chars']) ) ) + if (!strlen($message) || ($config['max_post_chars'] && strlen($message) > intval($config['max_post_chars']))) { $warn_msg .= ( !strlen($message) ) ? $user->lang['Too_few_chars'] . '<br />' : $user->lang['Too_many_chars'] . '<br />'; } // Smiley check - if ( $config['max_post_smilies'] && $smilies ) + if (intval($config['max_post_smilies']) && $smilies ) { $sql = "SELECT code FROM " . SMILIES_TABLE; $result = $db->sql_query($sql); $match = 0; - while ( $row = $db->sql_fetchrow($result)) + while ($row = $db->sql_fetchrow($result)) { - if ( preg_match_all('#('. preg_quote($row['code'], '#') . ')#', $message, $matches) ) + if (preg_match_all('#('. preg_quote($row['code'], '#') . ')#', $message, $matches)) { $match++; } - if ( $match > intval($config['max_post_smilies']) ) + if ($match > intval($config['max_post_smilies'])) { $warn_msg .= $user->lang['Too_many_smilies'] . '<br />'; break; @@ -77,13 +77,14 @@ class parse_message // Specialchars message here ... ? // $message = htmlspecialchars($message, ENT_COMPAT, $user->lang['ENCODING']); - if ( $warn_msg ) + if ($warn_msg) { return $warn_msg; } $warn_msg .= $this->html($message, $html); $warn_msg .= $this->bbcode($message, $bbcode, $uid); + $warn_msg .= $this->emoticons($message, $smilies); $warn_msg .= $this->magic_url($message, $url); $warn_msg .= $this->attach($_FILE); @@ -156,6 +157,29 @@ class parse_message } } + function emoticons(&$message, $smile) + { + global $db, $user; + + $result = $db->sql_query('SELECT * FROM ' . SMILIES_TABLE); + + if ($row = $db->sql_fetchrow($result)) + { + $match = $replace = array(); + do + { + $match[] = "#(?<=.\W|\W.|^\W)" . preg_quote($row['code'], '#') . "(?=.\W|\W.|\W$)#"; + $replace[] = '<!-- s' . $row['code'] . ' --><img src="{SMILE_PATH}/' . $row['smile_url'] . '" alt="' . $row['smile_url'] . '" border="0" alt="' . $row['emoticon'] . '" title="' . $row['emoticon'] . '" /><!-- s' . $row['code'] . ' -->'; + } + while ($row = $db->sql_fetchrow($result)); + + $message = preg_replace($match, $replace, ' ' . $message . ' '); + } + $db->sql_freeresult($result); + + return; + } + // Based off of Acyd Burns Mod function attach($file_ary) { @@ -163,6 +187,16 @@ class parse_message $allowed_ext = explode(',', $config['attach_ext']); } + + function smiley_sort($a, $b) + { + if ( strlen($a['code']) == strlen($b['code']) ) + { + return 0; + } + + return ( strlen($a['code']) > strlen($b['code']) ) ? -1 : 1; + } } // Parses a given message and updates/maintains the fulltext tables |