query("SELECT TopicID FROM forums_posts WHERE ID = $_GET[postid]"); list($ThreadID) = $DB->next_record(); if ($ThreadID) { header("Location: forums.php?action=viewthread&threadid=$ThreadID&postid=$_GET[postid]#post$_GET[postid]"); die(); } else { error(404); } } else { error(404); } } else { $ThreadID = $_GET['threadid']; } if (isset($LoggedUser['PostsPerPage'])) { $PerPage = $LoggedUser['PostsPerPage']; } else { $PerPage = POSTS_PER_PAGE; } //---------- Get some data to start processing // Thread information, constant across all pages $ThreadInfo = get_thread_info($ThreadID, true, true); $ForumID = $ThreadInfo['ForumID']; // Make sure they're allowed to look at the page if (!check_forumperm($ForumID)) { error(403); } //Escape strings for later display $ThreadTitle = display_str($ThreadInfo['Title']); $ForumName = display_str($Forums[$ForumID]['Name']); //Post links utilize the catalogue & key params to prevent issues with custom posts per page if ($ThreadInfo['Posts'] > $PerPage) { if (isset($_GET['post']) && is_number($_GET['post'])) { $PostNum = $_GET['post']; } elseif (isset($_GET['postid']) && is_number($_GET['postid']) && $_GET['postid'] != $ThreadInfo['StickyPostID']) { $SQL = " SELECT COUNT(ID) FROM forums_posts WHERE TopicID = $ThreadID AND ID <= $_GET[postid]"; if ($ThreadInfo['StickyPostID'] < $_GET['postid']) { $SQL .= " AND ID != $ThreadInfo[StickyPostID]"; } $DB->query($SQL); list($PostNum) = $DB->next_record(); } else { $PostNum = 1; } } else { $PostNum = 1; } list($Page, $Limit) = Format::page_limit($PerPage, min($ThreadInfo['Posts'],$PostNum)); if (($Page - 1) * $PerPage > $ThreadInfo['Posts']) { $Page = ceil($ThreadInfo['Posts'] / $PerPage); } list($CatalogueID,$CatalogueLimit) = Format::catalogue_limit($Page,$PerPage,THREAD_CATALOGUE); // Cache catalogue from which the page is selected, allows block caches and future ability to specify posts per page if (!$Catalogue = $Cache->get_value('thread_'.$ThreadID.'_catalogue_'.$CatalogueID)) { $DB->query(" SELECT p.ID, p.AuthorID, p.AddedTime, p.Body, p.EditedUserID, p.EditedTime, ed.Username FROM forums_posts as p LEFT JOIN users_main AS ed ON ed.ID = p.EditedUserID WHERE p.TopicID = '$ThreadID' AND p.ID != '".$ThreadInfo['StickyPostID']."' LIMIT $CatalogueLimit"); $Catalogue = $DB->to_array(false,MYSQLI_ASSOC); if (!$ThreadInfo['IsLocked'] || $ThreadInfo['IsSticky']) { $Cache->cache_value('thread_'.$ThreadID.'_catalogue_'.$CatalogueID, $Catalogue, 0); } } $Thread = Format::catalogue_select($Catalogue,$Page,$PerPage,THREAD_CATALOGUE); if ($_GET['updatelastread'] != '0') { $LastPost = end($Thread); $LastPost = $LastPost['ID']; reset($Thread); if ($ThreadInfo['Posts'] <= $PerPage * $Page && $ThreadInfo['StickyPostID'] > $LastPost) { $LastPost = $ThreadInfo['StickyPostID']; } //Handle last read if (!$ThreadInfo['IsLocked'] || $ThreadInfo['IsSticky']) { $DB->query(" SELECT PostID FROM forums_last_read_topics WHERE UserID='$LoggedUser[ID]' AND TopicID='$ThreadID'"); list($LastRead) = $DB->next_record(); if ($LastRead < $LastPost) { $DB->query(" INSERT INTO forums_last_read_topics (UserID, TopicID, PostID) VALUES ('$LoggedUser[ID]', '$ThreadID', '".db_string($LastPost)."') ON DUPLICATE KEY UPDATE PostID='$LastPost'"); } } } //Handle subscriptions if (($UserSubscriptions = $Cache->get_value('subscriptions_user_'.$LoggedUser['ID'])) === false) { $DB->query("SELECT TopicID FROM users_subscriptions WHERE UserID = '$LoggedUser[ID]'"); $UserSubscriptions = $DB->collect(0); $Cache->cache_value('subscriptions_user_'.$LoggedUser['ID'],$UserSubscriptions,0); } if (empty($UserSubscriptions)) { $UserSubscriptions = array(); } if (in_array($ThreadID, $UserSubscriptions)) { $Cache->delete_value('subscriptions_user_new_'.$LoggedUser['ID']); } $DB->query(" UPDATE users_notify_quoted SET UnRead = false WHERE UserID = '$LoggedUser[ID]' AND Page = 'forums' AND PageID = '$ThreadID'"); $Cache->delete_value('notify_quoted_' . $LoggedUser['ID']); /* $QuoteNotificationsCount = $Cache->get_value('notify_quoted_' . $LoggedUser['ID']); if ($QuoteNotificationsCount > 0) { $Cache->cache_value('notify_quoted_' . $LoggedUser['ID'], $QuoteNotificationsCount - 1, 0); } else { $Cache->delete_value('notify_quoted_' . $LoggedUser['ID']); } */ // Start printing View::show_header($ThreadInfo['Title'] . ' < '.$Forums[$ForumID]['Name'].' < Forums','comments,subscriptions,bbcode'); ?>

