isInstalled('forum')) { header('Location: '.SITEURL.'index.php'); exit; } // include_lan(e_PLUGIN.'forum/languages/'.e_LANGUAGE.'/lan_forum_post.php'); if (isset($_POST['fjsubmit'])) { header('Location:'.e107::getUrl()->create('forum/forum/view', array('id'=>(int) $_POST['forumjump']), '', 'full=1&encode=0')); exit; } require_once(e_PLUGIN.'forum/forum_class.php'); $forum = new e107forum(); if (!e_QUERY || !isset($_GET['id'])) { header('Location:'.e107::getUrl()->create('forum/forum/main', array(), 'full=1&encode=0')); exit; } $action = trim($_GET['f']); $id = (int)$_GET['id']; switch($action) { case 'rp': $threadInfo = $forum->threadGet($id, false); $forumId = $threadInfo['thread_forum_id']; $forumInfo = $forum->forumGet($forumId); break; case 'nt': $forumInfo = $forum->forumGet($id); $forumId = $id; break; case 'quote': case 'edit': $postInfo = $forum->postGet($id, 'post'); $threadInfo = $postInfo; $forumId = $postInfo['post_forum']; $forumInfo = $forum->forumGet($forumId); break; default: header("Location:".e107::getUrl()->create('forum/forum/main', array(), 'full=1&encode=0')); exit; } // check if user can post to this forum ... if (!$forum->checkPerm($forumId, 'post')) { require_once(HEADERF); $mes->addError(LAN_FORUM_3001); $ns->tablerender(LAN_FORUM_1001, $mes->render()); require_once(FOOTERF); exit; } define('MODERATOR', USER && $forum->isModerator(USERID)); require_once(e_HANDLER.'ren_help.php'); // FIXME deprecated //e107::getScBatch('view', 'forum'); //XXX FIXME Conflicting shortcode names. Find a solution without renaming them. $sc = e107::getScBatch('post', 'forum')->setScVar('forum', $forum)->setScVar('threadInfo', vartrue($threadInfo)); $gen = new convert; $fp = new floodprotect; $e107 = e107::getInstance(); //if thread is not active and not new thread, show warning if ($action != 'nt' && !$threadInfo['thread_active'] && !MODERATOR) { require_once(HEADERF); $mes->addError(LAN_FORUM_3002); $ns->tablerender(LAN_FORUM_1001, $mes->render()); require_once(FOOTERF); exit; } $forumInfo['forum_name'] = $tp->toHTML($forumInfo['forum_name'], true); define('e_PAGETITLE', ($action == 'rp' ? LAN_FORUM_3003.": ".$threadInfo['thread_name'] : LAN_FORUM_1018).' / '.$forumInfo['forum_name'].' / '.LAN_FORUM_1001); // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ if($forum->prefs->get('attach')) { global $allowed_filetypes, $max_upload_size; include_once(e_HANDLER.'upload_handler.php'); $a_filetypes = get_filetypes(); $max_upload_size = calc_max_upload_size(-1); // Find overriding maximum upload size $max_upload_size = set_max_size($a_filetypes, $max_upload_size); $max_upload_size = $e107->parseMemorySize($max_upload_size, 0); $a_filetypes = array_keys($a_filetypes); $allowed_filetypes = implode(', ', $a_filetypes); } if (isset($_POST['submitpoll'])) { require_once(e_PLUGIN.'poll/poll_class.php'); $poll = new poll; require_once(HEADERF); if (!$FORUMPOST) { if (file_exists(THEME.'forum_posted_template.php')) { require_once(THEME.'forum_posted_template.php'); } else { require_once(e_PLUGIN.'forum/templates/forum_posted_template.php'); } } echo $FORUMPOLLPOSTED; require_once(FOOTERF); exit; } if (isset($_POST['fpreview'])) { process_upload(); require_once(HEADERF); if (USER) { $poster = USERNAME; } else { $poster = ($_POST['anonname']) ? $_POST['anonname'] : LAN_FORUM_3004; } $postdate = $gen->convert_date(time(), "forum"); $tsubject = $tp->post_toHTML($_POST['subject'], true); $tpost = $tp->post_toHTML($_POST['post'], true); if ($_POST['poll_title'] != '' && check_class($forum->prefs->get('poll'))) { require_once(e_PLUGIN."poll/poll_class.php"); $poll = new poll; $poll->render_poll($_POST, 'forum', 'notvoted'); } if (!$FORUM_PREVIEW) { if (file_exists(THEME."forum_preview_template.php")) { require_once(THEME."forum_preview_template.php"); } else { require_once(e_PLUGIN."forum/templates/forum_preview_template.php"); } } $text = $FORUM_PREVIEW; if ($poll_text) { $ns->tablerender($_POST['poll_title'], $poll_text); } $ns->tablerender(LAN_FORUM_3005, $text); $anonname = $tp->post_toHTML($_POST['anonname'], FALSE); $post = $tp->post_toForm($_POST['post']); $subject = $tp->post_toHTML($_POST['subject'], false); if ($action == 'edit') { if ($_POST['subject']) { $action = 'edit'; } else { $action = 'reply'; } $eaction = true; } else if($action == 'quote') { $action = 'reply'; $eaction = false; } } if (isset($_POST['newthread']) || isset($_POST['reply'])) { $postInfo = array(); $threadInfo = array(); $postOptions = array(); $threadOptions = array(); if ((isset($_POST['newthread']) && trim($_POST['subject']) == '') || trim($_POST['post']) == '') { message_handler('ALERT', 5); } else { if ($fp->flood('forum_thread', 'thread_datestamp') == false && !ADMIN) { echo "\n"; exit; } $hasPoll = ($action == 'nt' && varset($_POST['poll_title']) && $_POST['poll_option'][0] != '' && $_POST['poll_option'][1] != ''); $postInfo['post_ip'] = e107::getIPHandler()->getIP(FALSE); if (USER) { $postInfo['post_user'] = USERID; $threadInfo['thread_lastuser'] = USERID; $threadInfo['thread_user'] = USERID; $threadInfo['thread_lastuser_anon'] = ''; } else { $postInfo['post_user_anon'] = $_POST['anonname']; $threadInfo['thread_lastuser_anon'] = $_POST['anonname']; $threadInfo['thread_user_anon'] = $_POST['anonname']; } $time = time(); $postInfo['post_entry'] = $_POST['post']; $postInfo['post_forum'] = $forumId; $postInfo['post_datestamp'] = $time; $threadInfo['thread_lastpost'] = $time; if(isset($_POST['no_emote'])) { $postInfo['post_options'] = serialize(array('no_emote' => 1)); } //If we've successfully uploaded something, we'll have to edit the post_entry and post_attachments if($uploadResult = process_upload($newPostId)) { foreach($uploadResult as $ur) { //$postInfo['post_entry'] .= $ur['txt']; // $_tmp = $ur['type'].'*'.$ur['file']; // if($ur['thumb']) { $_tmp .= '*'.$ur['thumb']; } // if($ur['fname']) { $_tmp .= '*'.$ur['fname']; } $type = $ur['type']; $newValues[$type][] = $ur['file']; // $attachments[] = $_tmp; } // $postInfo['_FIELD_TYPES']['post_attachments'] = 'array'; $postInfo['post_attachments'] = e107::serialize($newValues); //FIXME XXX - broken encoding when saved to DB. } // var_dump($uploadResult); switch($action) { // Reply only. Add the post, update thread record with latest post info. // Update forum with latest post info case 'rp': $postInfo['post_thread'] = $id; $newPostId = $forum->postAdd($postInfo); break; // New thread started. Add the thread info (with lastest post info), add the post. // Update forum with latest post info case 'nt': $threadInfo['thread_sticky'] = (MODERATOR ? (int)$_POST['threadtype'] : 0); $threadInfo['thread_name'] = $_POST['subject']; $threadInfo['thread_forum_id'] = $forumId; $threadInfo['thread_active'] = 1; $threadInfo['thread_datestamp'] = $time; if($hasPoll) { $threadOptions['poll'] = '1'; } if(is_array($threadOptions) && count($threadOptions)) { $threadInfo['thread_options'] = serialize($threadOptions); } else { $threadInfo['thread_options'] = ''; } if($postResult = $forum->threadAdd($threadInfo, $postInfo)) { $newPostId = $postResult['postid']; $newThreadId = $postResult['threadid']; if($_POST['email_notify']) { $forum->track('add', USERID, $newThreadId); } } break; } // print_a($threadInfo); // print_a($postInfo); // exit; if($postResult === -1) //Duplicate post { require_once(HEADERF); $ns->tablerender('', LAN_FORUM_3007); require_once(FOOTERF); exit; } $threadId = ($action == 'nt' ? $newThreadId : $id); //If a poll was submitted, let's add it to the poll db if ($action == 'nt' && varset($_POST['poll_title']) && $_POST['poll_option'][0] != '' && $_POST['poll_option'][1] != '') { require_once(e_PLUGIN.'poll/poll_class.php'); $_POST['iid'] = $threadId; $poll = new poll; $poll->submit_poll(2); } $e107cache->clear('newforumposts'); $postInfo = $forum->postGet($newPostId, 'post'); $forumInfo = $forum->forumGet($postInfo['post_forum']); $threadLink = e107::getUrl()->create('forum/thread/last', $postInfo); $forumLink = e107::getUrl()->create('forum/forum/view', $forumInfo); if ($forum->prefs->get('redirect')) { header('location:'.e107::getUrl()->create('forum/thread/last', $postInfo, array('encode' => false, 'full' => true))); exit; } else { require_once(HEADERF); if (!$FORUMPOST) { if (file_exists(THEME."forum_posted_template.php")) { require_once(THEME."forum_posted_template.php"); } else { require_once(e_PLUGIN."forum/templates/forum_posted_template.php"); } } echo (isset($_POST['newthread']) ? $FORUMTHREADPOSTED : $FORUMREPLYPOSTED); require_once(FOOTERF); exit; } } } if (isset($_POST['update_thread'])) { // var_dump($_POST); // var_dump($threadInfo); // var_dump($postInfo); // exit; if (!$_POST['subject'] || !$_POST['post']) { $error = "