1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-06-20 10:09:45 +02:00

Smilies enabled ... note this is not necessarily final ...

git-svn-id: file:///svn/phpbb/trunk@2995 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Paul S. Owen
2002-10-31 13:41:28 +00:00
parent da3121c0fd
commit 2bf1c5f9b0
3 changed files with 150 additions and 224 deletions

View File

@ -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