$postpreview =& $preview; $pm['recipients'] =& htmlspecialchars_uni($pm['recipients']); if (!empty($pm['bccrecipients'])) { $pm['bccrecipients'] =& htmlspecialchars_uni($pm['bccrecipients']); } else { $show['bcclink'] = true; } $pm['message'] = htmlspecialchars_uni($pm['message']); construct_checkboxes($pm); } else { $vbulletin->input->clean_array_gpc('r', array('stripquote' => TYPE_BOOL, 'forward' => TYPE_BOOL, 'userid' => TYPE_NOCLEAN)); // set up for PM reply / forward if ($vbulletin->GPC['pmid']) { if ($pm = $db->query_first_slave("\n\t\t\t\tSELECT pm.*, pmtext.*\n\t\t\t\tFROM " . TABLE_PREFIX . "pm AS pm\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON(pmtext.pmtextid = pm.pmtextid)\n\t\t\t\tWHERE pm.userid=" . $vbulletin->userinfo['userid'] . " AND pm.pmid=" . $vbulletin->GPC['pmid'] . "\n\t\t\t")) { // quote reply $originalposter = fetch_quote_username($pm['fromusername']); // allow quotes to remain with an optional request variable // this will fix a problem with forwarded PMs and replying to them if ($vbulletin->GPC['stripquote']) { $pagetext = strip_quotes($pm['message']); } else { // this is now the default behavior -- leave quotes, like vB2 $pagetext = $pm['message']; } $pagetext = trim(htmlspecialchars_uni($pagetext)); eval('$pm[\'message\'] = "' . fetch_template('newpost_quote', 0, false) . '";'); // work out FW / RE bits if (preg_match('#^' . preg_quote($vbphrase['forward_prefix'], '#') . '(\\s+)?#i', $pm['title'], $matches)) { $pm['title'] = substr($pm['title'], strlen($vbphrase['forward_prefix']) + (isset($matches[1]) ? strlen($matches[1]) : 0)); } else { if (preg_match('#^' . preg_quote($vbphrase['reply_prefix'], '#') . '(\\s+)?#i', $pm['title'], $matches)) {
/** * Fetches and prepares posts for quoting. Returned text is BB code. * * @param array Array of post IDs to pull from * @param integer The ID of the thread that is being quoted into * @param integer Returns the number of posts that were unquoted because of the value of the next argument * @param array Returns the IDs of the posts that were actually quoted * @param string Controls what posts are successfully quoted: all, only (only the thread ID), other (only other thread IDs) * @param boolean Whether to undo the htmlspecialchars calls; useful when returning HTML to be entered via JS */ function fetch_quotable_posts($quote_postids, $threadid, &$unquoted_posts, &$quoted_post_ids, $limit_thread = 'only', $unhtmlspecialchars = false) { global $vbulletin; $unquoted_posts = 0; $quoted_post_ids = array(); $quote_postids = array_diff_assoc(array_unique(array_map('intval', $quote_postids)), array(0)); // limit to X number of posts if ($vbulletin->options['mqlimit'] > 0) { $quote_postids = array_slice($quote_postids, 0, $vbulletin->options['mqlimit']); } if (empty($quote_postids)) { // nothing to quote return ''; } $hook_query_fields = $hook_query_joins = ''; ($hook = vBulletinHook::fetch_hook('quotable_posts_query')) ? eval($hook) : false; $quote_post_data = $vbulletin->db->query_read_slave("\n\t\tSELECT post.postid, post.title, post.pagetext, post.dateline, post.userid, post.visible AS postvisible,\n\t\t\tIF(user.username <> '', user.username, post.username) AS username,\n\t\t\tthread.threadid, thread.title AS threadtitle, thread.postuserid, thread.visible AS threadvisible,\n\t\t\tforum.forumid, forum.password\n\t\t\t{$hook_query_fields}\n\t\tFROM " . TABLE_PREFIX . "post AS post\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (post.userid = user.userid)\n\t\tINNER JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid)\n\t\tINNER JOIN " . TABLE_PREFIX . "forum AS forum ON (thread.forumid = forum.forumid)\n\t\t{$hook_query_joins}\n\t\tWHERE post.postid IN (" . implode(',', $quote_postids) . ")\n\t"); $quote_posts = array(); while ($quote_post = $vbulletin->db->fetch_array($quote_post_data)) { if ((!$quote_post['postvisible'] or $quote_post['postvisible'] == 2) and !can_moderate($quote_post['forumid']) or (!$quote_post['threadvisible'] or $quote_post['threadvisible'] == 2) and !can_moderate($quote_post['forumid'])) { // no permission to view this post continue; } $forumperms = fetch_permissions($quote_post['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) and ($quote_post['postuserid'] != $vbulletin->userinfo['userid'] or $vbulletin->userinfo['userid'] == 0) or !verify_forum_password($quote_post['forumid'], $quote_post['password'], false) or in_coventry($quote_post['postuserid']) and !can_moderate($quote_post['forumid']) or in_coventry($quote_post['userid']) and !can_moderate($quote_post['forumid'])) { // no permission to view this post continue; } if ($limit_thread == 'only' and $quote_post['threadid'] != $threadid or $limit_thread == 'other' and $quote_post['threadid'] == $threadid or $limit_thread == 'all') { $unquoted_posts++; continue; } $skip_post = false; ($hook = vBulletinHook::fetch_hook('quotable_posts_logic')) ? eval($hook) : false; if ($skip_post) { continue; } $quote_posts["{$quote_post['postid']}"] = $quote_post; } $message = ''; foreach ($quote_postids as $quote_postid) { if (!isset($quote_posts["{$quote_postid}"])) { continue; } $quote_post =& $quote_posts["{$quote_postid}"]; $originalposter = fetch_quote_username($quote_post['username'] . ";{$quote_post['postid']}"); $postdate = vbdate($vbulletin->options['dateformat'], $quote_post['dateline']); $posttime = vbdate($vbulletin->options['timeformat'], $quote_post['dateline']); $pagetext = htmlspecialchars_uni($quote_post['pagetext']); $pagetext = trim(strip_quotes($pagetext)); ($hook = vBulletinHook::fetch_hook('newreply_quote')) ? eval($hook) : false; eval('$message .= "' . fetch_template('newpost_quote', 0, false) . '\\n";'); $quoted_post_ids[] = $quote_postid; } if ($unhtmlspecialchars) { $message = unhtmlspecialchars($message); } return $message; }
$newpost['message'] = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']); } else { $newpost['message'] = $vbulletin->GPC['message']; } if ($vbulletin->GPC['ajax']) { // posting via ajax so we need to handle those %u0000 entries $newpost['message'] = convert_urlencoded_unicode($newpost['message']); } if ($vbulletin->GPC['quickreply']) { $originalposter = fetch_quote_username($postinfo['username'] . ";$postinfo[postid]"); $pagetext = trim(strip_quotes($postinfo['pagetext'])); ($hook = vBulletinHook::fetch_hook('newreply_post_quote')) ? eval($hook) : false; $templater = vB_Template::create('newpost_quote'); $templater->register('originalposter', $originalposter); $templater->register('pagetext', $pagetext); $quotemessage = $templater->render(true); $newpost['message'] = trim($quotemessage) . "\n$newpost[message]"; } if ($vbulletin->GPC['fromquickreply']) { // We only add notifications to threads that don't have one if the user defaults to it, do nothing else!
/** * Prepares pm array for use in replies. * * @param integer $pmid - The pm being replied to * @returns array mixed - The normalized pm info array */ function fetch_privatemessage_reply($pm) { global $vbulletin, $vbphrase; if ($pm) { ($hook = vBulletinHook::fetch_hook('private_fetchreply_start')) ? eval($hook) : false; // quote reply $originalposter = fetch_quote_username($pm['fromusername']); // allow quotes to remain with an optional request variable // this will fix a problem with forwarded PMs and replying to them if ($vbulletin->GPC['stripquote']) { $pagetext = strip_quotes($pm['message']); } else { // this is now the default behavior -- leave quotes, like vB2 $pagetext = $pm['message']; } $pagetext = trim(htmlspecialchars_uni($pagetext)); $templater = vB_Template::create('newpost_quote'); $templater->register('originalposter', $originalposter); $templater->register('pagetext', $pagetext); $pm['message'] = $templater->render(true); // work out FW / RE bits if (preg_match('#^' . preg_quote($vbphrase['forward_prefix'], '#') . '(\\s+)?#i', $pm['title'], $matches)) { $pm['title'] = substr($pm['title'], strlen($vbphrase['forward_prefix']) + (isset($matches[1]) ? strlen($matches[1]) : 0)); } else { if (preg_match('#^' . preg_quote($vbphrase['reply_prefix'], '#') . '(\\s+)?#i', $pm['title'], $matches)) { $pm['title'] = substr($pm['title'], strlen($vbphrase['reply_prefix']) + (isset($matches[1]) ? strlen($matches[1]) : 0)); } else { $pm['title'] = preg_replace('#^[a-z]{2}:#i', '', $pm['title']); } } $pm['title'] = trim($pm['title']); if ($vbulletin->GPC['forward']) { $pm['title'] = $vbphrase['forward_prefix'] . " {$pm['title']}"; $pm['recipients'] = ''; $pm['forward'] = 1; } else { $pm['title'] = $vbphrase['reply_prefix'] . " {$pm['title']}"; $pm['recipients'] = $pm['fromusername'] . ' ; '; $pm['forward'] = 0; } ($hook = vBulletinHook::fetch_hook('private_newpm_reply')) ? eval($hook) : false; } else { eval(standard_error(fetch_error('invalidid', $vbphrase['private_message'], $vbulletin->options['contactuslink']))); } return $pm; }
standard_error(fetch_error('session_timed_out_login'), '', false, 'STANDARD_ERROR_LOGIN'); } ($hook = vBulletinHook::fetch_hook('newreply_post_start')) ? eval($hook) : false; // ### PREP INPUT ### if ($vbulletin->GPC['wysiwyg']) { require_once DIR . '/includes/functions_wysiwyg.php'; $newpost['message'] = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']); } else { $newpost['message'] = $vbulletin->GPC['message']; } if ($vbulletin->GPC['ajax']) { // posting via ajax so we need to handle those %u0000 entries $newpost['message'] = convert_urlencoded_unicode($newpost['message']); } if ($vbulletin->GPC['quickreply']) { $originalposter = fetch_quote_username($postinfo['username'] . ";{$postinfo['postid']}"); $pagetext = trim(strip_quotes($postinfo['pagetext'])); ($hook = vBulletinHook::fetch_hook('newreply_post_quote')) ? eval($hook) : false; eval('$quotemessage = "' . fetch_template('newpost_quote', 0, false) . '";'); $newpost['message'] = trim($quotemessage) . "\n{$newpost['message']}"; } if ($vbulletin->GPC['fromquickreply']) { // We only add notifications to threads that don't have one if the user defaults to it, do nothing else! if ($vbulletin->userinfo['autosubscribe'] != -1 and !$threadinfo['issubscribed']) { $vbulletin->GPC['folderid'] = 0; $vbulletin->GPC['emailupdate'] = $vbulletin->userinfo['autosubscribe']; } else { if ($threadinfo['issubscribed']) { // Don't alter current settings $vbulletin->GPC['folderid'] = $threadinfo['folderid']; $vbulletin->GPC['emailupdate'] = $threadinfo['emailupdate'];
/** * Fetches the note to be quoted and modifies it as appropriate. Determines * if this message should be private based on the quoted note. * * @param integer Note to quote * @param integer Issue being responded to/issue the note is in * @param array Permissions for this issue * @param bool (Output) Whether the quoted note is private * * @return string Quoted note (ready for passing into editor functions) */ function fetch_pt_quoted_note($quotenoteid, $issueid, $issueperms, &$quoted_private) { global $vbulletin, $db, $show, $stylevar, $vbphrase, $template_hook; $viewable_note_types = fetch_viewable_note_types($issueperms, $private_text); $quotenote = $db->query_first("\r\n\t\tSELECT *\r\n\t\tFROM " . TABLE_PREFIX . "pt_issuenote AS issuenote\r\n\t\tWHERE issuenoteid = {$quotenoteid}\r\n\t\t\tAND issueid = {$issueid}\r\n\t\t\tAND (visible IN (" . implode(',', $viewable_note_types) . "){$private_text})\r\n\t\t\tAND type IN ('user', 'petition')\r\n\t"); if ($quotenote) { // new post with a quote $quoted_private = $quotenote['visible'] == 'private'; require_once DIR . '/includes/functions_newpost.php'; $originalposter = fetch_quote_username($quotenote['username']); $quote_text = trim(strip_quotes($quotenote['pagetext'])); eval('$pagetext = "' . fetch_template('pt_postreply_quote', 0, false) . '\\n";'); return $pagetext; } else { $quoted_private = false; return ''; } }
function do_post_reply() { global $vbulletin, $db, $foruminfo, $forumperms, $threadinfo, $postinfo, $vbphrase; global $permissions; if (!$threadinfo && !$postinfo) { json_error(ERR_INVALID_TOP, RV_POST_ERROR); } if (!$foruminfo['forumid']) { json_error(ERR_INVALID_FORUM, RV_POST_ERROR); } // ### CHECK IF ALLOWED TO POST ### if ($threadinfo['isdeleted'] or !$threadinfo['visible'] and !can_moderate($threadinfo['forumid'], 'canmoderateposts')) { json_error(strip_tags(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])), RV_POST_ERROR); } if (!$foruminfo['allowposting'] or $foruminfo['link'] or !$foruminfo['cancontainthreads']) { eval(standard_error(fetch_error('forumclosed'))); } if (!$threadinfo['open']) { if (!can_moderate($threadinfo['forumid'], 'canopenclose')) { eval(standard_error(fetch_error('threadclosed'))); } } $forumperms = fetch_permissions($foruminfo['forumid']); if (($vbulletin->userinfo['userid'] != $threadinfo['postuserid'] or !$vbulletin->userinfo['userid']) and (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyothers']))) { json_error(ERR_NO_PERMISSION, RV_POST_ERROR); } if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyown']) and $vbulletin->userinfo['userid'] == $threadinfo['postuserid']) { json_error(ERR_NO_PERMISSION, RV_POST_ERROR); } // check if there is a forum password and if so, ensure the user has it set verify_forum_password($foruminfo['forumid'], $foruminfo['password']); // ********************************************************************************* // Tachy goes to coventry if (in_coventry($threadinfo['postuserid']) and !can_moderate($threadinfo['forumid'])) { json_error(strip_tags(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])), RV_POST_ERROR); } ($hook = vBulletinHook::fetch_hook('newreply_start')) ? eval($hook) : false; // Variables reused in templates $poststarttime =& $vbulletin->input->clean_gpc('r', poststarttime, TYPE_UINT); $posthash = md5($vbulletin->GPC['poststarttime'] . $vbulletin->userinfo['userid'] . $vbulletin->userinfo['salt']); $vbulletin->input->clean_array_gpc('p', array('wysiwyg' => TYPE_BOOL, 'message' => TYPE_STR, 'quickreply' => TYPE_BOOL, 'fromquickreply' => TYPE_BOOL, 'ajaxqrfailed' => TYPE_BOOL, 'folderid' => TYPE_UINT, 'emailupdate' => TYPE_UINT, 'subscribe' => TYPE_BOOL, 'title' => TYPE_STR, 'iconid' => TYPE_UINT, 'parseurl' => TYPE_BOOL, 'signature' => TYPE_BOOL, 'preview' => TYPE_STR, 'disablesmilies' => TYPE_BOOL, 'username' => TYPE_STR, 'rate' => TYPE_BOOL, 'rating' => TYPE_UINT, 'stickunstick' => TYPE_BOOL, 'openclose' => TYPE_BOOL, 'ajax' => TYPE_BOOL, 'ajax_lastpost' => TYPE_INT, 'loggedinuser' => TYPE_INT, 'humanverify' => TYPE_ARRAY, 'multiquoteempty' => TYPE_NOHTML, 'specifiedpost' => TYPE_BOOL, 'return_node' => TYPE_INT, 'sig' => TYPE_STR)); if ($vbulletin->GPC['message']) { $vbulletin->GPC['message'] = prepare_remote_utf8_string($vbulletin->GPC['message']); } if ($vbulletin->GPC['subject']) { $vbulletin->GPC['subject'] = prepare_remote_utf8_string($vbulletin->GPC['subject']); } if ($vbulletin->userinfo['autosubscribe'] != -1 and !$threadinfo['issubscribed']) { $vbulletin->GPC['folderid'] = 0; $vbulletin->GPC_exists['folderid'] = true; $vbulletin->GPC['emailupdate'] = $vbulletin->userinfo['autosubscribe']; $vbulletin->GPC_exists['emailupdate'] = true; } else { if ($threadinfo['issubscribed']) { // Don't alter current settings $vbulletin->GPC['folderid'] = $threadinfo['folderid']; $vbulletin->GPC_exists['folderid'] = true; $vbulletin->GPC['emailupdate'] = $threadinfo['emailupdate']; $vbulletin->GPC_exists['emailupdate'] = true; } else { // Don't don't add! $vbulletin->GPC['emailupdate'] = 9999; $vbulletin->GPC_exists['emailupdate'] = true; } } if ($vbulletin->options['forumrunner_signature'] && $vbulletin->GPC['sig']) { $vbulletin->GPC['message'] .= "\n\n" . prepare_remote_utf8_string($vbulletin->GPC['sig']); } $vbulletin->GPC['signature'] = $vbulletin->GPC_exists['signature'] = true; if ($vbulletin->GPC['loggedinuser'] != 0 and $vbulletin->userinfo['userid'] == 0) { // User was logged in when writing post but isn't now. If we got this // far, guest posts are allowed, but they didn't enter a username so // they'll get an error. Force them to log back in. json_error(ERR_LOGGED_OUT, RV_POST_ERROR); } ($hook = vBulletinHook::fetch_hook('newreply_post_start')) ? eval($hook) : false; // ### PREP INPUT ### if ($vbulletin->GPC['wysiwyg']) { require_once DIR . '/includes/functions_wysiwyg.php'; $newpost['message'] = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']); } else { $newpost['message'] = $vbulletin->GPC['message']; } if ($vbulletin->GPC['ajax']) { // posting via ajax so we need to handle those %u0000 entries $newpost['message'] = convert_urlencoded_unicode($newpost['message']); } if ($vbulletin->GPC['quickreply']) { $originalposter = fetch_quote_username($postinfo['username'] . ";{$postinfo['postid']}"); $pagetext = trim(strip_quotes($postinfo['pagetext'])); ($hook = vBulletinHook::fetch_hook('newreply_post_quote')) ? eval($hook) : false; $templater = vB_Template::create('newpost_quote'); $templater->register('originalposter', $originalposter); $templater->register('pagetext', $pagetext); $quotemessage = $templater->render(true); $newpost['message'] = trim($quotemessage) . "\n{$newpost['message']}"; } if (isset($vbulletin->options['vbcmsforumid']) and $foruminfo['forumid'] == $vbulletin->options['vbcmsforumid']) { $expire_cache = array('cms_comments_change'); if ($threadinfo['threadid']) { $expire_cache[] = 'cms_comments_thread_' . intval($threadinfo['threadid']); } vB_Cache::instance()->event($expire_cache); vB_Cache::instance()->event('cms_comments_change_' . $threadinfo['threadid']); vB_Cache::instance()->cleanNow(); } $newpost['title'] =& $vbulletin->GPC['title']; $newpost['iconid'] =& $vbulletin->GPC['iconid']; $newpost['parseurl'] = ($vbulletin->options['allowedbbcodes'] & ALLOW_BBCODE_URL and $foruminfo['allowbbcode']); $newpost['signature'] =& $vbulletin->GPC['signature']; $newpost['preview'] =& $vbulletin->GPC['preview']; $newpost['disablesmilies'] =& $vbulletin->GPC['disablesmilies']; $newpost['rating'] =& $vbulletin->GPC['rating']; $newpost['rate'] =& $newpost['rating']; $newpost['username'] =& $vbulletin->GPC['username']; $newpost['folderid'] =& $vbulletin->GPC['folderid']; $newpost['quickreply'] =& $vbulletin->GPC['quickreply']; $newpost['poststarttime'] =& $poststarttime; $newpost['posthash'] =& $posthash; $newpost['humanverify'] =& $vbulletin->GPC['humanverify']; // moderation options $newpost['stickunstick'] =& $vbulletin->GPC['stickunstick']; $newpost['openclose'] =& $vbulletin->GPC['openclose']; $newpost['subscribe'] =& $vbulletin->GPC['subscribe']; $newpost['ajaxqrfailed'] = $vbulletin->GPC['ajaxqrfailed']; if ($vbulletin->GPC['ajax'] and $newpost['username']) { if ($newpost['username']) { $newpost['username'] = convert_urlencoded_unicode($newpost['username']); } } if ($vbulletin->GPC_exists['emailupdate']) { $newpost['emailupdate'] =& $vbulletin->GPC['emailupdate']; } else { $newpost['emailupdate'] = array_pop($array = array_keys(fetch_emailchecked($threadinfo, $vbulletin->userinfo))); } if ($vbulletin->GPC['specifiedpost'] and $postinfo) { $postinfo['specifiedpost'] = true; } fr_build_new_post('reply', $foruminfo, $threadinfo, $postinfo, $newpost, $errors); if (sizeof($errors) > 0) { fr_standard_error($errors[0]); } return array('success' => true); }
$notification = array($bloginfo['emailupdate'] => 'selected="selected"'); } else { $notification = array($vbulletin->userinfo['blog_subscribeothers'] => 'selected="selected"'); } // Handle Quote if ($blogtextinfo) { $title = unhtmlspecialchars($blogtextinfo['title']); $title = preg_replace('#^(' . preg_quote($vbphrase['reply_prefix'], '#') . '\s*)+#i', '', $title); $title = htmlspecialchars_uni(vbchop($title, $vbulletin->options['titlemaxchars'])); require_once(DIR . '/includes/functions_newpost.php'); $originalposter = fetch_quote_username($blogtextinfo['username'] . ";bt$blogtextinfo[blogtextid]"); $pagetext = trim(strip_quotes(htmlspecialchars_uni($blogtextinfo['pagetext']))); $templater = vB_Template::create('blog_blogpost_quote'); $templater->register('originalposter', $originalposter); $templater->register('pagetext', $pagetext); $blog['message'] = $templater->render(true); } unset($blogtextinfo); } ($hook = vBulletinHook::fetch_hook('blog_post_comment_start')) ? eval($hook) : false; $bloginfo['title_trimmed'] = fetch_trimmed_title($bloginfo['title']); $editorid = construct_edit_toolbar(
$notification = array($vbulletin->GPC['emailupdate'] => 'selected="selected"'); $previewpost = true; } else { // defaults in here if we're doing a quote etc if ($bloginfo['issubscribed']) { $notification = array($bloginfo['emailupdate'] => 'selected="selected"'); } else { $notification = array($vbulletin->userinfo['blog_subscribeothers'] => 'selected="selected"'); } // Handle Quote if ($blogtextinfo) { $title = unhtmlspecialchars($blogtextinfo['title']); $title = preg_replace('#^(' . preg_quote($vbphrase['reply_prefix'], '#') . '\\s*)+#i', '', $title); $title = htmlspecialchars_uni(vbchop($title, $vbulletin->options['titlemaxchars'])); require_once DIR . '/includes/functions_newpost.php'; $originalposter = fetch_quote_username($blogtextinfo['username'] . ";bt{$blogtextinfo['blogtextid']}"); $pagetext = trim(strip_quotes(htmlspecialchars_uni($blogtextinfo['pagetext']))); $templater = vB_Template::create('blog_blogpost_quote'); $templater->register('originalposter', $originalposter); $templater->register('pagetext', $pagetext); $blog['message'] = $templater->render(true); } unset($blogtextinfo); } ($hook = vBulletinHook::fetch_hook('blog_post_comment_start')) ? eval($hook) : false; $bloginfo['title_trimmed'] = fetch_trimmed_title($bloginfo['title']); $editorid = construct_edit_toolbar($blog['message'], false, 'blog_comment', $vbulletin->userinfo['permissions']['vbblog_comment_permissions'] & $vbulletin->bf_ugp_vbblog_comment_permissions['blog_allowsmilies'], true, false, 'fe'); $usernamecode = vB_Template::create('newpost_usernamecode')->render(); // image verification $human_verify = ''; if (fetch_require_hvcheck('post')) {