Forums > >

get_value('polls_'.$ThreadID)) { $DB->query(" SELECT Question, Answers, Featured, Closed FROM forums_polls WHERE TopicID='$ThreadID'"); list($Question, $Answers, $Featured, $Closed) = $DB->next_record(MYSQLI_NUM, array(1)); $Answers = unserialize($Answers); $DB->query(" SELECT Vote, COUNT(UserID) FROM forums_polls_votes WHERE TopicID='$ThreadID' GROUP BY Vote"); $VoteArray = $DB->to_array(false, MYSQLI_NUM); $Votes = array(); foreach ($VoteArray as $VoteSet) { list($Key,$Value) = $VoteSet; $Votes[$Key] = $Value; } foreach (array_keys($Answers) as $i) { if (!isset($Votes[$i])) { $Votes[$i] = 0; } } $Cache->cache_value('polls_'.$ThreadID, array($Question, $Answers, $Votes, $Featured, $Closed), 0); } if (!empty($Votes)) { $TotalVotes = array_sum($Votes); $MaxVotes = max($Votes); } else { $TotalVotes = 0; $MaxVotes = 0; } $RevealVoters = in_array($ForumID, $ForumsRevealVoters); //Polls lose the you voted arrow thingy $DB->query(" SELECT Vote FROM forums_polls_votes WHERE UserID='".$LoggedUser['ID']."' AND TopicID='$ThreadID'"); list($UserResponse) = $DB->next_record(); if (!empty($UserResponse) && $UserResponse != 0) { $Answers[$UserResponse] = '» '.$Answers[$UserResponse]; } else { if (!empty($UserResponse) && $RevealVoters) { $Answers[$UserResponse] = '» '.$Answers[$UserResponse]; } } ?>
Poll View

    $Answer) { if (!empty($Votes[$i]) && $TotalVotes > 0) { $Ratio = $Votes[$i] / $MaxVotes; $Percent = $Votes[$i] / $TotalVotes; } else { $Ratio = 0; $Percent = 0; } ?>
  • (%)
  • 0) { ?>
  • (Blank) (%)

Votes:

query(" SELECT fpv.Vote AS Vote, GROUP_CONCAT(um.Username SEPARATOR ', ') FROM users_main AS um LEFT JOIN forums_polls_votes AS fpv ON um.ID = fpv.UserID WHERE TopicID = ".$ThreadID." GROUP BY fpv.Vote"); $StaffVotesTmp = $DB->to_array(); $StaffCount = count($StaffNames); $StaffVotes = array(); foreach ($StaffVotesTmp as $StaffVote) { list($Vote, $Names) = $StaffVote; $StaffVotes[$Vote] = $Names; $Names = explode(', ', $Names); $StaffNames = array_diff($StaffNames, $Names); } ?>
    $Answer) { ?>
  • -  (%) X
  • Blank -  (%)

Votes: /
Missing votes:

+
    $Answer) { //for ($i = 1, $il = count($Answers); $i <= $il; $i++) { ?>


+

$Post) { list($PostID, $AuthorID, $AddedTime, $Body, $EditedUserID, $EditedTime, $EditedUsername) = array_values($Post); list($AuthorID, $Username, $PermissionID, $Paranoia, $Artist, $Donor, $Warned, $Avatar, $Enabled, $UserTitle) = array_values(Users::user_info($AuthorID)); ?>
# - Quote - Edit 1) { ?> - Delete - X -
Report = $AuthorInfo['Class']) { ?> - Warn  
>
full_format($Body) ?>

« Last edited by
'Post reply', 'InputName' => 'thread', 'InputID' => $ThreadID, 'ForumID' => $ForumID, 'TextareaCols' => 90 )); } } if (check_perms('site_moderate_forums')) { ?>

Edit thread

Sticky tabindex="2" />
Locked tabindex="2" />
Title
Move thread
Delete thread