mirror of
https://github.com/Xkeeper0/jul.git
synced 2025-05-19 00:30:21 -07:00
406 lines
16 KiB
PHP
406 lines
16 KiB
PHP
<?php
|
|
|
|
require 'lib/function.php';
|
|
|
|
if ($pid) {
|
|
if (!$ppp)
|
|
$ppp = ($log ? $loguser['postsperpage'] : 20);
|
|
$id = $sql->resultq("SELECT `thread` FROM `posts` WHERE `id` = '$pid'");
|
|
$numposts = $sql->resultq("SELECT COUNT(*) FROM `posts` WHERE `thread` = '$id' AND `id` < '$pid'");
|
|
$page = floor($numposts / $ppp);
|
|
}
|
|
|
|
if ($lpt) {
|
|
if (!$ppp)
|
|
$ppp = ($log ? $loguser['postsperpage'] : 20);
|
|
$pid = $sql->resultq("SELECT MIN(`id`) FROM `posts` WHERE `thread` = '".$_GET['id']."' AND `date` > '".$_GET['lpt']."'");
|
|
if (!$pid) {
|
|
$pid = $sql->resultq("SELECT MAX(`id`) FROM `posts` WHERE `thread` = '".$_GET['id']."'");
|
|
}
|
|
return header("Location: ?pid=$pid#$pid");
|
|
}
|
|
|
|
if ($id) {
|
|
$thread = mysql_fetch_array(mysql_query("SELECT * FROM threads WHERE id=$id"));
|
|
$forumid = intval($thread['forum']);
|
|
$forum = mysql_fetch_array(mysql_query("SELECT * FROM forums WHERE id=$forumid"));
|
|
$specialscheme = $forum['specialscheme'];
|
|
|
|
if ($loguser['id']) {
|
|
|
|
$readdate = @mysql_result(@mysql_query("SELECT `readdate` FROM `forumread` WHERE `user` = '$loguser[id]' AND `forum` = '$forumid'"), 0);
|
|
|
|
if ($thread['lastpostdate'] > $readdate) {
|
|
mysql_query("REPLACE INTO threadsread SET `uid` = '$loguser[id]', `tid` = '$thread[id]', `time` = '".ctime()."', `read` = '1'");
|
|
}
|
|
|
|
$unreadquery = mysql_query("SELECT COUNT(*) FROM `threads` WHERE `id` NOT IN (SELECT `tid` FROM `threadsread` WHERE `uid` = '$loguser[id]' AND `read` = '1') AND `lastpostdate` > '$readdate' AND `forum` = '$forumid'");
|
|
$unreadcount = mysql_result($unreadquery, 0);
|
|
if ($unreadcount == 0)
|
|
mysql_query("REPLACE INTO forumread VALUES ('$loguser[id]', '$forumid', '".ctime().'\')');
|
|
|
|
}
|
|
|
|
if ($tnext = @mysql_result(@mysql_query("SELECT min(lastpostdate) FROM threads WHERE forum=$forumid AND lastpostdate>$thread[lastpostdate]"), 0, 0))
|
|
$tnext = mysql_result(mysql_query("SELECT id FROM threads WHERE lastpostdate=$tnext"), 0, 0);
|
|
if ($tprev = @mysql_result(@mysql_query("SELECT max(lastpostdate) FROM threads WHERE forum=$forumid AND lastpostdate<$thread[lastpostdate]"), 0, 0))
|
|
$tprev = mysql_result(mysql_query("SELECT id FROM threads WHERE lastpostdate=$tprev"), 0, 0);
|
|
|
|
if ($tnext)
|
|
$nextnewer = "<a href=thread.php?id=$tnext>Next newer thread</a>";
|
|
if ($tprev)
|
|
$nextolder = "<a href=thread.php?id=$tprev>Next older thread</a>";
|
|
if ($nextnewer && $nextolder)
|
|
$nextnewer .= ' | ';
|
|
if (@mysql_fetch_array(mysql_query("SELECT * FROM favorites WHERE user=$loguserid AND thread=$id")))
|
|
$favlink = "<a href=forum.php?act=rem&thread=$id>Remove from favorites</a>";
|
|
else
|
|
$favlink = "<a href=forum.php?act=add&thread=$id>Add to favorites</a>";
|
|
if ($nextnewer or $nextolder)
|
|
$favlink .= ' | ';
|
|
|
|
mysql_query("UPDATE threads SET views=views+1 WHERE id=$id");
|
|
$thread['title'] = str_replace("<", "<", $thread['title']);
|
|
if ($forum['minpower'] > $power and $forum['minpower'] > 0)
|
|
$thread['title'] = "(restricted)";
|
|
$forumtitle = "$forum[title]: ";
|
|
}
|
|
elseif($user)
|
|
{
|
|
$usr = $user;
|
|
$tuser = mysql_fetch_array(mysql_query("SELECT name FROM users WHERE id=$usr"));
|
|
$thread['title'] = "Posts by $tuser[name]";
|
|
}
|
|
|
|
elseif($search)
|
|
{
|
|
$thread['title'] = "Search results";
|
|
}
|
|
|
|
$windowtitle = "$boardname -- $forumtitle$thread[title]";
|
|
require 'lib/layout.php';
|
|
if ($id)
|
|
$fonline = fonlineusers($forumid);
|
|
if (@mysql_num_rows(mysql_query("SELECT user FROM forummods WHERE forum=$forumid and user=$loguserid")))
|
|
$ismod = 1;
|
|
|
|
if ($id && $ismod) {
|
|
$trashid = 27;
|
|
if ($qmod) {
|
|
$verb = 'editing';
|
|
if ($st != '')
|
|
mysql_query("UPDATE threads SET sticky=$st WHERE id=$id");
|
|
if ($cl != '')
|
|
mysql_query("UPDATE threads SET closed=$cl WHERE id=$id");
|
|
if ($trash && $_POST['confirm']) {
|
|
mysql_query("UPDATE threads SET sticky=0,closed=1,forum=$trashid WHERE id=$id");
|
|
$numposts = $thread['replies'] + 1;
|
|
$t1 = mysql_fetch_array(mysql_query("SELECT lastpostdate,lastposter FROM threads WHERE forum=$forumid ORDER BY lastpostdate DESC LIMIT 1"));
|
|
$t2 = mysql_fetch_array(mysql_query("SELECT lastpostdate,lastposter FROM threads WHERE forum=$trashid ORDER BY lastpostdate DESC LIMIT 1"));
|
|
mysql_query("UPDATE forums SET numposts=numposts-$numposts,numthreads=numthreads-1,lastpostdate=$t1[lastpostdate],lastpostuser=$t1[lastposter] WHERE id=$forumid");
|
|
mysql_query("UPDATE forums SET numposts=numposts+$numposts,numthreads=numthreads+1,lastpostdate=$t2[lastpostdate],lastpostuser=$t2[lastposter] WHERE id=$trashid");
|
|
$verb = 'trashing';
|
|
}
|
|
print "
|
|
$header$tblstart
|
|
$tccell1>Thank you, $loguser[name], for $verb this thread.<br>".redirect("forum.php?id=$forumid", 'return to the forum', 0)."
|
|
$tblend$footer
|
|
";
|
|
printtimedif($startingtime);
|
|
exit;
|
|
} else {
|
|
$fulledit = "<a href=editthread.php?id=$id>Edit thread<a>";
|
|
$link = "<a href=thread.php?id=$id&qmod=1";
|
|
if (!$thread['sticky'])
|
|
$stick = "$link&st=1>Stick</a>";
|
|
else
|
|
$stick = "$link&st=0>Unstick</a>";
|
|
if (!$thread['closed'])
|
|
$close = "$link&cl=1>Close</a>";
|
|
else
|
|
$close = "$link&cl=0>Open</a>";
|
|
if ($thread['forum'] != $trashid)
|
|
$trash = " | <a href='/editthread.php?action=trashthread&id=$id'>Trash</a>";
|
|
$delete = "<a href='/editthread.php?action=editthread&delete=1&id=$id'>Delete</a>";
|
|
$modfeats = "<tr>$tccellcls colspan=2>Moderating options: $stick | $close$trash -- $fulledit";
|
|
}
|
|
}
|
|
if ($thread['poll']) {
|
|
|
|
$poll = mysql_fetch_array(mysql_query("SELECT * FROM poll WHERE id=$thread[poll]"));
|
|
// $voted=@mysql_result(mysql_query("SELECT count(*) FROM pollvotes WHERE poll=$poll[id] AND user=$loguserid"),0,0);
|
|
|
|
if ($action and $loguserid and(!$voted or $poll['doublevote']) and ! $poll['closed'] && $_GET['dat'] == md5($loguser['name']."sillysaltstring")) {
|
|
|
|
if ($action == "vote") {
|
|
|
|
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `poll_choices` WHERE `poll` = '$poll[id]' AND `id` = '$choice'"), 0)) { // none of this stupid "wrong poll" bullshit
|
|
if (!$poll['doublevote']) {
|
|
mysql_query("DELETE FROM `pollvotes` WHERE `user` = '$loguserid' AND `poll` = '$poll[id]'");
|
|
}
|
|
mysql_query("INSERT INTO pollvotes (poll,choice,user) VALUES ($poll[id],$choice,$loguserid)");
|
|
}
|
|
}
|
|
elseif($action == "votedel") {
|
|
|
|
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `poll_choices` WHERE `poll` = '$poll[id]' AND `id` = '$choice'"), 0)) {
|
|
mysql_query("DELETE FROM `pollvotes` WHERE `user` = '$loguserid' AND `poll` = '$poll[id]' AND `choice` = '$choice'");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ($loguser) {
|
|
$sql = mysql_query("SELECT `choice` FROM `pollvotes` WHERE `poll` = '$poll[id]' AND `user` = '$loguserid'");
|
|
while ($userchoice = mysql_fetch_array($sql, MYSQL_ASSOC)) {
|
|
$uservote[$userchoice['choice']] = true;
|
|
}
|
|
}
|
|
|
|
$tvotes = mysql_result(mysql_query("SELECT count(distinct `user`) FROM pollvotes WHERE poll=$poll[id]"), 0, 0);
|
|
$tvotes2 = mysql_result(mysql_query("SELECT count(*) FROM pollvotes WHERE poll=$poll[id]"), 0, 0);
|
|
$tvotesi = mysql_result(mysql_query("SELECT sum(u.`influence`) as influence FROM pollvotes p LEFT JOIN users u ON p.user = u.id WHERE poll=$poll[id]"), 0, 0);
|
|
$pollcs = mysql_query("SELECT * FROM poll_choices WHERE poll=$poll[id]");
|
|
|
|
while ($pollc = mysql_fetch_array($pollcs)) {
|
|
|
|
$votes = mysql_result(mysql_query("SELECT count(*) FROM pollvotes WHERE choice=$pollc[id]"), 0, 0);
|
|
$influence = mysql_result(mysql_query("SELECT sum(u.`influence`) as influence FROM pollvotes p LEFT JOIN users u ON p.user = u.id WHERE choice=$pollc[id]"), 0, 0);
|
|
|
|
if ($loguser['pollstyle'] || (!$x_hacks['host'] && $forumid == 2)) {
|
|
if ($tvotesi != 0) {
|
|
$pct = sprintf('%02.1f', $influence / $tvotesi * 100);
|
|
$pct2 = sprintf('%02.1f', $influence / $tvotesi * 100);
|
|
} else {
|
|
$pct = "0.0";
|
|
$pct2 = "0.0";
|
|
}
|
|
$votes = intval($influence)." point".($influence == 1 ? '' : 's')." ($votes)";
|
|
} else {
|
|
if ($tvotes != 0) {
|
|
$pct = sprintf('%02.1f', $votes / $tvotes * 100);
|
|
$pct2 = sprintf('%02.1f', $votes / $tvotes2 * 100);
|
|
} else {
|
|
$pct = "0.0";
|
|
$pct2 = "0.0";
|
|
}
|
|
$votes = "$votes vote".($votes == 1 ? '' : 's');
|
|
}
|
|
|
|
$barpart = "<table cellpadding=0 cellspacing=0 width=$pct% bgcolor='".($pollc['color'] ? $pollc['color'] : "cccccc")."'><td> </table>";
|
|
if ($pct == "0.0")
|
|
$barpart = ' ';
|
|
$link = '';
|
|
|
|
if ($loguserid and(!$voted or $poll['doublevote']) and ! $poll['closed'])
|
|
$link = "<a href=thread.php?id=$id&choice=$pollc[id]&dat=".md5($loguser['name']."sillysaltstring")."&action=vote";
|
|
|
|
if ($uservote[$pollc['id']]) {
|
|
$dot = "<img src=\"images/dot4.gif\" align=\"absmiddle\"> ";
|
|
$link .= "del";
|
|
} else {
|
|
$dot = "<img src=\"images/_.gif\" width=8 height=8 align=\"absmiddle\"> ";
|
|
}
|
|
|
|
if ($link)
|
|
$link .= ">";
|
|
$choices .= "
|
|
$tccell1l width=20%>$dot$link".($pollc['choice'])."</a></td>
|
|
$tccell2l width=60%>$barpart</td>
|
|
$tccell1 width=20%>".($poll['doublevote'] ? "$pct% of users, $votes ($pct2%)" : "$pct%, $votes")."<tr>
|
|
";
|
|
|
|
}
|
|
|
|
$mlt = 'disabled';
|
|
if ($poll['doublevote'])
|
|
$mlt = 'enabled';
|
|
if ($tvotes != 1) {
|
|
$ss = 's';
|
|
$hv = 'have';
|
|
} else {
|
|
$ss = '';
|
|
$hv = 'has';
|
|
}
|
|
if ($ismod or $thread['user'] == $loguserid)
|
|
$polledit = "<!-- edit would go here -->";
|
|
$polltbl = "
|
|
$tccellc colspan=3><b>".htmlspecialchars($poll['question'])."<tr>
|
|
$tccell2ls colspan=3>".nl2br(htmlspecialchars($poll['briefing']))."<tr>
|
|
$choices
|
|
$tccell2l colspan=3>$smallfont Multi-voting is $mlt. $tvotes user$ss $hv voted. $polledit
|
|
$tblend<br>$tblstart
|
|
";
|
|
}
|
|
|
|
loadtlayout();
|
|
$sfields = ''; // S I G H
|
|
if ($loguser['viewsig'] == 0)
|
|
$sfields = '';
|
|
if ($loguser['viewsig'] == 1)
|
|
$sfields = ',headtext,signtext';
|
|
if ($loguser['viewsig'] == 2)
|
|
$sfields = ',u.postheader headtext,u.signature signtext';
|
|
$ufields = userfields();
|
|
|
|
$activity = mysql_query("SELECT user, count(*) num FROM posts WHERE date>".(ctime() - 86400)." GROUP BY user");
|
|
while ($n = mysql_fetch_array($activity))
|
|
$act[$n['user']] = $n['num'];
|
|
$postlist = "
|
|
$polltbl
|
|
$modfeats$tblend
|
|
";
|
|
if (!$ppp)
|
|
$ppp = ($log ? $loguser['postsperpage'] : 20);
|
|
if ($log && $id) {
|
|
$headlinks .= " - <a href=index.php?action=markforumread&forumid=$forum[id]>Mark forum read</a>";
|
|
$header = makeheader($header1, $headlinks, $header2 . "$tblstart$tccell1s>$fonline$tblend");
|
|
}
|
|
|
|
if ($id && $power < $forum['minpower']) {
|
|
print "
|
|
$header$tblstart
|
|
$tccell1>Couldn't enter the forum. Either you don't have access to this restricted forum, or you are not logged in.
|
|
<br>Click <a href=index.php>here</a> to return to the board, or wait to get redirected.
|
|
<META HTTP-EQUIV=REFRESH CONTENT=0;URL=index.php>
|
|
$tblend
|
|
";
|
|
} else {
|
|
$min = $ppp * $page;
|
|
if ($id)
|
|
$posts = mysql_query("SELECT p.*,text$sfields,edited,options,tagval,u.id uid,name,$ufields,regdate FROM posts_text, posts p LEFT JOIN users u ON p.user=u.id WHERE thread=$id AND p.id=pid ORDER BY p.id LIMIT $min,$ppp");
|
|
elseif($usr) {
|
|
$thread['replies'] = mysql_result(mysql_query("SELECT count(*) FROM posts WHERE user=$usr"), 0, 0) - 1;
|
|
$posts = mysql_query("SELECT p.*,text$sfields,edited,options,tagval,u.id uid,name,$ufields,regdate FROM posts_text, posts p LEFT JOIN users u ON p.user=u.id WHERE user=$usr AND p.id=pid ORDER BY p.id LIMIT $min,$ppp");
|
|
}
|
|
elseif($search) {
|
|
|
|
$sql->query("INSERT INTO `ipbans` SET `ip` = '".$_SERVER['REMOTE_ADDR']."', `date` = '".ctime()."', `reason` = 'Auto-ban'");
|
|
if (!mysql_error()) {
|
|
xk_ircsend("1|".xk(7)."Auto-banned IP ".xk(8).$_SERVER['REMOTE_ADDR'].xk(7)." for using hidden/deleted search feature.");
|
|
}
|
|
|
|
return header("Location: ./");
|
|
die();
|
|
|
|
if ($quser) {
|
|
$user = mysql_fetch_array(mysql_query("SELECT id FROM users WHERE name='".addslashes($quser)."'"));
|
|
$u = $user['id'];
|
|
$srch .= ($srch ? "AND " : "")."posts.user=$u";
|
|
}
|
|
if ($qip)
|
|
$srch .= ($srch ? " AND " : "")."ip LIKE '$qip'";
|
|
if ($qmsg)
|
|
$srch .= ($srch ? " AND " : "")."text LIKE '%".addslashes($qmsg)."%'";
|
|
if ($dopt == 1)
|
|
$srch .= ($srch ? " AND " : "")."date>".(ctime() - 86400 * $datedays);
|
|
|
|
if ($dopt == 2) {
|
|
$date1 = mktime(0, 0, 0, $d1m, $d1d, $d1y);
|
|
$date2 = mktime(0, 0, 0, $d2m, $d2d, $d2y) + 86400;
|
|
$srch .= ($srch ? " AND " : "")."date>$date1 AND date<$date2";
|
|
}
|
|
|
|
if ($pord)
|
|
$order = " ORDER BY id".($pord == 2 ? " DESC" : "");
|
|
|
|
if (!$fsch && false) {
|
|
$posts = mysql_query("SELECT id,user,date,thread,ip,text,num$signquery,edited,options FROM posts,posts_text WHERE $srch AND id=pid $order LIMIT $min,$ppp");
|
|
$thread['replies'] = mysql_result(mysql_query("SELECT COUNT(*) FROM posts,posts_text WHERE $srch AND id=pid"), 0, 0);
|
|
} else {
|
|
$posts = mysql_query("SELECT posts.id,posts.user,date,thread,ip,text,num$signquery,edited,options FROM posts,posts_text,threads WHERE $srch AND thread=threads.id AND forum=$fid AND id=pid $order LIMIT $min,$ppp");
|
|
$thread['replies'] = mysql_result(mysql_query("SELECT COUNT(*) FROM posts,posts_text,threads WHERE $srch AND thread=threads.id AND forum=$fid AND id=pid"), 0, 0);
|
|
}
|
|
$quser = str_replace(" ", "+", $quser);
|
|
$qip = str_replace(" ", "+", $qip);
|
|
$qmsg = str_replace(" ", "+", $qmsg);
|
|
}
|
|
for ($i = 0; $post = mysql_fetch_array($posts); $i++) {
|
|
$bg = $i % 2 + 1;
|
|
|
|
$postlist .= '<tr>';
|
|
|
|
$quote = "<a href=\"thread.php?pid=$post[id]#$post[id]\">Link</a>";
|
|
$edit = '';
|
|
if ($id and ! $thread['closed'])
|
|
$quote .= " | <a href=newreply.php?id=$id&postid=$post[id]>Quote</a>";
|
|
$deletelink = "<a href=editpost.php?id=$post[id]&action=delete>Delete</a>";
|
|
if (($ismod or $post['user'] == $loguserid) and ! $thread['closed'])
|
|
$edit = ($quote ? ' | ' : '')."<a href=editpost.php?id=$post[id]>Edit</a> | $deletelink";
|
|
if ($isadmin)
|
|
$ip = " | IP: <a href=ipsearch.php?ip=$post[ip]>$post[ip]</a>";
|
|
if (!$id) {
|
|
$pthread = mysql_fetch_array(mysql_query("SELECT id,title,forum FROM threads WHERE id=$post[thread]"));
|
|
$pforum = @mysql_fetch_array(mysql_query("SELECT minpower FROM forums WHERE id=$pthread[forum]"));
|
|
}
|
|
$post['act'] = $act[$post['user']];
|
|
if ($pforum['minpower'] <= $power or ! $pforum['minpower']) {
|
|
$postlist .= threadpost($post, $bg, $pthread);
|
|
} else
|
|
$postlist .= "$tccellc colspan=2>$fonttag (restricted)";
|
|
}
|
|
$query = preg_replace("'page=([0-9].*)'si", '', '?'.getenv("QUERY_STRING"));
|
|
$query = preg_replace("'pid=(\d.*)'si", "id=$id", $query);
|
|
if ($query AND substr($query, -1) != "&")
|
|
$query .= "&";
|
|
if (!$page)
|
|
$page = 0;
|
|
$pagelinks = "Pages:";
|
|
|
|
for ($i = 0; $i < (($thread['replies'] + 1) / $ppp); $i++) {
|
|
|
|
if ($i == $page)
|
|
$pagelinks .= " ".($i + 1);
|
|
else
|
|
$pagelinks .= " <a href=thread.php$query"."page=$i>".($i + 1)."</a>";
|
|
}
|
|
|
|
if ($thread['replies'] < $ppp)
|
|
$pagelinks = '';
|
|
print $header."
|
|
<table width=100%><td align=left>$fonttag<a href=index.php>$boardname</a> - <a href=forum.php?id=$forumid>$forum[title]</a> - $thread[title]</td><td align=right>$smallfont
|
|
";
|
|
|
|
if ($forumid > -1) {
|
|
if (!$forum['nopolls']) {
|
|
print "<a href=newthread.php?poll=1&id=$forumid>$newpollpic</a> - ";
|
|
} else {
|
|
print "<img src=\"images/nopolls.png\" align=\"absmiddle\"> - ";
|
|
}
|
|
|
|
print "<a href=newthread.php?id=$forumid>$newthreadpic</a>";
|
|
|
|
if (!$thread['closed'])
|
|
print " - <a href=newreply.php?id=$id>$newreplypic</a>";
|
|
else
|
|
print " - $closedpic";
|
|
}
|
|
print "</table><table width=100%><td align=left>$smallfont$pagelinks</td><td align=right>$smallfont$favlink$nextnewer$nextolder</table>
|
|
$tblstart
|
|
";
|
|
print "$postlist$tblstart$modfeats$tblend
|
|
<table width=100%><td align=left>$smallfont$pagelinks</td><td align=right>$smallfont$favlink$nextnewer$nextolder</table>
|
|
<table width=100%><td align=left>$fonttag<a href=index.php>$boardname</a> - <a href=forum.php?id=$forumid>$forum[title]</a> - $thread[title]</td><td align=right>$smallfont
|
|
";
|
|
|
|
if ($forumid) {
|
|
if (!$forum['nopolls']) {
|
|
print "<a href=newthread.php?poll=1&id=$forumid>$newpollpic</a> - ";
|
|
} else {
|
|
print "<img src=\"images/nopolls.png\" align=\"absmiddle\"> - ";
|
|
}
|
|
|
|
// print "<a href=newthread.php?poll=1&id=$forumid>$newpollpic</a> - ";
|
|
print "<a href=newthread.php?id=$forumid>$newthreadpic</a>";
|
|
|
|
if (!$thread['closed']) {
|
|
print " - <a href=newreply.php?id=$id>$newreplypic</a>";
|
|
} else {
|
|
print " - $closedpic";
|
|
}
|
|
}
|
|
print "</table>";
|
|
}
|
|
print $footer;
|
|
printtimedif($startingtime);
|
|
?>
|