changed $message to be a class variable, added attachment category constants (now images are displayed inlined by default... no wrong assignments anymore, if you wondered why your zip file got streamed. ;))

git-svn-id: file:///svn/phpbb/trunk@3816 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen 2003-04-11 19:51:38 +00:00
parent da775f2286
commit 75eef6bfd7
4 changed files with 43 additions and 45 deletions

View file

@ -106,6 +106,16 @@ define('PRIVMSGS_READ_MAIL', 0);
define('PRIVMSGS_NEW_MAIL', 1); define('PRIVMSGS_NEW_MAIL', 1);
define('PRIVMSGS_UNREAD_MAIL', 5); define('PRIVMSGS_UNREAD_MAIL', 5);
// Download Modes - Attachments
define('INLINE_LINK', 1);
define('PHYSICAL_LINK', 2);
// Categories - Attachments
define('NONE_CAT', 0);
define('IMAGE_CAT', 1);
define('STREAM_CAT', 2);
//define('SWF_CAT', 3);
// BBCode UID length // BBCode UID length
define('BBCODE_UID_LEN', 5); define('BBCODE_UID_LEN', 5);

View file

@ -1724,7 +1724,7 @@ function phpbb_unlink($filename, $mode = false)
$res = @ftp_delete($conn_id, $filename); $res = @ftp_delete($conn_id, $filename);
if (!$res) if (!$res)
{ {
if (ATTACH_DEBUG) if (defined('DEBUG_EXTRA'))
{ {
$add = ( $mode == MODE_THUMBNAIL ) ? ('/' . THUMB_DIR) : ''; $add = ( $mode == MODE_THUMBNAIL ) ? ('/' . THUMB_DIR) : '';
message_die(GENERAL_ERROR, sprintf($lang['Ftp_error_delete'], $attach_config['ftp_path'] . $add)); message_die(GENERAL_ERROR, sprintf($lang['Ftp_error_delete'], $attach_config['ftp_path'] . $add));

View file

@ -39,13 +39,10 @@ class parse_message
$this->bbcode_uid = substr(md5(time()), 0, BBCODE_UID_LEN); $this->bbcode_uid = substr(md5(time()), 0, BBCODE_UID_LEN);
} }
function parse(&$message, $html, $bbcode, $uid, $url, $smilies) function parse($html, $bbcode, $url, $smilies)
{ {
global $config, $db, $user; global $config, $db, $user;
$this->message = $message;
$this->bbcode_uid = $uid;
$warn_msg = ''; $warn_msg = '';
// Do some general 'cleanup' first before processing message, // Do some general 'cleanup' first before processing message,
@ -53,12 +50,12 @@ class parse_message
$match = array('#sid=[a-z0-9]*?&?#', "#([\r\n][\s]+){3,}#"); $match = array('#sid=[a-z0-9]*?&?#', "#([\r\n][\s]+){3,}#");
$replace = array('', "\n\n"); $replace = array('', "\n\n");
$message = trim(preg_replace($match, $replace, $message)); $this->message = trim(preg_replace($match, $replace, $this->message));
// Message length check // Message length check
if (!strlen($message) || (intval($config['max_post_chars']) && strlen($message) > intval($config['max_post_chars']))) if (!strlen($this->message) || (intval($config['max_post_chars']) && strlen($this->message) > intval($config['max_post_chars'])))
{ {
$warn_msg .= (($warn_msg != '') ? '<br />' : '') . (!strlen($message)) ? $user->lang['TOO_FEW_CHARS'] : $user->lang['TOO_MANY_CHARS']; $warn_msg .= (($warn_msg != '') ? '<br />' : '') . (!strlen($this->message)) ? $user->lang['TOO_FEW_CHARS'] : $user->lang['TOO_MANY_CHARS'];
} }
// Smiley check // Smiley check
@ -71,7 +68,7 @@ class parse_message
$match = 0; $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'], '#') . ')#', $this->message, $matches))
{ {
$match++; $match++;
} }
@ -91,22 +88,22 @@ class parse_message
return $warn_msg; return $warn_msg;
} }
$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->html($message, $html); $warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->html($html);
if ($bbcode) if ($bbcode)
{ {
$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->bbcode($message); $warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->bbcode();
} }
$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->emoticons($message, $smilies); $warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->emoticons($smilies);
$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->magic_url($message, $url); $warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->magic_url($url);
return $warn_msg; return $warn_msg;
} }
function html(&$message, $html) function html($html)
{ {
global $config; global $config;
$message = str_replace(array('<', '>'), array('&lt;', '&gt;'), $message); $this->message = str_replace(array('<', '>'), array('&lt;', '&gt;'), $this->message);
if ($html) if ($html)
{ {
@ -116,18 +113,15 @@ class parse_message
if (sizeof($allowed_tags)) if (sizeof($allowed_tags))
{ {
$message = preg_replace('#&lt;(\/?)(' . str_replace('*', '.*?', implode('|', $allowed_tags)) . ')&gt;#is', '<\1\2>', $message); $this->message = preg_replace('#&lt;(\/?)(' . str_replace('*', '.*?', implode('|', $allowed_tags)) . ')&gt;#is', '<\1\2>', $this->message);
} }
} }
return; return;
} }
function bbcode(&$message) function bbcode()
{ {
// DEBUG
$this->message = $message;
// Warning, Least-Significant-Bit first // Warning, Least-Significant-Bit first
$bbcode_bitfield = str_repeat('0', 32); $bbcode_bitfield = str_repeat('0', 32);
if (empty($this->bbcode_array)) if (empty($this->bbcode_array))
@ -156,9 +150,6 @@ class parse_message
// LSB becomes MSB then we convert it to decimal // LSB becomes MSB then we convert it to decimal
$this->bbcode_bitfield = bindec(strrev($bbcode_bitfield)); $this->bbcode_bitfield = bindec(strrev($bbcode_bitfield));
// DEBUG
$message = $this->message;
} }
function bbcode_init() function bbcode_init()
@ -331,7 +322,7 @@ class parse_message
// Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx. // Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
// Cuts down displayed size of link if over 50 chars, turns absolute links // Cuts down displayed size of link if over 50 chars, turns absolute links
// into relative versions when the server/script path matches the link // into relative versions when the server/script path matches the link
function magic_url(&$message, $url) function magic_url($url)
{ {
global $config; global $config;
@ -359,11 +350,11 @@ class parse_message
$match[] = '#(^|[\n ])([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)#ie'; $match[] = '#(^|[\n ])([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)#ie';
$replace[] = "'\\1<!-- e --><a href=\"mailto:\\2\">' . ((strlen('\\2') > 55) ? substr('\\2', 0, 39) . ' ... ' . substr('\\2', -10) : '\\2') . '</a><!-- e -->'"; $replace[] = "'\\1<!-- e --><a href=\"mailto:\\2\">' . ((strlen('\\2') > 55) ? substr('\\2', 0, 39) . ' ... ' . substr('\\2', -10) : '\\2') . '</a><!-- e -->'";
$message = preg_replace($match, $replace, $message); $this->message = preg_replace($match, $replace, $this->message);
} }
} }
function emoticons(&$message, $smile) function emoticons($smile)
{ {
global $db, $user; global $db, $user;
@ -381,7 +372,7 @@ class parse_message
} }
while ($row = $db->sql_fetchrow($result)); while ($row = $db->sql_fetchrow($result));
$message = preg_replace($match, $replace, ' ' . $message . ' '); $this->message = preg_replace($match, $replace, ' ' . $this->message . ' ');
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);

