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->url->getUrl('forum', 'thread', array('func' => 'view', 'id'=>$_POST['forumjump'], 'raw' => true)));
exit;
}
require_once(e_PLUGIN.'forum/forum_class.php');
$forum = new e107forum();
if (!e_QUERY || !isset($_GET['id']))
{
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main', 'raw' => true)));
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->url->getUrl('forum', 'forum', array('func' => 'main', 'raw' => true)));
exit;
}
// check if user can post to this forum ...
if (!$forum->checkPerm($forumId, 'post'))
{
require_once(HEADERF);
$ns->tablerender(LAN_20, "
".LAN_399.'
');
require_once(FOOTERF);
exit;
}
define('MODERATOR', USER && $forum->isModerator(USERID));
require_once(e_HANDLER.'ren_help.php');
e107::getScBatch('view', 'forum');
e107::getScBatch('post', 'forum')->setScVar('forum', $forum)->setScVar('threadInfo', $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);
$ns->tablerender(LAN_20, "".LAN_397.'
');
require_once(FOOTERF);
exit;
}
$forumInfo['forum_name'] = $tp->toHTML($forumInfo['forum_name'], true);
define('e_PAGETITLE', ($action == 'rp' ? LAN_02.$threadInfo['thread_name'] : LAN_03).' / '.$forumInfo['forum_name'].' / '.LAN_01);
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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_311;
}
$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('forum_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_323, $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->getip();
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']; }
$attachments[] = $_tmp;
}
$postInfo['post_attachments'] = implode(',', $attachments);
}
// 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_2);
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');
$threadLink = $e107->url->getUrl('forum', 'thread', array('func' => 'last', 'id' => $threadId));
$forumLink = $e107->url->getUrl('forum', 'forum', array('func' => 'view', 'id' => $forumId));
if ($forum->prefs->get('redirect'))
{
header('location:'.$e107->url->getUrl('forum', 'thread', array('func' => 'last', 'id' => $threadId, 'raw' => 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 = "".LAN_27."
";
}
else
{
if (!isAuthor())
{
require_once(HEADERF);
$ns->tablerender(LAN_95, "".LAN_96.'
');
require_once(FOOTERF);
exit;
}
if($uploadResult = process_upload($postInfo['post_id']))
{
$attachments = explode(',', $postInfo['post_attachments']);
foreach($uploadResult as $ur)
{
$_tmp = $ur['type'].'*'.$ur['file'];
if($ur['thumb']) { $_tmp .= '*'.$ur['thumb']; }
if($ur['fname']) { $_tmp .= '*'.$ur['fname']; }
$attachments[] = $_tmp;
}
$postVals['post_attachments'] = implode(',', $attachments);
}
$postVals['post_edit_datestamp'] = time();
$postVals['post_edit_user'] = USERID;
$postVals['post_entry'] = $_POST['post'];
$threadVals['thread_name'] = $_POST['subject'];
$forum->threadUpdate($postInfo['post_thread'], $threadVals);
$forum->postUpdate($postInfo['post_id'], $postVals);
$e107cache->clear('newforumposts');
$url = $e107->url->getUrl('forum', 'thread', "func=post&id={$postInfo['post_id']}&raw=1");
header('location:'.$url);
exit;
}
}
if (isset($_POST['update_reply']))
{
if (!$_POST['post'])
{
$error = "".LAN_27.'
';
}
else
{
if (!isAuthor())
{
require_once(HEADERF);
$ns->tablerender(LAN_95, "".LAN_96.'
');
require_once(FOOTERF);
exit;
}
$postVals['post_edit_datestamp'] = time();
$postVals['post_edit_user'] = USERID;
$postVals['post_entry'] = $_POST['post'];
$forum->postUpdate($postInfo['post_id'], $postVals);
$e107cache->clear('newforumposts');
$url = $e107->url->getUrl('forum', 'thread', "func=post&id={$postInfo['post_id']}&raw=1");
header('location:'.$url);
exit;
}
}
require_once(HEADERF);
if ($error)
{
$ns->tablerender(LAN_20, $error);
}
if ($action == 'edit' || $action == 'quote')
{
if ($action == 'edit')
{
if (!isAuthor())
{
$ns->tablerender(LAN_95, "".LAN_96.'
');
require_once(FOOTERF);
exit;
}
}
if (!isset($_POST['fpreview']))
{
$post = $e107->tp->toForm($postInfo['post_entry']);
if($postInfo['post_datestamp'] == $postInfo['thread_datestamp'])
{
$subject = $e107->tp->toForm($postInfo['thread_name']);
}
}
if ($action == 'quote')
{
//remote [hide] bbcode, or else it doesn't hide stuff too well :)
$post = preg_replace('#\[hide].*?\[/hide]#s', '', $post);
$quoteName = ($postInfo['user_name'] ? $postInfo['user_name'] : $postInfo['post_user_anon']);
$post = "[quote={$quoteName}]\n".$post."\n[/quote]\n";
// $eaction = true;
$action = 'reply';
}
else
{
$eaction = true;
if($postInfo['post_datestamp'] != $postInfo['thread_datestamp'])
{
$action = 'reply';
}
else
{
$action = 'nt';
$sact = 'canc'; // added to override the bugtracker query below
}
}
}
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Load forumpost template
if (!$FORUMPOST)
{
if (is_readable(THEME.'forum_post_template.php'))
{
include_once(THEME.'forum_post_template.php');
}
else
{
include_once(e_PLUGIN.'forum/templates/forum_post_template.php');
}
}
if($action == 'rp')
{
$FORUMPOST = $FORUMPOST_REPLY;
}
$text = $tp->parseTemplate($FORUMPOST, true);
// -------------------------------------------------------------------------------------------------------------------------------------------------------------
if ($forum->prefs->get('forum_enclose'))
{
$ns->tablerender($forum->prefs->get('title'), $text);
}
else
{
echo $text;
}
function isAuthor()
{
global $postInfo;
return ((USERID === (int)$postInfo['post_user']) || MODERATOR);
}
function forumjump()
{
global $forum;
$jumpList = $forum->forumGetAllowed('view');
$text = "";
return $text;
}
function process_upload()
{
global $forumInfo, $thread_info, $admin_log, $forum;
$postId = (int)$postId;
$ret = array();
// var_dump($_FILES);
if (isset($_FILES['file_userfile']['error']))
{
require_once(e_HANDLER.'upload_handler.php');
$attachmentDir = e_PLUGIN.'forum/attachments/';
$thumbDir = e_PLUGIN.'forum/attachments/thumb/';
if ($uploaded = process_uploaded_files($attachmentDir, 'attachment', ''))
{
foreach($uploaded as $upload)
{
if ($upload['error'] == 0)
{
$_txt = '';
$_att = '';
$_file = '';
$_thumb = '';
$_fname = '';
$fpath = '{e_PLUGIN}forum/attachments/';
if(strstr($upload['type'], 'image'))
{
$_type = 'img';
if($forum->prefs->get('maxwidth', 0) > 0)
{
require_once(e_HANDLER.'resize_handler.php');
$orig_file = $upload['name'];
$new_file = 'th_'.$orig_file;
$resizeDir = ($forum->prefs->get('linkimg') ? 'thumb/' : '');
if(resize_image($attachmentDir.$orig_file, $attachmentDir.$resizeDir.$new_file, $forum->prefs->get('maxwidth')))
{
if($forum->prefs->get('linkimg'))
{
$parms = image_getsize($attachmentDir.$new_file);
$_txt = '[br][link='.$fpath.$orig_file."][img{$parms}]".$fpath.$new_file.'[/img][/link][br]';
$_file = $orig_file;
$_thumb = $new_file;
//show resized, link to fullsize
}
else
{
@unlink($attachmentDir.$orig_file);
//show resized
$parms = image_getsize($attachmentDir.$new_file);
$_txt = "[br][img{$parms}]".$fpath.$new_file.'[/img][br]';
$_file = $new_file;
}
}
else
{ //resize failed, show original
$parms = image_getsize($attachmentDir.$upload['name']);
$_txt = "[br][img{$parms}]".$fpath.$upload['name'].'[/img]';
$_file = $upload['name'];
}
}
else
{ //resizing disabled, show original
$parms = image_getsize($attachmentDir.$upload['name']);
//resizing disabled, show original
$_txt = "[br][img{$parms}]".$fpath.$upload['name']."[/img]
\n";
$_file = $upload['name'];
}
}
else
{
//upload was not an image, link to file
$_type = 'file';
$_fname = (isset($upload['rawname']) ? $upload['rawname'] : $upload['name']);
$_txt = '[br][file='.$fpath.$upload['name'].']'.$_fname.'[/file]';
$_file = $upload['name'];
$_thumb = $_fname;
}
if($_txt && $_file)
{
$ret[] = array('type' => $_type, 'txt' => $_txt, 'file' => $_file, 'thumb' => $_thumb, 'fname' => $_fname);
}
}
else
{ // Error in uploaded file
echo 'Error in uploaded file: '.(isset($upload['rawname']) ? $upload['rawname'] : $upload['name']).'
';
}
}
return $ret;
}
}
}
function image_getsize($fname)
{
if($imginfo = getimagesize($fname))
{
return ":width={$imginfo[0]}&height={$imginfo[1]}";
}
else
{
return '';
}
}
require_once(FOOTERF);
?>