/** * Reparse the message stripping out the bbcode_uid values and adding new ones and setting the bitfield * @todo What do we want to do about HTML in messages - currently it gets converted to the entities, but there may be some objections to this */ function phpbb_prepare_message($message) { global $phpbb_root_path, $phpEx, $db, $convert, $user, $config, $cache, $convert_row, $message_parser; if (!$message) { $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = 0; return ''; } // Decode phpBB 2.0.x Message if (isset($convert->row['old_bbcode_uid']) && $convert->row['old_bbcode_uid'] != '') { // Adjust size... if (strpos($message, '[size=') !== false) { $message = preg_replace_callback('/\[size=(\d*):(' . $convert->row['old_bbcode_uid'] . ')\]/', 'phpbb_replace_size', $message); } $message = preg_replace('/\:(([a-z0-9]:)?)' . $convert->row['old_bbcode_uid'] . '/s', '', $message); } if (strpos($message, '[quote=') !== false) { $message = preg_replace('/\[quote="(.*?)"\]/s', '[quote="\1"]', $message); $message = preg_replace('/\[quote=\\\"(.*?)\\\"\]/s', '[quote="\1"]', $message); // let's hope that this solves more problems than it causes. Deal with escaped quotes. $message = str_replace('\"', '"', $message); $message = str_replace('\"', '"', $message); } // Already the new user id ;) $user_id = $convert->row['poster_id']; $message = str_replace('<', '<', $message); $message = str_replace('>', '>', $message); $message = str_replace('<br />', "\n", $message); // phpbb.hu extension: convert [bev] BBCodes to [bev][/bev] as phpBB 3.0 can only handle this $message = str_replace('[bev/]', "[bev][/bev]", $message); // make the post UTF-8 $message = phpbb_set_encoding($message); $message_parser->warn_msg = array(); // Reset the errors from the previous message $message_parser->bbcode_uid = make_uid($convert->row['post_time']); $message_parser->message = $message; unset($message); // Make sure options are set. // $enable_html = (!isset($row['enable_html'])) ? false : $row['enable_html']; $enable_bbcode = (!isset($convert->row['enable_bbcode'])) ? true : $convert->row['enable_bbcode']; $enable_smilies = (!isset($convert->row['enable_smilies'])) ? true : $convert->row['enable_smilies']; $enable_magic_url = (!isset($convert->row['enable_magic_url'])) ? true : $convert->row['enable_magic_url']; // parse($allow_bbcode, $allow_magic_url, $allow_smilies, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $update_this_message = true, $mode = 'post') $message_parser->parse($enable_bbcode, $enable_magic_url, $enable_smilies); if (sizeof($message_parser->warn_msg)) { $msg_id = isset($convert->row['post_id']) ? $convert->row['post_id'] : $convert->row['privmsgs_id']; $convert->p_master->error('<span style="color:red">' . $user->lang['POST_ID'] . ': ' . $msg_id . ' ' . $user->lang['CONV_ERROR_MESSAGE_PARSER'] . ': <br /><br />' . implode('<br />', $message_parser->warn_msg), __LINE__, __FILE__, true); } $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = $message_parser->bbcode_bitfield; $message = $message_parser->message; unset($message_parser->message); return $message; }
/** * Reparse the message stripping out the bbcode_uid values and adding new ones and setting the bitfield */ function phpbb_prepare_message($message) { global $db, $convert, $user, $convert_row, $message_parser; if (!$message || !empty($convert_row['is_duplicate'])) { $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = 0; return ''; } if (!empty($convert_row['pid'])) { mybb_reformat_inline_attach($message, $convert_row['pid']); } mybb_reformat_smilies($message); $message = preg_replace_callback('#\[size=(.*?)\](.*?)\[/size\]#s', 'mybb_fix_size_bbcode', $message); $bbcodes = array( "#\[quote='(.*?)'(?:.*?)\]#i" => '[quote="\\1"]', ); $message = preg_replace(array_keys($bbcodes), $bbcodes, $message); $bbcodes = array( '[php]' => '[code=php]', '[/php]' => '[/code]', '[hr]' => '[hr][/hr]', ); $message = str_replace(array_keys($bbcodes), $bbcodes, $message); $message = str_replace('<br />', "\n", $message); $message = str_replace('<', '<', $message); $message = str_replace('>', '>', $message); // make the post UTF-8 $message = phpbb_set_encoding($message); $message_parser->warn_msg = array(); // Reset the errors from the previous message $message_parser->bbcode_uid = make_uid($convert->row['dateline']); $message_parser->message = $message; unset($message); // Make sure options are set. $enable_bbcode = true; $enable_smilies = (!isset($convert->row['smilieoff'])) ? true : !$convert->row['smilieoff']; $enable_magic_url = true; // parse($allow_bbcode, $allow_magic_url, $allow_smilies, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $update_this_message = true, $mode = 'post') $message_parser->parse($enable_bbcode, $enable_magic_url, $enable_smilies); if (sizeof($message_parser->warn_msg)) { $msg_id = isset($convert->row['post_id']) ? $convert->row['post_id'] : $convert->row['privmsgs_id']; $convert->p_master->error('<span style="color:red">' . $user->lang['POST_ID'] . ': ' . $msg_id . ' ' . $user->lang['CONV_ERROR_MESSAGE_PARSER'] . ': <br /><br />' . implode('<br />', $message_parser->warn_msg), __LINE__, __FILE__, true); } $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = $message_parser->bbcode_bitfield; $message = $message_parser->message; unset($message_parser->message); return $message; }