View file

@ -439,7 +439,7 @@ if (($submit) || ($preview) || ($refresh))
$subject = phpbb_strtolower($subject); $subject = phpbb_strtolower($subject);
} }
$message = (!empty($_POST['message'])) ? trim($_POST['message']) : ''; $message_parser->message = (!empty($_POST['message'])) ? trim($_POST['message']) : '';
$username = (!empty($_POST['username'])) ? trim($_POST['username']) : ''; $username = (!empty($_POST['username'])) ? trim($_POST['username']) : '';
$topic_type = (!empty($_POST['topic_type'])) ? intval($_POST['topic_type']) : POST_NORMAL; $topic_type = (!empty($_POST['topic_type'])) ? intval($_POST['topic_type']) : POST_NORMAL;
$icon_id = (!empty($_POST['icon'])) ? intval($_POST['icon']) : 0; $icon_id = (!empty($_POST['icon'])) ? intval($_POST['icon']) : 0;
@ -480,16 +480,13 @@ if (($submit) || ($preview) || ($refresh))
} }
// Grab md5 'checksum' of new message // Grab md5 'checksum' of new message
$message_md5 = md5($message); $message_md5 = md5($message_parser->message);
// Check checksum ... don't re-parse message if the same // Check checksum ... don't re-parse message if the same
if ($mode != 'edit' || $message_md5 != $post_checksum) if ($mode != 'edit' || $message_md5 != $post_checksum)
{ {
// DEBUG
$bbcode_uid = $message_parser->bbcode_uid;
// Parse message // Parse message
if (($result = $message_parser->parse($message, $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies)) != '') if (($result = $message_parser->parse($enable_html, $enable_bbcode, $enable_urls, $enable_smilies)) != '')
{ {
$err_msg .= ((!empty($err_msg)) ? '<br />' : '') . $result; $err_msg .= ((!empty($err_msg)) ? '<br />' : '') . $result;
} }
@ -543,7 +540,7 @@ if (($submit) || ($preview) || ($refresh))
'poll_last_vote' => $poll_last_vote, 'poll_last_vote' => $poll_last_vote,
'enable_html' => $enable_html, 'enable_html' => $enable_html,
'enable_bbcode' => $enable_bbcode, 'enable_bbcode' => $enable_bbcode,
'bbcode_uid' => $bbcode_uid, 'bbcode_uid' => $message_parser->bbcode_uid,
'enable_urls' => $enable_urls, 'enable_urls' => $enable_urls,
'enable_smilies' => $enable_smilies 'enable_smilies' => $enable_smilies
); );
@ -605,10 +602,10 @@ if (($submit) || ($preview) || ($refresh))
'bbcode_bitfield' => $message_parser->bbcode_bitfield 'bbcode_bitfield' => $message_parser->bbcode_bitfield
); );
submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_uid, $poll, $attachment_data, $post_data); submit_post($mode, $message_parser->message, $subject, $username, $topic_type, $message_parser->bbcode_uid, $poll, $attachment_data, $post_data);
} }
$post_text = stripslashes($message); $post_text = stripslashes($message_parser->message);
$post_subject = $topic_title = stripslashes($subject); $post_subject = $topic_title = stripslashes($subject);
} }
@ -628,20 +625,20 @@ if ($preview)
$post_time = $current_time; $post_time = $current_time;
// DEBUG // DEBUG
$bbcode_bitfield = bindec('1111111111'); // $message_parser->bbcode_bitfield = bindec('1111111111');
include($phpbb_root_path . 'includes/bbcode.' . $phpEx); include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
$bbcode = new bbcode($bbcode_uid, $bbcode_bitfield); $bbcode = new bbcode($message_parser->bbcode_uid, $message_parser->bbcode_bitfield);
$preview_message = format_display(stripslashes($message), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, $enable_sig); $preview_message = format_display(stripslashes($message_parser->message), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, $enable_sig);
$preview_subject = (sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], $subject) : $subject; $preview_subject = (sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], $subject) : $subject;
// Poll Preview // Poll Preview
if ( ( ($mode == 'post') || ( ($mode == 'edit') && ($post_id == $topic_first_post_id) && (empty($poll_last_vote)) )) && ( ($auth->acl_get('f_poll', $forum_id)) || ($auth->acl_get('m_edit', $forum_id)) )) if ( ( ($mode == 'post') || ( ($mode == 'edit') && ($post_id == $topic_first_post_id) && (empty($poll_last_vote)) )) && ( ($auth->acl_get('f_poll', $forum_id)) || ($auth->acl_get('m_edit', $forum_id)) ))
{ {
decode_text($poll_title, $bbcode_uid); decode_text($poll_title, $message_parser->bbcode_uid);
$preview_poll_title = format_display(stripslashes($poll_title), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, false, false); $preview_poll_title = format_display(stripslashes($poll_title), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, false, false);
$template->assign_vars(array( $template->assign_vars(array(
'S_HAS_POLL_OPTIONS' => (sizeof($poll_options)) ? true : false, 'S_HAS_POLL_OPTIONS' => (sizeof($poll_options)) ? true : false,
@ -651,15 +648,15 @@ if ($preview)
foreach ($poll_options as $option) foreach ($poll_options as $option)
{ {
$template->assign_block_vars('poll_option', array( $template->assign_block_vars('poll_option', array(
'POLL_OPTION_CAPTION' => format_display(stripslashes($option), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, false, false)) 'POLL_OPTION_CAPTION' => format_display(stripslashes($option), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, false, false))
); );
} }
} }
} }
// Decode text for message display // Decode text for message display
decode_text($post_text, $bbcode_uid); decode_text($post_text, $message_parser->bbcode_uid);
decode_text($subject, $bbcode_uid); decode_text($subject, $message_parser->bbcode_uid);
// Save us some processing time. ;) // Save us some processing time. ;)
$poll_options_tmp = implode("\n", $poll_options); $poll_options_tmp = implode("\n", $poll_options);
@ -787,7 +784,7 @@ $template->assign_vars(array(
'IMG_STATUS' => ($img_status) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'], 'IMG_STATUS' => ($img_status) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],
'FLASH_STATUS' => ($flash_status) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'], 'FLASH_STATUS' => ($flash_status) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'],
'SMILIES_STATUS' => ($smilies_status) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'], 'SMILIES_STATUS' => ($smilies_status) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],
'MINI_POST_IMG' => $user->img('goto_post', $user->lang['POST']), 'MINI_POST_IMG' => $user->img('icon_post', $user->lang['POST']),
'POST_DATE' => ($post_time) ? $user->format_date($post_time) : '', 'POST_DATE' => ($post_time) ? $user->format_date($post_time) : '',
'ERROR_MESSAGE' => $err_msg, 'ERROR_MESSAGE' => $err_msg,