$submissionform_code->set_var('LANG_violet', $LANG_GF01['VIOLET']); $submissionform_code->set_var('LANG_white', $LANG_GF01['WHITE']); $submissionform_code->set_var('LANG_black', $LANG_GF01['BLACK']); if ($CONF_FORUM['allow_img_bbcode']) { $submissionform_code->set_var('hide_imgbutton_begin', ''); $submissionform_code->set_var('hide_imgbutton_end', ''); } else { $submissionform_code->set_var('hide_imgbutton_begin', '<!--'); $submissionform_code->set_var('hide_imgbutton_end', '-->'); } $submissionform_code->parse('output', 'submissionform_code'); echo $submissionform_code->finish($submissionform_code->get_var('output')); if (!$CONF_FORUM['allow_smilies']) { $smilies = ''; } else { $smilies = forumPLG_showsmilies(); } // if this is the first time showing the new submission form - then check if notify option should be on if (!isset($_POST['preview'])) { if ($editpid > 0) { $notifyTopicid = $editpid; } else { $notifyTopicid = $id; } if ($CONF_FORUM['mysql4+']) { $sql = "(SELECT id FROM {$_TABLES['gf_watch']} WHERE ((topic_id='{$notifyTopicid}' AND uid='{$uid}')) ) UNION ALL "; $sql .= "(SELECT id FROM {$_TABLES['gf_watch']} WHERE ((forum_id='{$edittopic['forum']}') AND (topic_id='0') and (uid='{$uid}')) ) "; $notifyquery = DB_query($sql); } else { $sql = "SELECT id FROM {$_TABLES['gf_watch']} WHERE ((topic_id='{$notifyTopicid}' AND uid='{$uid}') "; $sql .= "OR ((forum_id='{$edittopic['forum']}') AND (topic_id='0') and (uid='{$uid}')))";
function FF_postEditor($postData, $forumData, $action, $viewMode) { global $_CONF, $_TABLES, $_FF_CONF, $FF_userprefs, $_USER, $LANG_GF01, $LANG_GF02, $LANG_GF10, $REMOTE_ADDR; $retval = ''; $editmoderator = false; $numAttachments = 0; $edit_val = ''; $sticky_val = ''; $locked_val = ''; if (COM_isAnonUser()) { $uid = 1; } else { $uid = $_USER['uid']; } // initialize defaults if ($_FF_CONF['bbcode_disabled']) { $disable_bbcode_val = ' checked="checked"'; } else { $disable_bbcode_val = ''; } if ($_FF_CONF['smilies_disabled']) { $disable_smilies_val = ' checked="checked"'; } else { $disable_smilies_val = ''; } if ($_FF_CONF['urlparse_disabled']) { $disable_urlparse_val = ' checked="checked"'; } else { $disable_urlparse_val = ''; } // check postmode if (isset($postData['postmode'])) { // this means we are editing or previewing (or both) if (isset($postData['postmode_switch'])) { // means they selected a switch $chkpostmode = _ff_chkpostmode($postData['postmode'], $postData['postmode_switch']); if ($chkpostmode != $postData['postmode']) { $postData['postmode'] = $chkpostmode; $postData['postmode_switch'] = 0; } } } else { if ($_FF_CONF['post_htmlmode'] && $_FF_CONF['allow_html']) { $postData['postmode'] = 'html'; } else { $postData['postmode'] = 'text'; } } // verify postmode is allowed if ($postData['postmode'] == 'html' || $postData['postmode'] == 'HTML') { if ($_FF_CONF['allow_html'] || SEC_inGroup('Root') || SEC_hasRights('forum.html')) { $postData['postmode'] = 'html'; } else { $postData['postmode'] = 'text'; } } $postData['postmode_switch'] = 0; // action specific setup if ($action == 'edittopic' || $viewMode) { // need to see what options were checked... $status = 0; // get our options... if (isset($postData['disable_bbcode']) && $postData['disable_bbcode'] == 1) { $disable_bbcode_val = ' checked="checked"'; $status += DISABLE_BBCODE; } else { $disable_bbcode_val = ''; } if (isset($postData['disable_smilies']) && $postData['disable_smilies'] == 1) { $disable_smilies_val = ' checked="checked"'; $status += DISABLE_SMILIES; } else { $disable_smilies_val = ''; } if (isset($postData['disable_urlparse']) && $postData['disable_urlparse'] == 1) { $disable_urlparse_val = ' checked="checked"'; $status += DISABLE_URLPARSE; } else { $disable_urlparse_val = ''; } } // create our template $peTemplate = new Template($_CONF['path'] . 'plugins/forum/templates/'); $peTemplate->set_file('posteditor', 'posteditor.thtml'); if ($postData['postmode'] == 'html') { $peTemplate->set_var('html_mode', true); } else { $peTemplate->unset_var('html_mode'); } if ($viewMode == PREVIEW_VIEW) { $peTemplate->set_var('preview_post', FF_previewPost($postData, $action)); } $uniqueid = isset($postData['uniqueid']) ? COM_applyFilter($postData['uniqueid'], true) : mt_rand(); $peTemplate->set_var('uniqueid', $uniqueid); if (SEC_inGroup($postData['use_attachment_grpid']) && $_FF_CONF['maxattachments'] > 0) { $peTemplate->set_var('use_attachments', true); } if ($action == 'newtopic') { $peTemplate->set_var('save_button', 'savetopic'); $postmessage = $LANG_GF02['PostTopic']; $peTemplate->set_var('hidden_action', 'newtopic'); } if ($action == 'edittopic') { $peTemplate->set_var('save_button', 'saveedit'); if (isset($postData['forum']) && forum_modPermission($postData['forum'], $_USER['uid'], 'mod_edit')) { $editmoderator = true; $peTemplate->set_var('hidden_modedit', '1'); } else { $peTemplate->set_var('hidden_modedit', '0'); $editmoderator = false; } $postmessage = $LANG_GF02['EditTopic']; $peTemplate->set_var('hidden_action', 'edittopic'); $peTemplate->set_var('hidden_editpost', 'yes'); if ($editmoderator) { $username = $postData['name']; } elseif ($postData['uid'] > 1) { $username = COM_getDisplayName($postData['uid']); } $postData['comment'] = str_ireplace('</textarea>', '</textarea>', $postData['comment']); if (isset($postData['pid'])) { $peTemplate->set_var('hidden_editpid', $postData['pid']); } $peTemplate->set_var('hidden_editid', $postData['id']); $edit_prompt = $LANG_GF02['msg190'] . '<br/><input type="checkbox" name="silentedit" '; if (isset($postData['silentedit']) && $postData['silentedit'] == 1 or !isset($postData['modedit']) and $_FF_CONF['silent_edit_default']) { $edit_prompt .= 'checked="checked" '; $edit_val = ' checked="checked" '; } else { $edit_val = ''; } $edit_prompt .= 'value="1"/>'; $peTemplate->set_var('attachments', '<div id="fileattachlist">' . _ff_showattachments($postData['id'], 'edit') . '</div>'); $numAttachments = DB_Count($_TABLES['ff_attachments'], 'topic_id', $postData['id']); $allowedAttachments = $_FF_CONF['maxattachments'] - $numAttachments; $peTemplate->set_var('fcounter', $allowedAttachments); } else { $numAttachments = (int) DB_Count($_TABLES['ff_attachments'], 'topic_id', $uniqueid); $allowedAttachments = $_FF_CONF['maxattachments'] - $numAttachments; $peTemplate->set_var('fcounter', $allowedAttachments); $peTemplate->set_var('attachments', ''); if ($uniqueid > 0) { $peTemplate->set_var('attachments', '<div id="fileattachlist">' . _ff_showattachments($uniqueid, 'edit') . '</div>'); } $edit_prompt = ' '; } if ($action == 'newreply') { $peTemplate->set_var('save_button', 'savereply'); $postmessage = $LANG_GF02['PostReply']; $peTemplate->set_var('hidden_action', 'newreply'); if (!$viewMode) { $postData['subject'] = $LANG_GF01['RE'] . $postData['subject']; } $quoteid = isset($_GET['quoteid']) ? COM_applyFilter($_GET['quoteid'], true) : 0; $postData['mood'] = ''; if ($quoteid > 0 && !$viewMode) { $quotesql = DB_query("SELECT * FROM {$_TABLES['ff_topic']} WHERE id=" . (int) $quoteid); $quotearray = DB_fetchArray($quotesql); $quotearray['name'] = urldecode($quotearray['name']); $quotearray['comment'] = $quotearray['comment']; $postData['comment'] = sprintf($_FF_CONF['quoteformat'], $quotearray['name'], $quotearray['comment']); } $postData['editpid'] = $postData['id']; } if ($_FF_CONF['use_sfs']) { $peTemplate->set_var('usesfs', 1); } if (COM_isAnonUser()) { if (!$_FF_CONF['use_sfs']) { $postData['email'] = ''; } $peTemplate->set_var('anonymous_user', true); $peTemplate->set_var('post_message', $postmessage); $peTemplate->set_var('LANG_NAME', $LANG_GF02['msg33']); $peTemplate->set_var('name', htmlentities(strip_tags(COM_checkWords(trim(USER_sanitizeName(isset($postData['name']) ? $postData['name'] : ''))))), ENT_COMPAT, COM_getEncodingt()); if (isset($postData['email'])) { $peTemplate->set_var('email', strip_tags($postData['email'])); } } else { $peTemplate->set_var('member_user', true); $peTemplate->set_var('post_message', $postmessage); $peTemplate->set_var('LANG_NAME', $LANG_GF02['msg33']); if (!isset($username) or $username == '') { if ($action == 'edittopic') { if ($editmoderator) { $username = $postData['name']; } else { $username = COM_getDisplayName($_USER['uid']); } } else { $username = COM_getDisplayName($_USER['uid']); } } $peTemplate->set_var('username', $username); $peTemplate->set_var('xusername', urlencode($username)); } $moodoptions = ''; if ($_FF_CONF['show_moods']) { if (isset($postData['mood']) && $postData['mood'] != '') { $postData['mood'] = COM_applyFilter($postData['mood']); } if (!isset($postData['mood']) || $postData['mood'] == '') { $moodoptions = '<option value="" selected="selected">' . $LANG_GF01['NOMOOD'] . '</option>'; } if ($dir = @opendir($_CONF['path_html'] . '/forum/images/moods')) { while (($file = readdir($dir)) !== false) { if (strlen($file) > 3 && substr(strtolower(trim($file)), -4, 4) == '.gif') { $file = str_replace(array('.gif', '.jpg'), array('', ''), $file); if (isset($postData['mood']) && $file == $postData['mood']) { $moodoptions .= "<option selected=\"selected\">" . $file . "</option>"; } else { $moodoptions .= "<option>" . $file . "</option>"; } } else { $moodoptions .= ''; } } closedir($dir); } $peTemplate->set_var('LANG_MOOD', $LANG_GF02['msg36']); $peTemplate->set_var('moodoptions', $moodoptions); } $sub_dot = '...'; $sub_none = ''; $postData['subject'] = str_replace($sub_dot, $sub_none, $postData['subject']); if ($_FF_CONF['allow_smilies']) { $peTemplate->set_var('smiley_enabled', true); } if ($_FF_CONF['allow_img_bbcode']) { $peTemplate->set_var('allow_img_bbcode', true); } // if this is the first time showing the new submission form - then check if notify option should be on if (!$viewMode) { if (isset($postData['editpid']) && $postData['editpid'] > 0) { $notifyTopicid = $postData['editpid']; } else { $notifyTopicid = $postData['id']; } if (!isset($postData['forum'])) { $postData['forum'] = ''; } if (DB_getItem($_TABLES['ff_userprefs'], 'alwaysnotify', "uid=" . (int) $uid) == 1 or FF_isSubscribed($postData['forum'], $notifyTopicid, $uid)) { $postData['notify'] = 'on'; // check and see if user has un-subscribed to this topic $nid = -$notifyTopicid; if ($notifyTopicid > 0 and DB_getItem($_TABLES['subscriptions'], 'id', "type='forum' AND category=" . (int) $postData['forum'] . " AND id={$nid} AND uid={$uid}") > 1) { $postData['notify'] = ''; } } else { $postData['notify'] = ''; } } if ($editmoderator) { if (isset($postData['notify']) && $postData['notify'] == 'on' or isset($postData['notify']) && $postData['notify'] == 'on') { $notify_val = 'checked="checked"'; } else { $notify_val = ''; } $notify_prompt = $LANG_GF02['msg38'] . '<br/><input type="checkbox" name="notify" value="on" ' . $notify_val . '/>'; // check that this is the parent topic - only able to make it skicky or locked if (!isset($postData['pid']) || $postData['pid'] == 0) { if (!isset($locked_val) and !isset($sticky_val) and $action == 'edittopic') { if (!isset($postData['locked_switch']) and isset($postData['locked']) && $postData['locked'] == 1 or isset($postData['locked_switch']) && $postData['locked_switch'] == 1) { $locked_val = 'checked="checked"'; } else { $locked_val = ''; } if (!isset($postData['sticky_switch']) and isset($postData['sticky']) && $postData['sticky'] == 1 or isset($postData['sticky_switch']) && $postData['sticky_switch'] == 1) { $sticky_val = 'checked="checked"'; } else { $sticky_val = ''; } } $locked_prompt = $LANG_GF02['msg109'] . '<br/><input type="checkbox" name="locked_switch" ' . $locked_val . ' value="1"/>'; $sticky_prompt = $LANG_GF02['msg61'] . '<br/><input type="checkbox" name="sticky_switch" ' . $sticky_val . ' value="1"/>'; } else { $locked_prompt = ''; $sticky_prompt = ''; } } else { if ($uid > 1) { if (isset($postData['notify']) && $postData['notify'] == 'on') { $notify_val = 'checked="checked"'; } else { $notify_val = ''; } $notify_prompt = $LANG_GF02['msg38'] . '<br/><input type="checkbox" name="notify" ' . $notify_val . '/>'; $locked_prompt = ''; } else { $notify_prompt = ''; $locked_prompt = ''; } } if ($postData['postmode'] == 'html' || $postData['postmode'] == 'HTML') { $postmode_msg = $LANG_GF01['TEXTMODE']; $postData['postmode'] = 'html'; } else { $peTemplate->unset_var('show_htmleditor'); $postmode_msg = $LANG_GF01['HTMLMODE']; } if ($_FF_CONF['allow_html'] || SEC_inGroup('Root') || SEC_hasRights('forum.html')) { if ($action == 'edittopic') { $mode_prompt = $postmode_msg . '<br/><input type="checkbox" name="postmode_switch" value="1"/><input type="hidden" name="postmode" value="' . $postData['postmode'] . '"/>'; } } if ($action == 'edittopic') { $peTemplate->set_var('bbcodeeditor', true); } $postData['subject'] = str_replace('"', '"', $postData['subject']); if (!$_FF_CONF['allow_smilies']) { $smilies = ''; } else { $smilies = forumPLG_showsmilies(0); } $disable_bbcode_prompt = $LANG_GF01['disable_bbcode'] . ' <input type="checkbox" name="disable_bbcode" value="1" ' . $disable_bbcode_val . '/>'; if ($_FF_CONF['allow_smilies']) { $disable_smilies_prompt = $LANG_GF01['disable_smilies'] . ' <input type="checkbox" name="disable_smilies" value="1"' . $disable_smilies_val . ' />'; } else { $disable_smilies_prompt = ''; } $disable_urlparse_prompt = $LANG_GF01['disable_urlparse'] . ' <input type="checkbox" name="disable_urlparse" value="1"' . $disable_urlparse_val . ' />'; $peTemplate->set_var('comment', @htmlspecialchars($postData['comment'], ENT_QUOTES, COM_getEncodingt())); $peTemplate->set_var(array('edit_val' => $edit_val, 'sticky_val' => $sticky_val, 'postmode_msg' => $postmode_msg, 'notify_val' => $notify_val, 'disable_bbcode_val' => $disable_bbcode_val, 'disable_smilies_val' => $disable_smilies_val, 'disable_urlparse_val' => $disable_urlparse_val, 'bbcode_prompt' => $disable_bbcode_prompt, 'smilies_prompt' => $disable_smilies_prompt, 'urlparse_prompt' => $disable_urlparse_prompt, 'LANG_SUBJECT' => $LANG_GF01['SUBJECT'], 'LANG_OPTIONS' => $LANG_GF01['OPTIONS'], 'mode_prompt' => isset($mode_prompt) ? $mode_prompt : '', 'notify_prompt' => $notify_prompt, 'locked_prompt' => $locked_prompt, 'sticky_prompt' => isset($sticky_prompt) ? $sticky_prompt : '', 'edit_prompt' => $edit_prompt, 'LANG_SUBMIT' => $LANG_GF01['SUBMIT'], 'LANG_PREVIEW' => $LANG_GF01['PREVIEW'], 'subject' => $postData['subject'], 'smilies' => $smilies, 'LANG_attachments' => $LANG_GF10['attachments'], 'LANG_maxattachments' => sprintf($LANG_GF10['maxattachments'], $_FF_CONF['maxattachments']), 'postmode' => $postData['postmode'])); // Check and see if the filemgmt plugin is installed and enabled if (function_exists('filemgmt_buildAccessSql') && $_FF_CONF['enable_fm_integration'] == 1) { $peTemplate->set_var('filemgmt_category_options', gf_makeFilemgmtCatSelect($uid)); $peTemplate->set_var('LANG_usefilemgmt', $LANG_GF10['usefilemgmt']); $peTemplate->set_var('LANG_description', $LANG_GF10['description']); $peTemplate->set_var('LANG_category', $LANG_GF10['category']); } else { $peTemplate->set_var('show_filemgmt_option', 'none'); } if (COM_isAnonUser()) { $peTemplate->set_var('hide_notify', 'none'); } if (function_exists('plugin_templatesetvars_captcha')) { plugin_templatesetvars_captcha('forum', $peTemplate); } else { $peTemplate->set_var('captcha', ''); } if ($postData['id'] > 0) { $peTemplate->set_var('topic_id', $postData['id']); } $peTemplate->set_var(array('navbreadcrumbsimg' => _ff_getImage('nav_breadcrumbs'), 'navtopicimg' => _ff_getImage('nav_topic'), 'form_action' => $_CONF['site_url'] . '/forum/createtopic.php', 'referer' => $forumData['referer'], 'forum_id' => $forumData['forum'], 'cat_name' => $postData['cat_name'], 'cat_id' => $forumData['forum_cat'], 'forum_name' => $postData['forum_name'], 'subject' => @htmlspecialchars($postData['subject'], ENT_QUOTES, COM_getEncodingt()), 'LANG_HOME' => $LANG_GF01['HOMEPAGE'], 'forum_home' => $LANG_GF01['INDEXPAGE'], 'hidden_id' => $postData['id'], 'page' => $forumData['page'], 'LANG_bhelp' => $LANG_GF01['b_help'], 'LANG_ihelp' => $LANG_GF01['i_help'], 'LANG_uhelp' => $LANG_GF01['u_help'], 'LANG_qhelp' => $LANG_GF01['q_help'], 'LANG_chelp' => $LANG_GF01['c_help'], 'LANG_lhelp' => $LANG_GF01['l_help'], 'LANG_ohelp' => $LANG_GF01['o_help'], 'LANG_phelp' => $LANG_GF01['p_help'], 'LANG_whelp' => $LANG_GF01['w_help'], 'LANG_ahelp' => $LANG_GF01['a_help'], 'LANG_shelp' => $LANG_GF01['s_help'], 'LANG_fhelp' => $LANG_GF01['f_help'], 'LANG_hhelp' => $LANG_GF01['h_help'], 'LANG_thelp' => $LANG_GF01['t_help'], 'LANG_ehelp' => $LANG_GF01['e_help'], 'LANG_code' => $LANG_GF01['CODE'], 'LANG_fontcolor' => $LANG_GF01['FONTCOLOR'], 'LANG_fontsize' => $LANG_GF01['FONTSIZE'], 'LANG_closetags' => $LANG_GF01['CLOSETAGS'], 'LANG_codetip' => $LANG_GF01['CODETIP'], 'LANG_tiny' => $LANG_GF01['TINY'], 'LANG_small' => $LANG_GF01['SMALL'], 'LANG_normal' => $LANG_GF01['NORMAL'], 'LANG_large' => $LANG_GF01['LARGE'], 'LANG_huge' => $LANG_GF01['HUGE'], 'LANG_default' => $LANG_GF01['DEFAULT'], 'LANG_dkred' => $LANG_GF01['DKRED'], 'LANG_red' => $LANG_GF01['RED'], 'LANG_orange' => $LANG_GF01['ORANGE'], 'LANG_brown' => $LANG_GF01['BROWN'], 'LANG_yellow' => $LANG_GF01['YELLOW'], 'LANG_green' => $LANG_GF01['GREEN'], 'LANG_olive' => $LANG_GF01['OLIVE'], 'LANG_cyan' => $LANG_GF01['CYAN'], 'LANG_blue' => $LANG_GF01['BLUE'], 'LANG_dkblue' => $LANG_GF01['DKBLUE'], 'LANG_indigo' => $LANG_GF01['INDIGO'], 'LANG_violet' => $LANG_GF01['VIOLET'], 'LANG_white' => $LANG_GF01['WHITE'], 'LANG_black' => $LANG_GF01['BLACK'])); $peTemplate->set_var('token_name', CSRF_TOKEN); $peTemplate->set_var('token', SEC_createToken()); $peTemplate->set_var('postmode', $postData['postmode']); $peTemplate->unset_var('show_htmleditor'); if ($_FF_CONF['use_wysiwyg_editor'] && $postData['postmode'] == 'html') { // hook into wysiwyg here switch (PLG_getEditorType()) { case 'ckeditor': $peTemplate->set_var('show_htmleditor', true); PLG_requestEditor('forum', 'forum_entry', 'ckeditor_forum.thtml'); PLG_templateSetVars('forum_entry', $peTemplate); break; case 'tinymce': $peTemplate->set_var('show_htmleditor', true); PLG_requestEditor('forum', 'forum_entry', 'tinymce_forum.thtml'); PLG_templateSetVars('forum_entry', $peTemplate); break; default: // don't support others right now break; } } $peTemplate->parse('output', 'posteditor'); $retval .= $peTemplate->finish($peTemplate->get_var('output')); $urlfor = 'advancededitor'; if ($uid == 1) { $urlfor = 'advancededitor' . md5($REMOTE_ADDR); } SEC_setCookie($_CONF['cookie_name'] . 'adveditor', SEC_createTokenGeneral($urlfor), time() + 1200, $_CONF['cookie_path'], $_CONF['cookiedomain'], $_CONF['cookiesecure'], false); if (!isset($_POST['editpost'])) { $_POST['editpost'] = ''; } if ($action != 'newtopic' && $_POST['editpost'] != 'yes' && ($action == 'newreply' || $viewMode)) { if ($FF_userprefs['showiframe']) { $retval .= "<iframe src=\"{$_CONF['site_url']}/forum/viewtopic.php?mode=preview&showtopic=" . $postData['id'] . "&onlytopic=1&lastpost=true\" height=\"300\" width=\"100%\"></iframe>"; } } return $retval; }