.
// display the threads in a forum.
require_once('../inc/util.inc');
require_once('../inc/time.inc');
require_once('../inc/forum.inc');
require_once('../inc/pm.inc');
check_get_args(array("id", "sort", "start"));
$id = get_int("id");
$sort_style = get_int("sort", true);
$start = get_int("start", true);
if (!$start) $start = 0;
$forum = BoincForum::lookup_id($id);
if (!$forum) error_page("forum ID not found");
$user = get_logged_in_user(false);
if (!is_forum_visible_to_user($forum, $user)) {
if ($user) {
remove_subscriptions_forum($user->id, $id);
}
error_page(tra("Not visible to you"));
}
BoincForumPrefs::lookup($user);
if (!$sort_style) {
// get the sort style either from the logged in user or a cookie
if ($user){
$sort_style = $user->prefs->forum_sorting;
} else {
if (isset($_COOKIE['sorting'])) {
list($sort_style,$thread_style)=explode("|",$_COOKIE['sorting']);
}
}
} else {
// set the sort style
if ($user){
$user->prefs->forum_sorting = $sort_style;
$user->prefs->update("forum_sorting=$sort_style");
} else {
list($old_style,$thread_style)=explode("|",$_COOKIE['sorting']);
send_cookie('sorting', implode("|",array($sort_style,$thread_style)), true);
}
}
switch ($forum->parent_type) {
case 0:
$category = BoincCategory::lookup_id($forum->category);
if ($category->is_helpdesk) {
page_head(tra("Questions and Answers").' : '.$forum->title);
} else {
page_head(tra("Message boards").' : '.$forum->title);
}
show_forum_header($user);
show_forum_title($category, $forum, NULL);
break;
case 1:
$team = BoincTeam::lookup_id($forum->category);
page_head(tra("Team message board for %1", "id>$team->name"));
show_forum_header($user);
show_team_forum_title($forum);
break;
}
echo '
";
show_forum($forum, $start, $sort_style, $user);
echo "
".
tra("This message board is available as an %1RSS feed%2", "id&setup=1>", " ");
page_tail();
// This function shows the threads for the given forum
// Starting from $start,
// using the given $sort_style (as defined in forum.php)
// and using the features for the logged in user in $user.
//
function show_forum($forum, $start, $sort_style, $user) {
$gotoStr = "";
$nav = show_page_nav($forum, $sort_style, $start);
if ($nav) {
$gotoStr = "
$nav
";
}
echo $gotoStr; // Display the navbar
start_forum_table(array(
"",
tra("Threads"),
tra("Posts"),
tra("Author"),
tra("Views"),
"".tra("Last post").""
));
$sticky_first = !$user || !$user->prefs->ignore_sticky_posts;
// Show hidden threads if logged in user is a moderator
//
$show_hidden = is_moderator($user, $forum);
$threads = get_forum_threads(
$forum->id, $start, THREADS_PER_PAGE,
$sort_style, $show_hidden, $sticky_first
);
if ($user) {
$subs = BoincSubscription::enum("userid=$user->id");
}
// Run through the list of threads, displaying each of them
$n = 0; $i=0;
foreach ($threads as $thread) {
$owner = BoincUser::lookup_id($thread->owner);
$unread = thread_is_unread($user, $thread);
//if ($thread->status==1){
// This is an answered helpdesk thread
if ($user && is_subscribed($thread, $subs)) {
echo '';
} else {
// Just a standard thread.
echo '
';
}
echo "";
if ($thread->hidden) {
show_image(IMAGE_HIDDEN, tra("This thread is hidden"), tra("hidden"));
} else if ($unread) {
if ($thread->sticky) {
if ($thread->locked) {
show_image(NEW_IMAGE_STICKY_LOCKED, tra("This thread is sticky and locked, and you haven't read it yet"), tra("sticky/locked/unread"));
} else {
show_image(NEW_IMAGE_STICKY, tra("This thread is sticky and you haven't read it yet"), tra("sticky/unread"));
}
} else {
if ($thread->locked) {
show_image(NEW_IMAGE_LOCKED, tra("You haven't read this thread yet, and it's locked"), tra("unread/locked"));
} else {
show_image(NEW_IMAGE, tra("You haven't read this thread yet"), tra("unread"));
}
}
} else {
if ($thread->sticky) {
if ($thread->locked) {
show_image(IMAGE_STICKY_LOCKED, tra("This thread is sticky and locked"), tra("sticky/locked"));
} else {
show_image(IMAGE_STICKY, tra("This thread is sticky"), tra("sticky"));
}
} else {
if ($thread->locked) {
show_image(IMAGE_LOCKED, tra("This thread is locked"), tra("locked"));
} else {
show_image(IMAGE_POST, tra("You read this thread"), tra("read"));
}
}
}
echo " | ";
$titlelength = 48;
$title = cleanup_title($thread->title);
if (strlen($title) > $titlelength) {
$title = substr($title, 0, $titlelength)."...";
}
echo "id\">$title
| ";
$n = ($n+1)%2;
echo '
'.($thread->replies+1).' |
'.user_links($owner).' |
'.$thread->views.' |
'.time_diff_str($thread->timestamp, time()).' |
';
flush();
}
end_table();
echo "
$gotoStr"; // show page links
}
?>