RE: Für Gäste keine Themen- und Beitragszahl - clayton - 31.10.2013
Puh, so jetzt mit etwas Ruhe und euren Hinweisen ist es mir gelungen. Ich weiß nicht was da für eine seltsame forumdisplay auf dem Server lag, aber mit der Original-Datei hat es mit den vorgeschlagenen Löschungen funktioniert...
RE: Für Gäste keine Themen- und Beitragszahl - fallennewyork - 01.11.2013
Hallo,
habe alle Änderungen genauso übernommen - funktioniert auch prima für die Gäste. Allerdings kann ich nun im eingeloggten Zustand kein Forum mehr aufrufen. Klicke ich auf den Forentitel - (nicht auf einen Beitrag) dann werde ich zu forumdisplay.php/jeweiligeforumsfid weitergeleitet und die Seite bleibt weiß.
Nehme ich alle Änderungen wieder heraus - funktioniert wieder alles prima - bis auf eben die Sichtbarkeit von Titel und Datum für Gäste bei den Beiträgen.
Habe euch meine forumdisplay.php einmal angehängt - ich hoffe jemand findet den Fehler (:
LG und vielen Dank im Vorraus (:
PHP-Code: <?php
/**
* MyBB 1.6
* Copyright 2010 MyBB Group, All Rights Reserved
*
* Website: http://mybb.com
* License: http://mybb.com/about/license
*
* $Id$
*/
define("IN_MYBB", 1);
define('THIS_SCRIPT', 'forumdisplay.php');
$templatelist = "forumdisplay,forumdisplay_thread,forumbit_depth1_cat,forumbit_depth1_forum,forumbit_depth2_cat,forumbit_depth2_forum,forumdisplay_subforums,forumdisplay_threadlist,forumdisplay_moderatedby,forumdisplay_newthread,forumdisplay_searchforum,forumdisplay_orderarrow,forumdisplay_thread_rating,forumdisplay_threadlist_rating,forumdisplay_threadlist_sortrating,forumbit_moderators,forumbit_subforums,forumbit_depth2_forum_lastpost";
$templatelist .= ",forumbit_depth1_forum_lastpost,forumdisplay_thread_multipage_page,forumdisplay_thread_multipage,forumdisplay_thread_multipage_more";
$templatelist .= ",multipage_prevpage,multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage";
$templatelist .= ",forumjump_advanced,forumjump_special,forumjump_bit,forumdisplay_password_wrongpass,forumdisplay_password";
$templatelist .= ",forumdisplay_usersbrowsing_user,forumdisplay_usersbrowsing,forumdisplay_inlinemoderation,forumdisplay_thread_modbit,forumdisplay_inlinemoderation_col,forumdisplay_inlinemoderation_selectall,forumdisplay_threadlist_clearpass";
$templatelist .= ",forumdisplay_announcements_announcement,forumdisplay_announcements,forumdisplay_threads_sep,forumbit_depth3_statusicon,forumbit_depth3,forumdisplay_sticky_sep,forumdisplay_thread_attachment_count,forumdisplay_threadlist_inlineedit_js,forumdisplay_rssdiscovery,forumdisplay_announcement_rating,forumdisplay_announcements_announcement_modbit,forumdisplay_rules,forumdisplay_rules_link,forumdisplay_thread_gotounread,forumdisplay_nothreads,forumdisplay_inlinemoderation_custom_tool,forumdisplay_inlinemoderation_custom";
require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
require_once MYBB_ROOT."inc/functions_forumlist.php";
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;
$orderarrow = $sortsel = array('rating' => '', 'subject' => '', 'starter' => '', 'started' => '', 'replies' => '', 'views' => '');
$ordersel = array('asc' => '', 'desc' => '');
$datecutsel = array(1 => '', 5 => '', 10 => '', 20 => '', 50 => '', 75 => '', 100 => '', 365 => '', 9999 => '');
$rules = '';
// Load global language phrases
$lang->load("forumdisplay");
$plugins->run_hooks("forumdisplay_start");
$fid = intval($mybb->input['fid']);
if($fid < 0)
{
switch($fid)
{
case "-1":
$location = "index.php";
break;
case "-2":
$location = "search.php";
break;
case "-3":
$location = "usercp.php";
break;
case "-4":
$location = "private.php";
break;
case "-5":
$location = "online.php";
break;
}
if($location)
{
header("Location: ".$location);
exit;
}
}
// Get forum info
$foruminfo = get_forum($fid);
if(!$foruminfo)
{
error($lang->error_invalidforum);
}
$archive_url = build_archive_link("forum", $fid);
$currentitem = $fid;
build_forum_breadcrumb($fid);
$parentlist = $foruminfo['parentlist'];
// To validate, turn & to & but support unicode
$foruminfo['name'] = preg_replace("#&(?!\#[0-9]+;)#si", "&", $foruminfo['name']);
$forumpermissions = forum_permissions(); $fpermissions = $forumpermissions[$fid];
if($fpermissions['canview'] != 1 || $fpermissions['canviewthreads'] != 1) {
error_no_permission();
}
if($mybb->user['uid'] == 0)
{
// Cookie'd forum read time
$forumsread = my_unserialize($mybb->cookies['mybb']['forumread']);
if(is_array($forumsread) && empty($forumsread))
{
if($mybb->cookies['mybb']['readallforums'])
{
$forumsread[$fid] = $mybb->cookies['mybb']['lastvisit'];
}
else
{
$forumsread = array();
}
}
$query = $db->simple_select("forums", "*", "active != 0", array("order_by" => "pid, disporder"));
}
else
{
// Build a forum cache from the database
$query = $db->query("
SELECT f.*, fr.dateline AS lastread
FROM ".TABLE_PREFIX."forums f
LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}')
WHERE f.active != 0
ORDER BY pid, disporder
");
}
while($forum = $db->fetch_array($query))
{
if($mybb->user['uid'] == 0 && $forumsread[$forum['fid']])
{
$forum['lastread'] = $forumsread[$forum['fid']];
}
$fcache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum;
}
// Get the forum moderators if the setting is enabled.
if($mybb->settings['modlist'] != 0)
{
$moderatorcache = $cache->read("moderators");
}
$bgcolor = "trow1";
if($mybb->settings['subforumsindex'] != 0)
{
$showdepth = 3;
}
else
{
$showdepth = 2;
}
$subforums = '';
$child_forums = build_forumbits($fid, 2);
$forums = $child_forums['forum_list'];
if($forums)
{
$lang->sub_forums_in = $lang->sprintf($lang->sub_forums_in, $foruminfo['name']);
eval("\$subforums = \"".$templates->get("forumdisplay_subforums")."\";");
}
$excols = "forumdisplay";
// Password protected forums
check_forum_password($foruminfo['fid']);
if($foruminfo['linkto'])
{
header("Location: {$foruminfo['linkto']}");
exit;
}
// Make forum jump...
if($mybb->settings['enableforumjump'] != 0)
{
$forumjump = build_forum_jump("", $fid, 1);
}
if($foruminfo['type'] == "f" && $foruminfo['open'] != 0)
{
eval("\$newthread = \"".$templates->get("forumdisplay_newthread")."\";");
}
if($fpermissions['cansearch'] != 0 && $foruminfo['type'] == "f")
{
eval("\$searchforum = \"".$templates->get("forumdisplay_searchforum")."\";");
}
// Gather forum stats
$has_announcements = $has_modtools = false;
$forum_stats = $cache->read("forumsdisplay");
if(is_array($forum_stats))
{
if(!empty($forum_stats[-1]['modtools']) || !empty($forum_stats[$fid]['modtools']))
{
// Mod tools are specific to forums, not parents
$has_modtools = true;
}
if(!empty($forum_stats[-1]['announcements']) || !empty($forum_stats[$fid]['announcements']))
{
// Global or forum-specific announcements
$has_announcements = true;
}
}
$done_moderators = array(
"users" => array(),
"groups" => array()
);
$moderators = '';
$parentlistexploded = explode(",", $parentlist);
foreach($parentlistexploded as $mfid)
{
// This forum has moderators
if(is_array($moderatorcache[$mfid]))
{
// Fetch each moderator from the cache and format it, appending it to the list
foreach($moderatorcache[$mfid] as $modtype)
{
foreach($modtype as $moderator)
{
if($moderator['isgroup'])
{
if(in_array($moderator['id'], $done_moderators['groups']))
{
continue;
}
$moderators .= $comma.htmlspecialchars_uni($moderator['title']);
$done_moderators['groups'][] = $moderator['id'];
}
else
{
if(in_array($moderator['id'], $done_moderators['users']))
{
continue;
}
$moderators .= "{$comma}<a href=\"".get_profile_link($moderator['id'])."\">".format_name(htmlspecialchars_uni($moderator['username']), $moderator['usergroup'], $moderator['displaygroup'])."</a>";
$done_moderators['users'][] = $moderator['id'];
}
$comma = $lang->comma;
}
}
if(!empty($forum_stats[$mfid]['announcements']))
{
$has_announcements = true;
}
}
$comma = '';
// If we have a moderators list, load the template
if($moderators)
{
eval("\$moderatedby = \"".$templates->get("forumdisplay_moderatedby")."\";");
}
else
{
$moderatedby = '';
}
// Get the users browsing this forum.
if($mybb->settings['browsingthisforum'] != 0)
{
$timecut = TIME_NOW - $mybb->settings['wolcutoff'];
$comma = '';
$guestcount = 0;
$membercount = 0;
$inviscount = 0;
$onlinemembers = '';
$doneusers = array();
$query = $db->query("
SELECT s.ip, s.uid, u.username, s.time, u.invisible, u.usergroup, u.usergroup, u.displaygroup
FROM ".TABLE_PREFIX."sessions s
LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)
WHERE s.time > '$timecut' AND location1='$fid' AND nopermission != 1
ORDER BY u.username ASC, s.time DESC
");
while($user = $db->fetch_array($query))
{
if($user['uid'] == 0)
{
++$guestcount;
}
else
{
if(empty($doneusers[$user['uid']]) || $doneusers[$user['uid']] < $user['time'])
{
$doneusers[$user['uid']] = $user['time'];
++$membercount;
if($user['invisible'] == 1)
{
$invisiblemark = "*";
++$inviscount;
}
else
{
$invisiblemark = '';
}
if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
{
$user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
$user['profilelink'] = build_profile_link($user['username'], $user['uid']);
eval("\$onlinemembers .= \"".$templates->get("forumdisplay_usersbrowsing_user", 1, 0)."\";");
$comma = $lang->comma;
}
}
}
}
$guestsonline = '';
if($guestcount)
{
$guestsonline = $lang->sprintf($lang->users_browsing_forum_guests, $guestcount);
}
$onlinesep = '';
if($guestcount && $onlinemembers)
{
$onlinesep = $lang->comma;
}
$invisonline = '';
if($inviscount && $mybb->usergroup['canviewwolinvis'] != 1 && ($inviscount != 1 && $mybb->user['invisible'] != 1))
{
$invisonline = $lang->sprintf($lang->users_browsing_forum_invis, $inviscount);
}
$onlinesep2 = '';
if($invisonline != '' && $guestcount)
{
$onlinesep2 = $lang->comma;
}
eval("\$usersbrowsing = \"".$templates->get("forumdisplay_usersbrowsing")."\";");
}
// Do we have any forum rules to show for this forum?
$forumrules = '';
if($foruminfo['rulestype'] != 0 && $foruminfo['rules'])
{
if(!$foruminfo['rulestitle'])
{
$foruminfo['rulestitle'] = $lang->sprintf($lang->forum_rules, $foruminfo['name']);
}
$rules_parser = array(
"allow_html" => 1,
"allow_mycode" => 1,
"allow_smilies" => 1,
"allow_imgcode" => 1
);
$foruminfo['rules'] = $parser->parse_message($foruminfo['rules'], $rules_parser);
if($foruminfo['rulestype'] == 1 || $foruminfo['rulestype'] == 3)
{
eval("\$rules = \"".$templates->get("forumdisplay_rules")."\";");
}
else if($foruminfo['rulestype'] == 2)
{
eval("\$rules = \"".$templates->get("forumdisplay_rules_link")."\";");
}
}
$bgcolor = "trow1";
// Set here to fetch only approved topics (and then below for a moderator we change this).
$visibleonly = "AND visible='1'";
$tvisibleonly = "AND t.visible='1'";
// Check if the active user is a moderator and get the inline moderation tools.
if(is_moderator($fid))
{
eval("\$inlinemodcol = \"".$templates->get("forumdisplay_inlinemoderation_col")."\";");
$ismod = true;
$inlinecount = "0";
$inlinecookie = "inlinemod_forum".$fid;
$visibleonly = " AND (visible='1' OR visible='0')";
$tvisibleonly = " AND (t.visible='1' OR t.visible='0')";
}
else
{
$inlinemod = '';
$ismod = false;
}
if(is_moderator($fid, "caneditposts") || $fpermissions['caneditposts'] == 1)
{
$can_edit_titles = 1;
}
else
{
$can_edit_titles = 0;
}
unset($rating);
// Pick out some sorting options.
// First, the date cut for the threads.
$datecut = 0;
if(empty($mybb->input['datecut']))
{
// If the user manually set a date cut, use it.
if($mybb->user['daysprune'])
{
$datecut = $mybb->user['daysprune'];
}
else
{
// If the forum has a non-default date cut, use it.
if(!empty($foruminfo['defaultdatecut']))
{
$datecut = $foruminfo['defaultdatecut'];
}
}
}
// If there was a manual date cut override, use it.
else
{
$datecut = intval($mybb->input['datecut']);
}
$datecut = intval($datecut);
$datecutsel[$datecut] = "selected=\"selected\"";
if($datecut > 0 && $datecut != 9999)
{
$checkdate = TIME_NOW - ($datecut * 86400);
$datecutsql = "AND (lastpost >= '$checkdate' OR sticky = '1')";
$datecutsql2 = "AND (t.lastpost >= '$checkdate' OR t.sticky = '1')";
}
else
{
$datecutsql = '';
$datecutsql2 = '';
}
// Pick the sort order.
if(!isset($mybb->input['order']) && !empty($foruminfo['defaultsortorder']))
{
$mybb->input['order'] = $foruminfo['defaultsortorder'];
}
if(!empty($mybb->input['order']))
{
$mybb->input['order'] = htmlspecialchars_uni($mybb->input['order']);
}
else
{
$mybb->input['order'] = '';
}
switch(my_strtolower($mybb->input['order']))
{
case "asc":
$sortordernow = "asc";
$ordersel['asc'] = "selected=\"selected\"";
$oppsort = $lang->desc;
$oppsortnext = "desc";
break;
default:
$sortordernow = "desc";
$ordersel['desc'] = "selected=\"selected\"";
$oppsort = $lang->asc;
$oppsortnext = "asc";
break;
}
// Sort by which field?
if(!isset($mybb->input['sortby']) && !empty($foruminfo['defaultsortby']))
{
$mybb->input['sortby'] = $foruminfo['defaultsortby'];
}
$t = "t.";
$sortfield2 = '';
if(!empty($mybb->input['sortby']))
{
$sortby = htmlspecialchars_uni($mybb->input['sortby']);
}
else
{
$mybb->input['sortby'] = '';
}
switch($mybb->input['sortby'])
{
case "subject":
$sortfield = "subject";
break;
case "replies":
$sortfield = "replies";
break;
case "views":
$sortfield = "views";
break;
case "starter":
$sortfield = "username";
break;
case "rating":
$t = "";
$sortfield = "averagerating";
$sortfield2 = ", t.totalratings DESC";
break;
case "started":
$sortfield = "dateline";
break;
default:
$sortby = "lastpost";
$sortfield = "lastpost";
$mybb->input['sortby'] = "lastpost";
break;
}
$sortsel['rating'] = ''; // Needs to be initialized in order to speed-up things. Fixes #2031
$sortsel[$mybb->input['sortby']] = "selected=\"selected\"";
// Pick the right string to join the sort URL
if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && isset($_SERVER['SEO_SUPPORT']) && $_SERVER['SEO_SUPPORT'] == 1))
{
$string = "?";
}
else
{
$string = "&";
}
// Are we viewing a specific page?
if(isset($mybb->input['page']) && is_numeric($mybb->input['page']))
{
$sorturl = get_forum_link($fid, $mybb->input['page']).$string."datecut=$datecut";
}
else
{
$sorturl = get_forum_link($fid).$string."datecut=$datecut";
}
// Needs to be initialized in order to speed-up things. Fixes #2031
$orderarrow = array('rating'=>'', 'subject'=>'', 'starter'=>'', 'replies'=>'', 'views'=>'');
eval("\$orderarrow['$sortby'] = \"".$templates->get("forumdisplay_orderarrow")."\";");
$threadcount = 0;
$useronly = $tuseronly = "";
if(isset($fpermissions['canonlyviewownthreads']) && $fpermissions['canonlyviewownthreads'] == 1)
{
$useronly = "AND uid={$mybb->user['uid']}";
$tuseronly = "AND t.uid={$mybb->user['uid']}";
}
// How many posts are there?
if($datecut > 0 || isset($fpermissions['canonlyviewownthreads']) && $fpermissions['canonlyviewownthreads'] == 1)
{
$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly $datecutsql");
$threadcount = $db->fetch_field($query, "threads");
}
else
{
$query = $db->simple_select("forums", "threads, unapprovedthreads", "fid = '{$fid}'", array('limit' => 1));
$forum_threads = $db->fetch_array($query);
$threadcount = $forum_threads['threads'];
if($ismod == true)
{
$threadcount += $forum_threads['unapprovedthreads'];
}
// If we have 0 threads double check there aren't any "moved" threads
if($threadcount == 0)
{
$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly", array('limit' => 1));
$threadcount = $db->fetch_field($query, "threads");
}
}
}
// How many pages are there?
if(!$mybb->settings['threadsperpage'])
{
$mybb->settings['threadsperpage'] = 20;
}
$perpage = $mybb->settings['threadsperpage'];
if(isset($mybb->input['page']) && intval($mybb->input['page']) > 0)
{
$page = intval($mybb->input['page']);
$start = ($page-1) * $perpage;
$pages = $threadcount / $perpage;
$pages = ceil($pages);
if($page > $pages || $page <= 0)
{
$start = 0;
$page = 1;
}
}
else
{
$start = 0;
$page = 1;
}
$end = $start + $perpage;
$lower = $start + 1;
$upper = $end;
if($upper > $threadcount)
{
$upper = $threadcount;
}
// Assemble page URL
if($mybb->input['sortby'] || $mybb->input['order'] || $mybb->input['datecut']) // Ugly URL
{
$page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED);
if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && isset($_SERVER['SEO_SUPPORT']) && $_SERVER['SEO_SUPPORT'] == 1))
{
$q = "?";
$and = '';
}
else
{
$q = '';
$and = "&";
}
if((!empty($foruminfo['defaultsortby']) && $sortby != $foruminfo['defaultsortby']) || (empty($foruminfo['defaultsortby']) && $sortby != "lastpost"))
{
$page_url .= "{$q}{$and}sortby={$sortby}";
$q = '';
$and = "&";
}
if($sortordernow != "desc")
{
$page_url .= "{$q}{$and}order={$sortordernow}";
$q = '';
$and = "&";
}
if($datecut > 0)
{
$page_url .= "{$q}{$and}datecut={$datecut}";
}
}
else
{
$page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED);
}
$multipage = multipage($threadcount, $perpage, $page, $page_url);
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $fpermissions['canviewthreads'] != 0)
{
$lang->load("ratethread");
switch($db->type)
{
case "pgsql":
$ratingadd = "CASE WHEN t.numratings=0 THEN 0 ELSE t.totalratings/t.numratings::numeric END AS averagerating, ";
break;
default:
$ratingadd = "(t.totalratings/t.numratings) AS averagerating, ";
}
$lpbackground = "trow2";
eval("\$ratingcol = \"".$templates->get("forumdisplay_threadlist_rating")."\";");
eval("\$ratingsort = \"".$templates->get("forumdisplay_threadlist_sortrating")."\";");
$colspan = "7";
}
else
{
if($sortfield == "averagerating")
{
$t = "t.";
$sortfield = "lastpost";
}
$ratingadd = '';
$lpbackground = "trow1";
$colspan = "6";
}
if($ismod)
{
++$colspan;
}
// Get Announcements
if($has_announcements == true)
{
$limit = '';
$announcements = '';
if($mybb->settings['announcementlimit'])
{
$limit = "LIMIT 0, ".$mybb->settings['announcementlimit'];
}
$sql = build_parent_list($fid, "fid", "OR", $parentlist);
$time = TIME_NOW;
$query = $db->query("
SELECT a.*, u.username
FROM ".TABLE_PREFIX."announcements a
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
WHERE a.startdate<='$time' AND (a.enddate>='$time' OR a.enddate='0') AND ($sql OR fid='-1')
ORDER BY a.startdate DESC $limit
");
// See if this announcement has been read in our announcement array
$cookie = array();
if(isset($mybb->cookies['mybb']['announcements']))
{
$cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements']));
}
$announcementlist = '';
$bgcolor = alt_trow(true); // Reset the trow colors
while($announcement = $db->fetch_array($query))
{
if($announcement['startdate'] > $mybb->user['lastvisit'] && !$cookie[$announcement['aid']])
{
$new_class = ' class="subject_new"';
$folder = "newfolder";
}
else
{
$new_class = ' class="subject_old"';
$folder = "folder";
}
// Mmm, eat those announcement cookies if they're older than our last visit
if($cookie[$announcement['aid']] < $mybb->user['lastvisit'])
{
unset($cookie[$announcement['aid']]);
}
$announcement['announcementlink'] = get_announcement_link($announcement['aid']);
$announcement['subject'] = $parser->parse_badwords($announcement['subject']);
$announcement['subject'] = htmlspecialchars_uni($announcement['subject']);
$postdate = my_date($mybb->settings['dateformat'], $announcement['startdate']);
$posttime = my_date($mybb->settings['timeformat'], $announcement['startdate']);
$announcement['profilelink'] = build_profile_link($announcement['username'], $announcement['uid']);
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $fpermissions['canviewthreads'] != 0)
{
eval("\$rating = \"".$templates->get("forumdisplay_announcement_rating")."\";");
$lpbackground = "trow2";
}
else
{
$rating = '';
$lpbackground = "trow1";
}
if($ismod)
{
eval("\$modann = \"".$templates->get("forumdisplay_announcements_announcement_modbit")."\";");
}
else
{
$modann = '';
}
$plugins->run_hooks("forumdisplay_announcement");
eval("\$announcements .= \"".$templates->get("forumdisplay_announcements_announcement")."\";");
$bgcolor = alt_trow();
}
if($announcements)
{
eval("\$announcementlist = \"".$templates->get("forumdisplay_announcements")."\";");
$shownormalsep = true;
}
if(empty($cookie))
{
// Clean up cookie crumbs
my_setcookie('mybb[announcements]', 0, (TIME_NOW - (60*60*24*365)));
}
else if(!empty($cookie))
{
my_setcookie("mybb[announcements]", addslashes(serialize($cookie)), -1);
}
}
else
{
$announcementlist = '';
}
$tids = $threadcache = array();
$icon_cache = $cache->read("posticons");
// Start Getting Threads
$query = $db->query("
SELECT t.*, {$ratingadd}t.username AS threadusername, u.username
FROM ".TABLE_PREFIX."threads t
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
WHERE t.fid='$fid' $tuseronly $tvisibleonly $datecutsql2
ORDER BY t.sticky DESC, {$t}{$sortfield} $sortordernow $sortfield2
LIMIT $start, $perpage
");
$ratings = false;
$moved_threads = array();
while($thread = $db->fetch_array($query))
{
$threadcache[$thread['tid']] = $thread;
if($thread['numratings'] > 0 && $ratings == false)
{
$ratings = true; // Looks for ratings in the forum
}
// If this is a moved thread - set the tid for participation marking and thread read marking to that of the moved thread
if(substr($thread['closed'], 0, 5) == "moved")
{
$tid = substr($thread['closed'], 6);
if(!$tids[$tid])
{
$moved_threads[$tid] = $thread['tid'];
$tids[$thread['tid']] = $tid;
}
}
// Otherwise - set it to the plain thread ID
else
{
$tids[$thread['tid']] = $thread['tid'];
if(isset($moved_threads[$thread['tid']]))
{
unset($moved_threads[$thread['tid']]);
}
}
}
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $mybb->user['uid'] && !empty($tids) && $ratings == true)
{
// Check if we've rated threads on this page
// Guests get the pleasure of not being ID'd, but will be checked when they try and rate
$imp = implode(",", $tids);
$query = $db->simple_select("threadratings", "tid, uid", "tid IN ({$imp}) AND uid = '{$mybb->user['uid']}'");
while($rating = $db->fetch_array($query))
{
$threadcache[$rating['tid']]['rated'] = 1;
}
}
}
// If user has moderation tools available, prepare the Select All feature
$num_results = $db->num_rows($query);
if(is_moderator($fid) && $num_results > 0)
{
$lang->page_selected = $lang->sprintf($lang->page_selected, intval($num_results));
$lang->select_all = $lang->sprintf($lang->select_all, intval($threadcount));
$lang->all_selected = $lang->sprintf($lang->all_selected, intval($threadcount));
eval("\$selectall = \"".$templates->get("forumdisplay_inlinemoderation_selectall")."\";");
}
if(!empty($tids))
{
$tids = implode(",", $tids);
}
// Check participation by the current user in any of these threads - for 'dot' folder icons
if($mybb->settings['dotfolders'] != 0 && $mybb->user['uid'] && !empty($threadcache))
{
$query = $db->simple_select("posts", "tid,uid", "uid='{$mybb->user['uid']}' AND tid IN ({$tids}) {$visibleonly}");
while($post = $db->fetch_array($query))
{
if(!empty($moved_threads[$post['tid']]))
{
$post['tid'] = $moved_threads[$post['tid']];
}
if($threadcache[$post['tid']])
{
$threadcache[$post['tid']]['doticon'] = 1;
}
}
}
// Read threads
if($mybb->user['uid'] && $mybb->settings['threadreadcut'] > 0 && !empty($threadcache))
{
$query = $db->simple_select("threadsread", "*", "uid='{$mybb->user['uid']}' AND tid IN ({$tids})");
while($readthread = $db->fetch_array($query))
{
if(!empty($moved_threads[$readthread['tid']]))
{
$readthread['tid'] = $moved_threads[$readthread['tid']];
}
if($threadcache[$readthread['tid']])
{
$threadcache[$readthread['tid']]['lastread'] = $readthread['dateline'];
}
}
}
if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'])
{
$query = $db->simple_select("forumsread", "dateline", "fid='{$fid}' AND uid='{$mybb->user['uid']}'");
$forum_read = $db->fetch_field($query, "dateline");
$read_cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;
if($forum_read == 0 || $forum_read < $read_cutoff)
{
$forum_read = $read_cutoff;
}
}
else
{
$forum_read = my_get_array_cookie("forumread", $fid);
if($mybb->cookies['mybb']['readallforums'] && !$forum_read)
{
$forum_read = $mybb->cookies['mybb']['lastvisit'];
}
}
$unreadpost = 0;
$threads = '';
$load_inline_edit_js = 0;
if(!empty($threadcache))
{
if(!$mybb->settings['maxmultipagelinks'])
{
$mybb->settings['maxmultipagelinks'] = 5;
}
if(!$mybb->settings['postsperpage'])
{
$mybb->settings['postperpage'] = 20;
}
foreach($threadcache as $thread)
{
$plugins->run_hooks("forumdisplay_thread");
$moved = explode("|", $thread['closed']);
if($thread['visible'] == 0)
{
$bgcolor = "trow_shaded";
}
else
{
$bgcolor = alt_trow();
}
if($thread['sticky'] == 1)
{
$thread_type_class = " forumdisplay_sticky";
}
else
{
$thread_type_class = " forumdisplay_regular";
}
$folder = '';
$prefix = '';
$thread['author'] = $thread['uid'];
if(!$thread['username'])
{
$thread['username'] = $thread['threadusername'];
$thread['profilelink'] = $thread['threadusername'];
}
else
{
$thread['profilelink'] = build_profile_link($thread['username'], $thread['uid']);
}
// If this thread has a prefix, insert a space between prefix and subject
$thread['threadprefix'] = $threadprefix = '';
if($thread['prefix'] != 0)
{
$threadprefix = build_prefixes($thread['prefix']);
$thread['threadprefix'] = $threadprefix['displaystyle'].' ';
}
$thread['subject'] = $parser->parse_badwords($thread['subject']);
$thread['subject'] = htmlspecialchars_uni($thread['subject']);
if($thread['icon'] > 0 && $icon_cache[$thread['icon']])
{
$icon = $icon_cache[$thread['icon']];
$icon = "<img src=\"{$icon['path']}\" alt=\"{$icon['name']}\" />";
}
else
{
$icon = " ";
}
$prefix = '';
if($thread['poll'])
{
$prefix = $lang->poll_prefix;
}
if($thread['sticky'] == "1" && !$donestickysep)
{
eval("\$threads .= \"".$templates->get("forumdisplay_sticky_sep")."\";");
$shownormalsep = true;
$donestickysep = true;
}
else if($thread['sticky'] == 0 && !empty($shownormalsep))
{
eval("\$threads .= \"".$templates->get("forumdisplay_threads_sep")."\";");
$shownormalsep = false;
}
$rating = '';
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0)
{
if($moved[0] == "moved")
{
$rating = "<td class=\"{$bgcolor}\" style=\"text-align: center;\">-</td>";
}
else
{
$thread['averagerating'] = floatval(round($thread['averagerating'], 2));
$thread['width'] = intval(round($thread['averagerating']))*20;
$thread['numratings'] = intval($thread['numratings']);
$not_rated = '';
if(!isset($thread['rated']) || empty($thread['rated']))
{
$not_rated = ' star_rating_notrated';
}
$ratingvotesav = $lang->sprintf($lang->rating_votes_average, $thread['numratings'], $thread['averagerating']);
eval("\$rating = \"".$templates->get("forumdisplay_thread_rating")."\";");
}
}
$thread['pages'] = 0;
$thread['multipage'] = '';
$threadpages = '';
$morelink = '';
$thread['posts'] = $thread['replies'] + 1;
if($thread['unapprovedposts'] > 0 && $ismod)
{
$thread['posts'] += $thread['unapprovedposts'];
}
if($thread['posts'] > $mybb->settings['postsperpage'])
{
$thread['pages'] = $thread['posts'] / $mybb->settings['postsperpage'];
$thread['pages'] = ceil($thread['pages']);
if($thread['pages'] > $mybb->settings['maxmultipagelinks'])
{
$pagesstop = $mybb->settings['maxmultipagelinks'] - 1;
$page_link = get_thread_link($thread['tid'], $thread['pages']);
eval("\$morelink = \"".$templates->get("forumdisplay_thread_multipage_more")."\";");
}
else
{
$pagesstop = $thread['pages'];
}
for($i = 1; $i <= $pagesstop; ++$i)
{
$page_link = get_thread_link($thread['tid'], $i);
eval("\$threadpages .= \"".$templates->get("forumdisplay_thread_multipage_page")."\";");
}
eval("\$thread['multipage'] = \"".$templates->get("forumdisplay_thread_multipage")."\";");
}
else
{
$threadpages = '';
$morelink = '';
$thread['multipage'] = '';
}
if($ismod)
{
if(isset($mybb->cookies[$inlinecookie]) && my_strpos($mybb->cookies[$inlinecookie], "|{$thread['tid']}|"))
{
$inlinecheck = "checked=\"checked\"";
++$inlinecount;
}
else
{
$inlinecheck = '';
}
$multitid = $thread['tid'];
eval("\$modbit = \"".$templates->get("forumdisplay_thread_modbit")."\";");
}
else
{
$modbit = '';
}
if($moved[0] == "moved")
{
$prefix = $lang->moved_prefix;
$thread['tid'] = $moved[1];
$thread['replies'] = "-";
$thread['views'] = "-";
}
$thread['threadlink'] = get_thread_link($thread['tid']);
$thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost");
// Determine the folder
$folder = '';
$folder_label = '';
if($thread['doticon'])
{
$folder = "dot_";
$folder_label .= $lang->icon_dot;
}
$gotounread = '';
$isnew = 0;
$donenew = 0;
if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'] && $thread['lastpost'] > $forum_read)
{
if($thread['lastread'])
{
$last_read = $thread['lastread'];
}
else
{
$last_read = $read_cutoff;
}
}
else
{
$last_read = my_get_array_cookie("threadread", $thread['tid']);
}
if($forum_read > $last_read)
{
$last_read = $forum_read;
}
if($thread['lastpost'] > $last_read && $moved[0] != "moved")
{
$folder .= "new";
$folder_label .= $lang->icon_new;
$new_class = "subject_new";
$thread['newpostlink'] = get_thread_link($thread['tid'], 0, "newpost");
eval("\$gotounread = \"".$templates->get("forumdisplay_thread_gotounread")."\";");
$unreadpost = 1;
}
else
{
$folder_label .= $lang->icon_no_new;
$new_class = "subject_old";
}
if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews'])
{
$folder .= "hot";
$folder_label .= $lang->icon_hot;
}
if($thread['closed'] == 1)
{
$folder .= "lock";
$folder_label .= $lang->icon_lock;
}
if($moved[0] == "moved")
{
$folder = "move";
$gotounread = '';
}
$folder .= "folder";
$inline_edit_tid = $thread['tid'];
// If this user is the author of the thread and it is not closed or they are a moderator, they can edit
if(($thread['uid'] == $mybb->user['uid'] && $thread['closed'] != 1 && $mybb->user['uid'] != 0 && $can_edit_titles == 1) || $ismod == true)
{
$inline_edit_class = "subject_editable";
}
else
{
$inline_edit_class = "";
}
$load_inline_edit_js = 1;
$lastpostdate = my_date($mybb->settings['dateformat'], $thread['lastpost']);
$lastposttime = my_date($mybb->settings['timeformat'], $thread['lastpost']);
$lastposter = $thread['lastposter'];
$lastposteruid = $thread['lastposteruid'];
// Don't link to guest's profiles (they have no profile).
if($lastposteruid == 0)
{
$lastposterlink = $lastposter;
}
else
{
$lastposterlink = build_profile_link($lastposter, $lastposteruid);
}
$thread['replies'] = my_number_format($thread['replies']);
$thread['views'] = my_number_format($thread['views']);
// Threads and posts requiring moderation
if($thread['unapprovedposts'] > 0 && $ismod)
{
if($thread['unapprovedposts'] > 1)
{
$unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_posts_count, $thread['unapprovedposts']);
}
else
{
$unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_post_count, 1);
}
$unapproved_posts = " <span title=\"{$unapproved_posts_count}\">(".my_number_format($thread['unapprovedposts']).")</span>";
}
else
{
$unapproved_posts = '';
}
// If this thread has 1 or more attachments show the papperclip
if($thread['attachmentcount'] > 0)
{
if($thread['attachmentcount'] > 1)
{
$attachment_count = $lang->sprintf($lang->attachment_count_multiple, $thread['attachmentcount']);
}
else
{
$attachment_count = $lang->attachment_count;
}
eval("\$attachment_count = \"".$templates->get("forumdisplay_thread_attachment_count")."\";");
}
else
{
$attachment_count = '';
}
eval("\$threads .= \"".$templates->get("forumdisplay_thread")."\";");
}
$customthreadtools = '';
if($ismod)
{
if(is_moderator($fid, "canusecustomtools") && $has_modtools == true)
{
switch($db->type)
{
case "pgsql":
case "sqlite":
$query = $db->simple_select("modtools", 'tid, name', "(','||forums||',' LIKE '%,$fid,%' OR ','||forums||',' LIKE '%,-1,%' OR forums='') AND type = 't'");
break;
default:
$query = $db->simple_select("modtools", 'tid, name', "(CONCAT(',',forums,',') LIKE '%,$fid,%' OR CONCAT(',',forums,',') LIKE '%,-1,%' OR forums='') AND type = 't'");
}
while($tool = $db->fetch_array($query))
{
eval("\$customthreadtools .= \"".$templates->get("forumdisplay_inlinemoderation_custom_tool")."\";");
}
if($customthreadtools)
{
eval("\$customthreadtools = \"".$templates->get("forumdisplay_inlinemoderation_custom")."\";");
}
}
eval("\$inlinemod = \"".$templates->get("forumdisplay_inlinemoderation")."\";");
}
}
// If there are no unread threads in this forum and no unread child forums - mark it as read
require_once MYBB_ROOT."inc/functions_indicators.php";
$unread_threads = fetch_unread_count($fid);
if($unread_threads !== false && $unread_threads == 0 && empty($unread_forums))
{
mark_forum_read($fid);
}
// Subscription status
$add_remove_subscription = 'add';
$add_remove_subscription_text = $lang->subscribe_forum;
if($mybb->user['uid'])
{
$query = $db->simple_select("forumsubscriptions", "fid", "fid='".$fid."' AND uid='{$mybb->user['uid']}'", array('limit' => 1));
if($db->fetch_field($query, 'fid'))
{
$add_remove_subscription = 'remove';
$add_remove_subscription_text = $lang->unsubscribe_forum;
}
}
// Is this a real forum with threads?
if($foruminfo['type'] != "c")
{
if(!$threadcount)
{
eval("\$threads = \"".$templates->get("forumdisplay_nothreads")."\";");
}
$clearstoredpass = '';
if($foruminfo['password'] != '')
{
eval("\$clearstoredpass = \"".$templates->get("forumdisplay_threadlist_clearpass")."\";");
}
if($load_inline_edit_js == 1)
{
eval("\$inline_edit_js = \"".$templates->get("forumdisplay_threadlist_inlineedit_js")."\";");
}
$post_code_string = '';
if($mybb->user['uid'])
{
$post_code_string = "&my_post_key=".$mybb->post_code;
}
$lang->rss_discovery_forum = $lang->sprintf($lang->rss_discovery_forum, htmlspecialchars_uni(strip_tags($foruminfo['name'])));
eval("\$rssdiscovery = \"".$templates->get("forumdisplay_rssdiscovery")."\";");
eval("\$threadslist = \"".$templates->get("forumdisplay_threadlist")."\";");
}
else
{
$rssdiscovery = '';
$threadslist = '';
if(empty($forums))
{
error($lang->error_containsnoforums);
}
}
$plugins->run_hooks("forumdisplay_end");
$foruminfo['name'] = strip_tags($foruminfo['name']);
eval("\$forums = \"".$templates->get("forumdisplay")."\";");
output_page($forums);
?>
RE: Für Gäste keine Themen- und Beitragszahl - NetHunter - 01.11.2013
Du hast die schliessenden Klammern } nicht entfernt.
RE: Für Gäste keine Themen- und Beitragszahl - fallennewyork - 01.11.2013
Welche Zeile? Bzw wo ungefähr?
RE: Für Gäste keine Themen- und Beitragszahl - NetHunter - 01.11.2013
577 und 837.
RE: Für Gäste keine Themen- und Beitragszahl - fallennewyork - 01.11.2013
Okay an den Stellen hab ich keine Klammern...
EDIT:
Habs gefunden <3 Danke (: War bei mir etwas viel weiter untern (:
RE: Für Gäste keine Themen- und Beitragszahl - NetHunter - 01.11.2013
Der Code den du gepostet hast enthält auch jede Menge Leerzeilen die da eigentlich nicht hingehören. Hauptsache es läuft jetzt!
RE: Für Gäste keine Themen- und Beitragszahl - Kiss.ME - 08.12.2013
Hallöchen,
irgendwie mag die Technik mich heute nicht. Ich hab mehrmals alles so geändert, wie es in Melometlar Beitrag stand, aber bei mir hat sich rein gar nichts geändert. Die Gäste sehen immer noch keine Themen.
Meine functions_forumlist.php sieht so aus
PHP-Code: <?php /** * MyBB 1.6 * Copyright 2010 MyBB Group, All Rights Reserved * * Website: http://mybb.com * License: http://mybb.com/about/license * * $Id$ */
/** * Build a list of forum bits. * * @param int The parent forum to fetch the child forums for (0 assumes all) * @param int The depth to return forums with. * @return array Array of information regarding the child forums of this parent forum */ function build_forumbits($pid=0, $depth=1) { global $db, $fcache, $moderatorcache, $forumpermissions, $theme, $mybb, $templates, $bgcolor, $collapsed, $lang, $showdepth, $plugins, $parser, $forum_viewers; static $private_forums; $forum_listing = '';
// If no forums exist with this parent, do nothing if(empty($fcache[$pid]) || !is_array($fcache[$pid])) { return; }
$parent_counters['threads'] = 0; $parent_counters['posts'] = 0; $parent_counters['unapprovedposts'] = 0; $parent_counters['unapprovedthreads'] = 0; $parent_counters['viewers'] = 0; $forum_list = '';
// Foreach of the forums in this parent foreach($fcache[$pid] as $parent) { foreach($parent as $forum) { $subforums = $sub_forums = ''; $lastpost_data = array( 'lastpost' => 0 ); $forum_viewers_text = ''; $forum_viewers_text_plain = '';
// Get the permissions for this forum $permissions = $forumpermissions[$forum['fid']];
// If this user doesnt have permission to view this forum and we're hiding private forums, skip this forum if($permissions['canview'] != 1 && $mybb->settings['hideprivateforums'] == 1) { continue; } $forum = $plugins->run_hooks("build_forumbits_forum", $forum);
// Build the link to this forum $forum_url = get_forum_link($forum['fid']);
// This forum has a password, and the user isn't authenticated with it - hide post information $hideinfo = $hidecounters = false; $hidelastpostinfo = false; $showlockicon = 0; if(isset($permissions['canviewthreads']) && $permissions['canviewthreads'] != 1) { $hideinfo = false; } if(isset($permissions['canonlyviewownthreads']) && $permissions['canonlyviewownthreads'] == 1) { $hidecounters = true;
// If we only see our own threads, find out if there's a new post in one of them so the lightbulb shows if(!is_array($private_forums)) { $private_forums = $fids = array(); foreach($fcache as $fcache_p) { foreach($fcache_p as $parent_p) { foreach($parent_p as $forum_p) { if($forumpermissions[$forum_p['fid']]['canonlyviewownthreads']) { $fids[] = $forum_p['fid']; } } } }
if(!empty($fids)) { $fids = implode(',', $fids); $query = $db->simple_select("threads", "tid, fid, subject, lastpost, lastposter, lastposteruid", "uid = '{$mybb->user['uid']}' AND fid IN ({$fids})", array("order_by" => "lastpost", "order_dir" => "desc"));
while($thread = $db->fetch_array($query)) { if(!$private_forums[$thread['fid']]) { $private_forums[$thread['fid']] = $thread; } } } }
if($private_forums[$forum['fid']]['lastpost']) { $forum['lastpost'] = $private_forums[$forum['fid']]['lastpost']; $lastpost_data = array( "lastpost" => $private_forums[$forum['fid']]['lastpost'], "lastpostsubject" => $private_forums[$forum['fid']]['subject'], "lastposter" => $private_forums[$forum['fid']]['lastposter'], "lastposttid" => $private_forums[$forum['fid']]['tid'], "lastposteruid" => $private_forums[$forum['fid']]['lastposteruid'] ); } } else { $lastpost_data = array( "lastpost" => $forum['lastpost'], "lastpostsubject" => $forum['lastpostsubject'], "lastposter" => $forum['lastposter'], "lastposttid" => $forum['lastposttid'], "lastposteruid" => $forum['lastposteruid'] ); }
if($forum['password'] != '' && $mybb->cookies['forumpass'][$forum['fid']] != md5($mybb->user['uid'].$forum['password'])) { $hideinfo = true; $showlockicon = 1; }
// Fetch subforums of this forum if(isset($fcache[$forum['fid']])) { $forum_info = build_forumbits($forum['fid'], $depth+1);
// Increment forum counters with counters from child forums $forum['threads'] += $forum_info['counters']['threads']; $forum['posts'] += $forum_info['counters']['posts']; $forum['unapprovedthreads'] += $forum_info['counters']['unapprovedthreads']; $forum['unapprovedposts'] += $forum_info['counters']['unapprovedposts'];
if(!empty($forum_info['counters']['viewing'])) { $forum['viewers'] += $forum_info['counters']['viewing']; }
// If the child forums' lastpost is greater than the one for this forum, set it as the child forums greatest. if($forum_info['lastpost']['lastpost'] > $lastpost_data['lastpost']) { $lastpost_data = $forum_info['lastpost']; /* // If our subforum is unread, then so must be our parents. Force our parents to unread as well if(strstr($forum_info['lightbulb']['folder'], "on") !== false) { $forum['lastread'] = 0; } // Otherwise, if we have an explicit record in the db, we must make sure that it is explicitly set else { $lastpost_data['lastpost'] = $forum['lastpost']; }*/ }
$sub_forums = $forum_info['forum_list']; }
// If we are hiding information (lastpost) because we aren't authenticated against the password for this forum, remove them if($hidelastpostinfo == true) { $lastpost_data = array( 'lastpost' => 0 ); } // If the current forums lastpost is greater than other child forums of the current parent, overwrite it if(!isset($parent_lastpost) || $lastpost_data['lastpost'] > $parent_lastpost['lastpost']) { $parent_lastpost = $lastpost_data; }
if(is_array($forum_viewers) && isset($forum_viewers[$forum['fid']]) && $forum_viewers[$forum['fid']] > 0) { $forum['viewers'] = $forum_viewers[$forum['fid']]; }
// Increment the counters for the parent forum (returned later) if($hideinfo != true && $hidecounters != true) { $parent_counters['threads'] += $forum['threads']; $parent_counters['posts'] += $forum['posts']; $parent_counters['unapprovedposts'] += $forum['unapprovedposts']; $parent_counters['unapprovedthreads'] += $forum['unapprovedthreads'];
if(!empty($forum['viewers'])) { $parent_counters['viewers'] += $forum['viewers']; } }
// Done with our math, lets talk about displaying - only display forums which are under a certain depth if($depth > $showdepth) { continue; } // Get the lightbulb status indicator for this forum based on the lastpost $lightbulb = get_forum_lightbulb($forum, $lastpost_data, $showlockicon);
// Fetch the number of unapproved threads and posts for this forum $unapproved = get_forum_unapproved($forum); if($hideinfo == true) { unset($unapproved); }
// Sanitize name and description of forum. $forum['name'] = preg_replace("#&(?!\#[0-9]+;)#si", "&", $forum['name']); // Fix & but allow unicode $forum['description'] = preg_replace("#&(?!\#[0-9]+;)#si", "&", $forum['description']); // Fix & but allow unicode $forum['name'] = preg_replace("#&([^\#])(?![a-z1-4]{1,10};)#i", "&$1", $forum['name']); $forum['description'] = preg_replace("#&([^\#])(?![a-z1-4]{1,10};)#i", "&$1", $forum['description']);
// If this is a forum and we've got subforums of it, load the subforums list template if($depth == 2 && $sub_forums) { eval("\$subforums = \"".$templates->get("forumbit_subforums")."\";"); } // A depth of three indicates a comma separated list of forums within a forum else if($depth == 3) { if($donecount < $mybb->settings['subforumsindex']) { $statusicon = '';
// Showing mini status icons for this forum if($mybb->settings['subforumsstatusicons'] == 1) { $lightbulb['folder'] = "mini".$lightbulb['folder']; eval("\$statusicon = \"".$templates->get("forumbit_depth3_statusicon", 1, 0)."\";"); }
// Fetch the template and append it to the list eval("\$forum_list .= \"".$templates->get("forumbit_depth3", 1, 0)."\";"); $comma = $lang->comma; }
// Have we reached our max visible subforums? put a nice message and break out of the loop ++$donecount; if($donecount == $mybb->settings['subforumsindex']) { if(subforums_count($fcache[$pid]) > $donecount) { $forum_list .= $comma.$lang->sprintf($lang->more_subforums, (subforums_count($fcache[$pid]) - $donecount)); } } continue; }
// Forum is a category, set template type if($forum['type'] == 'c') { $forumcat = '_cat'; } // Forum is a standard forum, set template type else { $forumcat = '_forum'; }
if($forum['linkto'] == '') { // No posts have been made in this forum - show never text if(($lastpost_data['lastpost'] == 0 || $lastpost_data['lastposter'] == '') && $hideinfo != true) { $lastpost = "<div style=\"text-align: center;\">{$lang->lastpost_never}</div>"; } elseif($hideinfo != true) { // Format lastpost date and time $lastpost_date = my_date($mybb->settings['dateformat'], $lastpost_data['lastpost']); $lastpost_time = my_date($mybb->settings['timeformat'], $lastpost_data['lastpost']);
// Set up the last poster, last post thread id, last post subject and format appropriately $lastpost_profilelink = build_profile_link($lastpost_data['lastposter'], $lastpost_data['lastposteruid']); $lastpost_link = get_thread_link($lastpost_data['lastposttid'], 0, "lastpost"); $lastpost_subject = $full_lastpost_subject = $parser->parse_badwords($lastpost_data['lastpostsubject']); if(my_strlen($lastpost_subject) > 25) { $lastpost_subject = my_substr($lastpost_subject, 0, 25)."..."; } $lastpost_subject = htmlspecialchars_uni($lastpost_subject); $full_lastpost_subject = htmlspecialchars_uni($full_lastpost_subject); // Call lastpost template if($depth != 1) { eval("\$lastpost = \"".$templates->get("forumbit_depth{$depth}_forum_lastpost")."\";"); } }
if($mybb->settings['showforumviewing'] != 0 && $forum['viewers'] > 0) { if($forum['viewers'] == 1) { $forum_viewers_text = $lang->viewing_one; } else { $forum_viewers_text = $lang->sprintf($lang->viewing_multiple, $forum['viewers']); } $forum_viewers_text_plain = $forum_viewers_text; $forum_viewers_text = "<span class=\"smalltext\">{$forum_viewers_text}</span>"; } } // If this forum is a link or is password protected and the user isn't authenticated, set counters to "-" if($forum['linkto'] != '' || $hideinfo == true || $hidecounters == true) { $posts = "-"; $threads = "-"; } // Otherwise, format thread and post counts else { $posts = my_number_format($forum['posts']); $threads = my_number_format($forum['threads']); } // If this forum is a link or is password protected and the user isn't authenticated, set lastpost to "-" if($forum['linkto'] != '' || $hideinfo == true || $hidelastpostinfo == true) { $lastpost = "<div style=\"text-align: center;\">-</div>"; }
// Moderator column is not off if($mybb->settings['modlist'] != 0) { $done_moderators = array( "users" => array(), "groups" => array() ); $moderators = ''; // Fetch list of moderators from this forum and its parents $parentlistexploded = explode(',', $forum['parentlist']); foreach($parentlistexploded as $mfid) { // This forum has moderators if(is_array($moderatorcache[$mfid])) { // Fetch each moderator from the cache and format it, appending it to the list foreach($moderatorcache[$mfid] as $modtype) { foreach($modtype as $moderator) { if($moderator['isgroup']) { if(in_array($moderator['id'], $done_moderators['groups'])) { continue; } $moderators .= $comma.htmlspecialchars_uni($moderator['title']); $done_moderators['groups'][] = $moderator['id']; } else { if(in_array($moderator['id'], $done_moderators['users'])) { continue; } $moderators .= "{$comma}<a href=\"".get_profile_link($moderator['id'])."\">".htmlspecialchars_uni($moderator['username'])."</a>"; $done_moderators['users'][] = $moderator['id']; } $comma = $lang->comma; } } } } $comma = '';
// If we have a moderators list, load the template if($moderators) { eval("\$modlist = \"".$templates->get("forumbit_moderators")."\";"); } else { $modlist = ''; } }
// Descriptions aren't being shown - blank them if($mybb->settings['showdescriptions'] == 0) { $forum['description'] = ''; }
// Check if this category is either expanded or collapsed and hide it as necessary. $expdisplay = ''; $collapsed_name = "cat_{$forum['fid']}_c"; if(isset($collapsed[$collapsed_name]) && $collapsed[$collapsed_name] == "display: show;") { $expcolimage = "collapse_collapsed.gif"; $expdisplay = "display: none;"; $expaltext = "[+]"; } else { $expcolimage = "collapse.gif"; $expaltext = "[-]"; }
// Swap over the alternate backgrounds $bgcolor = alt_trow();
// Add the forum to the list eval("\$forum_list .= \"".$templates->get("forumbit_depth$depth$forumcat")."\";"); } }
// Return an array of information to the parent forum including child forums list, counters and lastpost information return array( "forum_list" => $forum_list, "counters" => $parent_counters, "lastpost" => $parent_lastpost, "lightbulb" => $lightbulb, ); }
/** * Fetch the status indicator for a forum based on its last post and the read date * * @param array Array of information about the forum * @param array Array of information about the lastpost date * @return array Array of the folder image to be shown and the alt text */ function get_forum_lightbulb($forum, $lastpost, $locked=0) { global $mybb, $lang, $db, $unread_forums;
// This forum is closed, so override the folder icon with the "offlock" icon. if($forum['open'] == 0 || $locked) { $folder = "offlock"; $altonoff = $lang->forum_locked; } else { // Fetch the last read date for this forum if(!empty($forum['lastread'])) { $forum_read = $forum['lastread']; } elseif(!empty($mybb->cookies['mybb']['readallforums'])) { // We've hit the read all forums as a guest, so use the lastvisit of the user $forum_read = $mybb->cookies['mybb']['lastvisit']; } else { $forum_read = 0; $threadcut = TIME_NOW - 60*60*24*$mybb->settings['threadreadcut'];
// If the user is a guest, do they have a forumsread cookie? if(!$mybb->user['uid'] && $mybb->cookies['mybb']['forumread']) { // If they've visited us before, then they'll have this cookie - otherwise everything is unread... $forum_read = my_get_array_cookie("forumread", $forum['fid']); } else if($mybb->user['uid'] && $mybb->settings['threadreadcut'] > 0 && $threadcut > $lastpost['lastpost']) { // We have a user, the forum's unread and we're over our threadreadcut limit for the lastpost - we mark these as read $forum_read = $lastpost['lastpost'] + 1; } }
//if(!$forum_read) //{ //$forum_read = $mybb->user['lastvisit']; //} // If the lastpost is greater than the last visit and is greater than the forum read date, we have a new post if($lastpost['lastpost'] > $forum_read && $lastpost['lastpost'] != 0) { $unread_forums++; $folder = "on"; $altonoff = $lang->new_posts; } // Otherwise, no new posts else { $folder = "off"; $altonoff = $lang->no_new_posts; } }
return array( "folder" => $folder, "altonoff" => $altonoff ); }
/** * Fetch the number of unapproved posts, formatted, from a forum * * @param array Array of information about the forum * @return array Array containing formatted string for posts and string for threads */ function get_forum_unapproved($forum) { global $lang;
$unapproved_threads = $unapproved_posts = '';
// If the user is a moderator we need to fetch the count if(is_moderator($forum['fid'])) { // Forum has one or more unaproved posts, format language string accordingly if($forum['unapprovedposts']) { if($forum['unapprovedposts'] > 1) { $unapproved_posts_count = $lang->sprintf($lang->forum_unapproved_posts_count, $forum['unapprovedposts']); } else { $unapproved_posts_count = $lang->sprintf($lang->forum_unapproved_post_count, 1); } $unapproved_posts = " <span title=\"{$unapproved_posts_count}\">(".my_number_format($forum['unapprovedposts']).")</span>"; } // Forum has one or more unapproved threads, format language string accordingly if($forum['unapprovedthreads']) { if($forum['unapprovedthreads'] > 1) { $unapproved_threads_count = $lang->sprintf($lang->forum_unapproved_threads_count, $forum['unapprovedthreads']); } else { $unapproved_threads_count = $lang->sprintf($lang->forum_unapproved_thread_count, 1); } $unapproved_threads = " <span title=\"{$unapproved_threads_count}\">(".my_number_format($forum['unapprovedthreads']).")</span>"; } } return array( "unapproved_posts" => $unapproved_posts, "unapproved_threads" => $unapproved_threads ); } ?>
Und meine forumdisplay.php so
PHP-Code: <?php /** * MyBB 1.6 * Copyright 2010 MyBB Group, All Rights Reserved * * Website: http://mybb.com * License: http://mybb.com/about/license * * $Id$ */
define("IN_MYBB", 1); define('THIS_SCRIPT', 'forumdisplay.php');
$templatelist = "forumdisplay,forumdisplay_thread,forumbit_depth1_cat,forumbit_depth1_forum,forumbit_depth2_cat,forumbit_depth2_forum,forumdisplay_subforums,forumdisplay_threadlist,forumdisplay_moderatedby,forumdisplay_newthread,forumdisplay_searchforum,forumdisplay_orderarrow,forumdisplay_thread_rating,forumdisplay_threadlist_rating,forumdisplay_threadlist_sortrating,forumbit_moderators,forumbit_subforums,forumbit_depth2_forum_lastpost"; $templatelist .= ",forumbit_depth1_forum_lastpost,forumdisplay_thread_multipage_page,forumdisplay_thread_multipage,forumdisplay_thread_multipage_more"; $templatelist .= ",multipage_prevpage,multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage"; $templatelist .= ",forumjump_advanced,forumjump_special,forumjump_bit,forumdisplay_password_wrongpass,forumdisplay_password"; $templatelist .= ",forumdisplay_usersbrowsing_user,forumdisplay_usersbrowsing,forumdisplay_inlinemoderation,forumdisplay_thread_modbit,forumdisplay_inlinemoderation_col,forumdisplay_inlinemoderation_selectall,forumdisplay_threadlist_clearpass"; $templatelist .= ",forumdisplay_announcements_announcement,forumdisplay_announcements,forumdisplay_threads_sep,forumbit_depth3_statusicon,forumbit_depth3,forumdisplay_sticky_sep,forumdisplay_thread_attachment_count,forumdisplay_threadlist_inlineedit_js,forumdisplay_rssdiscovery,forumdisplay_announcement_rating,forumdisplay_announcements_announcement_modbit,forumdisplay_rules,forumdisplay_rules_link,forumdisplay_thread_gotounread,forumdisplay_nothreads,forumdisplay_inlinemoderation_custom_tool,forumdisplay_inlinemoderation_custom"; require_once "./global.php"; require_once MYBB_ROOT."inc/functions_post.php"; require_once MYBB_ROOT."inc/functions_forumlist.php"; require_once MYBB_ROOT."inc/class_parser.php"; $parser = new postParser;
$orderarrow = $sortsel = array('rating' => '', 'subject' => '', 'starter' => '', 'started' => '', 'replies' => '', 'views' => ''); $ordersel = array('asc' => '', 'desc' => ''); $datecutsel = array(1 => '', 5 => '', 10 => '', 20 => '', 50 => '', 75 => '', 100 => '', 365 => '', 9999 => ''); $rules = '';
// Load global language phrases $lang->load("forumdisplay");
$plugins->run_hooks("forumdisplay_start");
$fid = intval($mybb->input['fid']); if($fid < 0) { switch($fid) { case "-1": $location = "index.php"; break; case "-2": $location = "search.php"; break; case "-3": $location = "usercp.php"; break; case "-4": $location = "private.php"; break; case "-5": $location = "online.php"; break; } if($location) { header("Location: ".$location); exit; } }
// Get forum info $foruminfo = get_forum($fid); if(!$foruminfo) { error($lang->error_invalidforum); }
$archive_url = build_archive_link("forum", $fid);
$currentitem = $fid; build_forum_breadcrumb($fid); $parentlist = $foruminfo['parentlist'];
// To validate, turn & to & but support unicode $foruminfo['name'] = preg_replace("#&(?!\#[0-9]+;)#si", "&", $foruminfo['name']);
$forumpermissions = forum_permissions(); $fpermissions = $forumpermissions[$fid];
if($fpermissions['canview'] != 1 || $fpermissions['canviewthreads'] != 1) { error_no_permission(); }
if($mybb->user['uid'] == 0) { // Cookie'd forum read time $forumsread = my_unserialize($mybb->cookies['mybb']['forumread']);
if(is_array($forumsread) && empty($forumsread)) { if($mybb->cookies['mybb']['readallforums']) { $forumsread[$fid] = $mybb->cookies['mybb']['lastvisit']; } else { $forumsread = array(); } }
$query = $db->simple_select("forums", "*", "active != 0", array("order_by" => "pid, disporder")); } else { // Build a forum cache from the database $query = $db->query(" SELECT f.*, fr.dateline AS lastread FROM ".TABLE_PREFIX."forums f LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}') WHERE f.active != 0 ORDER BY pid, disporder "); }
while($forum = $db->fetch_array($query)) { if($mybb->user['uid'] == 0 && $forumsread[$forum['fid']]) { $forum['lastread'] = $forumsread[$forum['fid']]; }
$fcache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum; }
// Get the forum moderators if the setting is enabled. if($mybb->settings['modlist'] != 0) { $moderatorcache = $cache->read("moderators"); }
$bgcolor = "trow1"; if($mybb->settings['subforumsindex'] != 0) { $showdepth = 3; } else { $showdepth = 2; }
$subforums = ''; $child_forums = build_forumbits($fid, 2); $forums = $child_forums['forum_list'];
if($forums) { $lang->sub_forums_in = $lang->sprintf($lang->sub_forums_in, $foruminfo['name']); eval("\$subforums = \"".$templates->get("forumdisplay_subforums")."\";"); }
$excols = "forumdisplay";
// Password protected forums check_forum_password($foruminfo['fid']);
if($foruminfo['linkto']) { header("Location: {$foruminfo['linkto']}"); exit; }
// Make forum jump... if($mybb->settings['enableforumjump'] != 0) { $forumjump = build_forum_jump("", $fid, 1); }
if($foruminfo['type'] == "f" && $foruminfo['open'] != 0) { eval("\$newthread = \"".$templates->get("forumdisplay_newthread")."\";"); }
if($fpermissions['cansearch'] != 0 && $foruminfo['type'] == "f") { eval("\$searchforum = \"".$templates->get("forumdisplay_searchforum")."\";"); }
// Gather forum stats $has_announcements = $has_modtools = false; $forum_stats = $cache->read("forumsdisplay");
if(is_array($forum_stats)) { if(!empty($forum_stats[-1]['modtools']) || !empty($forum_stats[$fid]['modtools'])) { // Mod tools are specific to forums, not parents $has_modtools = true; }
if(!empty($forum_stats[-1]['announcements']) || !empty($forum_stats[$fid]['announcements'])) { // Global or forum-specific announcements $has_announcements = true; } }
$done_moderators = array( "users" => array(), "groups" => array() );
$moderators = ''; $parentlistexploded = explode(",", $parentlist);
foreach($parentlistexploded as $mfid) { // This forum has moderators if(is_array($moderatorcache[$mfid])) { // Fetch each moderator from the cache and format it, appending it to the list foreach($moderatorcache[$mfid] as $modtype) { foreach($modtype as $moderator) { if($moderator['isgroup']) { if(in_array($moderator['id'], $done_moderators['groups'])) { continue; } $moderators .= $comma.htmlspecialchars_uni($moderator['title']); $done_moderators['groups'][] = $moderator['id']; } else { if(in_array($moderator['id'], $done_moderators['users'])) { continue; } $moderators .= "{$comma}<a href=\"".get_profile_link($moderator['id'])."\">".format_name(htmlspecialchars_uni($moderator['username']), $moderator['usergroup'], $moderator['displaygroup'])."</a>"; $done_moderators['users'][] = $moderator['id']; } $comma = $lang->comma; } } }
if(!empty($forum_stats[$mfid]['announcements'])) { $has_announcements = true; } } $comma = '';
// If we have a moderators list, load the template if($moderators) { eval("\$moderatedby = \"".$templates->get("forumdisplay_moderatedby")."\";"); } else { $moderatedby = ''; }
// Get the users browsing this forum. if($mybb->settings['browsingthisforum'] != 0) { $timecut = TIME_NOW - $mybb->settings['wolcutoff'];
$comma = ''; $guestcount = 0; $membercount = 0; $inviscount = 0; $onlinemembers = ''; $doneusers = array();
$query = $db->query(" SELECT s.ip, s.uid, u.username, s.time, u.invisible, u.usergroup, u.usergroup, u.displaygroup FROM ".TABLE_PREFIX."sessions s LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid) WHERE s.time > '$timecut' AND location1='$fid' AND nopermission != 1 ORDER BY u.username ASC, s.time DESC ");
while($user = $db->fetch_array($query)) { if($user['uid'] == 0) { ++$guestcount; } else { if(empty($doneusers[$user['uid']]) || $doneusers[$user['uid']] < $user['time']) { $doneusers[$user['uid']] = $user['time']; ++$membercount; if($user['invisible'] == 1) { $invisiblemark = "*"; ++$inviscount; } else { $invisiblemark = ''; } if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid']) { $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']); $user['profilelink'] = build_profile_link($user['username'], $user['uid']); eval("\$onlinemembers .= \"".$templates->get("forumdisplay_usersbrowsing_user", 1, 0)."\";"); $comma = $lang->comma; } } } }
$guestsonline = ''; if($guestcount) { $guestsonline = $lang->sprintf($lang->users_browsing_forum_guests, $guestcount); }
$onlinesep = ''; if($guestcount && $onlinemembers) { $onlinesep = $lang->comma; } $invisonline = ''; if($inviscount && $mybb->usergroup['canviewwolinvis'] != 1 && ($inviscount != 1 && $mybb->user['invisible'] != 1)) { $invisonline = $lang->sprintf($lang->users_browsing_forum_invis, $inviscount); }
$onlinesep2 = ''; if($invisonline != '' && $guestcount) { $onlinesep2 = $lang->comma; } eval("\$usersbrowsing = \"".$templates->get("forumdisplay_usersbrowsing")."\";"); }
// Do we have any forum rules to show for this forum? $forumrules = ''; if($foruminfo['rulestype'] != 0 && $foruminfo['rules']) { if(!$foruminfo['rulestitle']) { $foruminfo['rulestitle'] = $lang->sprintf($lang->forum_rules, $foruminfo['name']); } $rules_parser = array( "allow_html" => 1, "allow_mycode" => 1, "allow_smilies" => 1, "allow_imgcode" => 1 );
$foruminfo['rules'] = $parser->parse_message($foruminfo['rules'], $rules_parser); if($foruminfo['rulestype'] == 1 || $foruminfo['rulestype'] == 3) { eval("\$rules = \"".$templates->get("forumdisplay_rules")."\";"); } else if($foruminfo['rulestype'] == 2) { eval("\$rules = \"".$templates->get("forumdisplay_rules_link")."\";"); } }
$bgcolor = "trow1";
// Set here to fetch only approved topics (and then below for a moderator we change this). $visibleonly = "AND visible='1'"; $tvisibleonly = "AND t.visible='1'";
// Check if the active user is a moderator and get the inline moderation tools. if(is_moderator($fid)) { eval("\$inlinemodcol = \"".$templates->get("forumdisplay_inlinemoderation_col")."\";"); $ismod = true; $inlinecount = "0"; $inlinecookie = "inlinemod_forum".$fid; $visibleonly = " AND (visible='1' OR visible='0')"; $tvisibleonly = " AND (t.visible='1' OR t.visible='0')"; } else { $inlinemod = ''; $ismod = false; }
if(is_moderator($fid, "caneditposts") || $fpermissions['caneditposts'] == 1) { $can_edit_titles = 1; } else { $can_edit_titles = 0; }
unset($rating);
// Pick out some sorting options. // First, the date cut for the threads. $datecut = 0; if(empty($mybb->input['datecut'])) { // If the user manually set a date cut, use it. if($mybb->user['daysprune']) { $datecut = $mybb->user['daysprune']; } else { // If the forum has a non-default date cut, use it. if(!empty($foruminfo['defaultdatecut'])) { $datecut = $foruminfo['defaultdatecut']; } } } // If there was a manual date cut override, use it. else { $datecut = intval($mybb->input['datecut']); }
$datecut = intval($datecut); $datecutsel[$datecut] = "selected=\"selected\""; if($datecut > 0 && $datecut != 9999) { $checkdate = TIME_NOW - ($datecut * 86400); $datecutsql = "AND (lastpost >= '$checkdate' OR sticky = '1')"; $datecutsql2 = "AND (t.lastpost >= '$checkdate' OR t.sticky = '1')"; } else { $datecutsql = ''; $datecutsql2 = ''; }
// Pick the sort order. if(!isset($mybb->input['order']) && !empty($foruminfo['defaultsortorder'])) { $mybb->input['order'] = $foruminfo['defaultsortorder']; }
if(!empty($mybb->input['order'])) { $mybb->input['order'] = htmlspecialchars_uni($mybb->input['order']); } else { $mybb->input['order'] = ''; }
switch(my_strtolower($mybb->input['order'])) { case "asc": $sortordernow = "asc"; $ordersel['asc'] = "selected=\"selected\""; $oppsort = $lang->desc; $oppsortnext = "desc"; break; default: $sortordernow = "desc"; $ordersel['desc'] = "selected=\"selected\""; $oppsort = $lang->asc; $oppsortnext = "asc"; break; }
// Sort by which field? if(!isset($mybb->input['sortby']) && !empty($foruminfo['defaultsortby'])) { $mybb->input['sortby'] = $foruminfo['defaultsortby']; }
$t = "t."; $sortfield2 = '';
if(!empty($mybb->input['sortby'])) { $sortby = htmlspecialchars_uni($mybb->input['sortby']); } else { $mybb->input['sortby'] = ''; }
switch($mybb->input['sortby']) { case "subject": $sortfield = "subject"; break; case "replies": $sortfield = "replies"; break; case "views": $sortfield = "views"; break; case "starter": $sortfield = "username"; break; case "rating": $t = ""; $sortfield = "averagerating"; $sortfield2 = ", t.totalratings DESC"; break; case "started": $sortfield = "dateline"; break; default: $sortby = "lastpost"; $sortfield = "lastpost"; $mybb->input['sortby'] = "lastpost"; break; }
$sortsel['rating'] = ''; // Needs to be initialized in order to speed-up things. Fixes #2031 $sortsel[$mybb->input['sortby']] = "selected=\"selected\"";
// Pick the right string to join the sort URL if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && isset($_SERVER['SEO_SUPPORT']) && $_SERVER['SEO_SUPPORT'] == 1)) { $string = "?"; } else { $string = "&"; }
// Are we viewing a specific page? if(isset($mybb->input['page']) && is_numeric($mybb->input['page'])) { $sorturl = get_forum_link($fid, $mybb->input['page']).$string."datecut=$datecut"; } else { $sorturl = get_forum_link($fid).$string."datecut=$datecut"; }
// Needs to be initialized in order to speed-up things. Fixes #2031 $orderarrow = array('rating'=>'', 'subject'=>'', 'starter'=>'', 'replies'=>'', 'views'=>''); eval("\$orderarrow['$sortby'] = \"".$templates->get("forumdisplay_orderarrow")."\";");
$threadcount = 0; $useronly = $tuseronly = ""; if(isset($fpermissions['canonlyviewownthreads']) && $fpermissions['canonlyviewownthreads'] == 1) { $useronly = "AND uid={$mybb->user['uid']}"; $tuseronly = "AND t.uid={$mybb->user['uid']}"; }
// How many posts are there? if($datecut > 0 || isset($fpermissions['canonlyviewownthreads']) && $fpermissions['canonlyviewownthreads'] == 1) { $query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly $datecutsql"); $threadcount = $db->fetch_field($query, "threads"); } else { $query = $db->simple_select("forums", "threads, unapprovedthreads", "fid = '{$fid}'", array('limit' => 1)); $forum_threads = $db->fetch_array($query); $threadcount = $forum_threads['threads']; if($ismod == true) { $threadcount += $forum_threads['unapprovedthreads']; } // If we have 0 threads double check there aren't any "moved" threads if($threadcount == 0) { $query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly", array('limit' => 1)); $threadcount = $db->fetch_field($query, "threads"); } }
// How many pages are there? if(!$mybb->settings['threadsperpage']) { $mybb->settings['threadsperpage'] = 20; }
$perpage = $mybb->settings['threadsperpage'];
if(isset($mybb->input['page']) && intval($mybb->input['page']) > 0) { $page = intval($mybb->input['page']); $start = ($page-1) * $perpage; $pages = $threadcount / $perpage; $pages = ceil($pages); if($page > $pages || $page <= 0) { $start = 0; $page = 1; } } else { $start = 0; $page = 1; }
$end = $start + $perpage; $lower = $start + 1; $upper = $end;
if($upper > $threadcount) { $upper = $threadcount; }
// Assemble page URL if($mybb->input['sortby'] || $mybb->input['order'] || $mybb->input['datecut']) // Ugly URL { $page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED); if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && isset($_SERVER['SEO_SUPPORT']) && $_SERVER['SEO_SUPPORT'] == 1)) { $q = "?"; $and = ''; } else { $q = ''; $and = "&"; } if((!empty($foruminfo['defaultsortby']) && $sortby != $foruminfo['defaultsortby']) || (empty($foruminfo['defaultsortby']) && $sortby != "lastpost")) { $page_url .= "{$q}{$and}sortby={$sortby}"; $q = ''; $and = "&"; } if($sortordernow != "desc") { $page_url .= "{$q}{$and}order={$sortordernow}"; $q = ''; $and = "&"; } if($datecut > 0) { $page_url .= "{$q}{$and}datecut={$datecut}"; } } else { $page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED); } $multipage = multipage($threadcount, $perpage, $page, $page_url);
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $fpermissions['canviewthreads'] != 0) { $lang->load("ratethread");
switch($db->type) { case "pgsql": $ratingadd = "CASE WHEN t.numratings=0 THEN 0 ELSE t.totalratings/t.numratings::numeric END AS averagerating, "; break; default: $ratingadd = "(t.totalratings/t.numratings) AS averagerating, "; }
$lpbackground = "trow2"; eval("\$ratingcol = \"".$templates->get("forumdisplay_threadlist_rating")."\";"); eval("\$ratingsort = \"".$templates->get("forumdisplay_threadlist_sortrating")."\";"); $colspan = "7"; } else { if($sortfield == "averagerating") { $t = "t."; $sortfield = "lastpost"; } $ratingadd = ''; $lpbackground = "trow1"; $colspan = "6"; }
if($ismod) { ++$colspan; }
// Get Announcements if($has_announcements == true) { $limit = ''; $announcements = ''; if($mybb->settings['announcementlimit']) { $limit = "LIMIT 0, ".$mybb->settings['announcementlimit']; }
$sql = build_parent_list($fid, "fid", "OR", $parentlist); $time = TIME_NOW; $query = $db->query(" SELECT a.*, u.username FROM ".TABLE_PREFIX."announcements a LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid) WHERE a.startdate<='$time' AND (a.enddate>='$time' OR a.enddate='0') AND ($sql OR fid='-1') ORDER BY a.startdate DESC $limit ");
// See if this announcement has been read in our announcement array $cookie = array(); if(isset($mybb->cookies['mybb']['announcements'])) { $cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements'])); }
$announcementlist = ''; $bgcolor = alt_trow(true); // Reset the trow colors while($announcement = $db->fetch_array($query)) { if($announcement['startdate'] > $mybb->user['lastvisit'] && !$cookie[$announcement['aid']]) { $new_class = ' class="subject_new"'; $folder = "newfolder"; } else { $new_class = ' class="subject_old"'; $folder = "folder"; }
// Mmm, eat those announcement cookies if they're older than our last visit if($cookie[$announcement['aid']] < $mybb->user['lastvisit']) { unset($cookie[$announcement['aid']]); }
$announcement['announcementlink'] = get_announcement_link($announcement['aid']); $announcement['subject'] = $parser->parse_badwords($announcement['subject']); $announcement['subject'] = htmlspecialchars_uni($announcement['subject']); $postdate = my_date($mybb->settings['dateformat'], $announcement['startdate']); $posttime = my_date($mybb->settings['timeformat'], $announcement['startdate']); $announcement['profilelink'] = build_profile_link($announcement['username'], $announcement['uid']);
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $fpermissions['canviewthreads'] != 0) { eval("\$rating = \"".$templates->get("forumdisplay_announcement_rating")."\";"); $lpbackground = "trow2"; } else { $rating = ''; $lpbackground = "trow1"; }
if($ismod) { eval("\$modann = \"".$templates->get("forumdisplay_announcements_announcement_modbit")."\";"); } else { $modann = ''; }
$plugins->run_hooks("forumdisplay_announcement"); eval("\$announcements .= \"".$templates->get("forumdisplay_announcements_announcement")."\";"); $bgcolor = alt_trow(); }
if($announcements) { eval("\$announcementlist = \"".$templates->get("forumdisplay_announcements")."\";"); $shownormalsep = true; }
if(empty($cookie)) { // Clean up cookie crumbs my_setcookie('mybb[announcements]', 0, (TIME_NOW - (60*60*24*365))); } else if(!empty($cookie)) { my_setcookie("mybb[announcements]", addslashes(serialize($cookie)), -1); } } else { $announcementlist = ''; }
$tids = $threadcache = array(); $icon_cache = $cache->read("posticons");
{ // Start Getting Threads $query = $db->query(" SELECT t.*, {$ratingadd}t.username AS threadusername, u.username FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid) WHERE t.fid='$fid' $tuseronly $tvisibleonly $datecutsql2 ORDER BY t.sticky DESC, {$t}{$sortfield} $sortordernow $sortfield2 LIMIT $start, $perpage ");
$ratings = false; $moved_threads = array(); while($thread = $db->fetch_array($query)) { $threadcache[$thread['tid']] = $thread;
if($thread['numratings'] > 0 && $ratings == false) { $ratings = true; // Looks for ratings in the forum }
// If this is a moved thread - set the tid for participation marking and thread read marking to that of the moved thread if(substr($thread['closed'], 0, 5) == "moved") { $tid = substr($thread['closed'], 6); if(!$tids[$tid]) { $moved_threads[$tid] = $thread['tid']; $tids[$thread['tid']] = $tid; } } // Otherwise - set it to the plain thread ID else { $tids[$thread['tid']] = $thread['tid']; if(isset($moved_threads[$thread['tid']])) { unset($moved_threads[$thread['tid']]); } } }
if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0 && $mybb->user['uid'] && !empty($tids) && $ratings == true) { // Check if we've rated threads on this page // Guests get the pleasure of not being ID'd, but will be checked when they try and rate $imp = implode(",", $tids); $query = $db->simple_select("threadratings", "tid, uid", "tid IN ({$imp}) AND uid = '{$mybb->user['uid']}'");
while($rating = $db->fetch_array($query)) { $threadcache[$rating['tid']]['rated'] = 1; } } }
// If user has moderation tools available, prepare the Select All feature $num_results = $db->num_rows($query); if(is_moderator($fid) && $num_results > 0) { $lang->page_selected = $lang->sprintf($lang->page_selected, intval($num_results)); $lang->select_all = $lang->sprintf($lang->select_all, intval($threadcount)); $lang->all_selected = $lang->sprintf($lang->all_selected, intval($threadcount)); eval("\$selectall = \"".$templates->get("forumdisplay_inlinemoderation_selectall")."\";"); }
if(!empty($tids)) { $tids = implode(",", $tids); }
// Check participation by the current user in any of these threads - for 'dot' folder icons if($mybb->settings['dotfolders'] != 0 && $mybb->user['uid'] && !empty($threadcache)) { $query = $db->simple_select("posts", "tid,uid", "uid='{$mybb->user['uid']}' AND tid IN ({$tids}) {$visibleonly}"); while($post = $db->fetch_array($query)) { if(!empty($moved_threads[$post['tid']])) { $post['tid'] = $moved_threads[$post['tid']]; } if($threadcache[$post['tid']]) { $threadcache[$post['tid']]['doticon'] = 1; } } }
// Read threads if($mybb->user['uid'] && $mybb->settings['threadreadcut'] > 0 && !empty($threadcache)) { $query = $db->simple_select("threadsread", "*", "uid='{$mybb->user['uid']}' AND tid IN ({$tids})"); while($readthread = $db->fetch_array($query)) { if(!empty($moved_threads[$readthread['tid']])) { $readthread['tid'] = $moved_threads[$readthread['tid']]; } if($threadcache[$readthread['tid']]) { $threadcache[$readthread['tid']]['lastread'] = $readthread['dateline']; } } }
if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid']) { $query = $db->simple_select("forumsread", "dateline", "fid='{$fid}' AND uid='{$mybb->user['uid']}'"); $forum_read = $db->fetch_field($query, "dateline");
$read_cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24; if($forum_read == 0 || $forum_read < $read_cutoff) { $forum_read = $read_cutoff; } } else { $forum_read = my_get_array_cookie("forumread", $fid);
if($mybb->cookies['mybb']['readallforums'] && !$forum_read) { $forum_read = $mybb->cookies['mybb']['lastvisit']; } }
$unreadpost = 0; $threads = ''; $load_inline_edit_js = 0; if(!empty($threadcache)) { if(!$mybb->settings['maxmultipagelinks']) { $mybb->settings['maxmultipagelinks'] = 5; }
if(!$mybb->settings['postsperpage']) { $mybb->settings['postperpage'] = 20; }
foreach($threadcache as $thread) { $plugins->run_hooks("forumdisplay_thread");
$moved = explode("|", $thread['closed']);
if($thread['visible'] == 0) { $bgcolor = "trow_shaded"; } else { $bgcolor = alt_trow(); } if($thread['sticky'] == 1) { $thread_type_class = " forumdisplay_sticky"; } else { $thread_type_class = " forumdisplay_regular"; }
$folder = ''; $prefix = '';
$thread['author'] = $thread['uid']; if(!$thread['username']) { $thread['username'] = $thread['threadusername']; $thread['profilelink'] = $thread['threadusername']; } else { $thread['profilelink'] = build_profile_link($thread['username'], $thread['uid']); } // If this thread has a prefix, insert a space between prefix and subject $thread['threadprefix'] = $threadprefix = ''; if($thread['prefix'] != 0) { $threadprefix = build_prefixes($thread['prefix']); $thread['threadprefix'] = $threadprefix['displaystyle'].' '; }
$thread['subject'] = $parser->parse_badwords($thread['subject']); $thread['subject'] = htmlspecialchars_uni($thread['subject']);
if($thread['icon'] > 0 && $icon_cache[$thread['icon']]) { $icon = $icon_cache[$thread['icon']]; $icon = "<img src=\"{$icon['path']}\" alt=\"{$icon['name']}\" />"; } else { $icon = " "; }
$prefix = ''; if($thread['poll']) { $prefix = $lang->poll_prefix; }
if($thread['sticky'] == "1" && !$donestickysep) { eval("\$threads .= \"".$templates->get("forumdisplay_sticky_sep")."\";"); $shownormalsep = true; $donestickysep = true; } else if($thread['sticky'] == 0 && !empty($shownormalsep)) { eval("\$threads .= \"".$templates->get("forumdisplay_threads_sep")."\";"); $shownormalsep = false; }
$rating = ''; if($mybb->settings['allowthreadratings'] != 0 && $foruminfo['allowtratings'] != 0) { if($moved[0] == "moved") { $rating = "<td class=\"{$bgcolor}\" style=\"text-align: center;\">-</td>"; } else { $thread['averagerating'] = floatval(round($thread['averagerating'], 2)); $thread['width'] = intval(round($thread['averagerating']))*20; $thread['numratings'] = intval($thread['numratings']);
$not_rated = ''; if(!isset($thread['rated']) || empty($thread['rated'])) { $not_rated = ' star_rating_notrated'; }
$ratingvotesav = $lang->sprintf($lang->rating_votes_average, $thread['numratings'], $thread['averagerating']); eval("\$rating = \"".$templates->get("forumdisplay_thread_rating")."\";"); } }
$thread['pages'] = 0; $thread['multipage'] = ''; $threadpages = ''; $morelink = ''; $thread['posts'] = $thread['replies'] + 1;
if($thread['unapprovedposts'] > 0 && $ismod) { $thread['posts'] += $thread['unapprovedposts']; }
if($thread['posts'] > $mybb->settings['postsperpage']) { $thread['pages'] = $thread['posts'] / $mybb->settings['postsperpage']; $thread['pages'] = ceil($thread['pages']);
if($thread['pages'] > $mybb->settings['maxmultipagelinks']) { $pagesstop = $mybb->settings['maxmultipagelinks'] - 1; $page_link = get_thread_link($thread['tid'], $thread['pages']); eval("\$morelink = \"".$templates->get("forumdisplay_thread_multipage_more")."\";"); } else { $pagesstop = $thread['pages']; }
for($i = 1; $i <= $pagesstop; ++$i) { $page_link = get_thread_link($thread['tid'], $i); eval("\$threadpages .= \"".$templates->get("forumdisplay_thread_multipage_page")."\";"); }
eval("\$thread['multipage'] = \"".$templates->get("forumdisplay_thread_multipage")."\";"); } else { $threadpages = ''; $morelink = ''; $thread['multipage'] = ''; }
if($ismod) { if(isset($mybb->cookies[$inlinecookie]) && my_strpos($mybb->cookies[$inlinecookie], "|{$thread['tid']}|")) { $inlinecheck = "checked=\"checked\""; ++$inlinecount; } else { $inlinecheck = ''; }
$multitid = $thread['tid']; eval("\$modbit = \"".$templates->get("forumdisplay_thread_modbit")."\";"); } else { $modbit = ''; }
if($moved[0] == "moved") { $prefix = $lang->moved_prefix; $thread['tid'] = $moved[1]; $thread['replies'] = "-"; $thread['views'] = "-"; }
$thread['threadlink'] = get_thread_link($thread['tid']); $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost");
// Determine the folder $folder = ''; $folder_label = '';
if($thread['doticon']) { $folder = "dot_"; $folder_label .= $lang->icon_dot; }
$gotounread = ''; $isnew = 0; $donenew = 0;
if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'] && $thread['lastpost'] > $forum_read) { if($thread['lastread']) { $last_read = $thread['lastread']; } else { $last_read = $read_cutoff; } } else { $last_read = my_get_array_cookie("threadread", $thread['tid']); }
if($forum_read > $last_read) { $last_read = $forum_read; }
if($thread['lastpost'] > $last_read && $moved[0] != "moved") { $folder .= "new"; $folder_label .= $lang->icon_new; $new_class = "subject_new"; $thread['newpostlink'] = get_thread_link($thread['tid'], 0, "newpost"); eval("\$gotounread = \"".$templates->get("forumdisplay_thread_gotounread")."\";"); $unreadpost = 1; } else { $folder_label .= $lang->icon_no_new; $new_class = "subject_old"; }
if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews']) { $folder .= "hot"; $folder_label .= $lang->icon_hot; }
if($thread['closed'] == 1) { $folder .= "lock"; $folder_label .= $lang->icon_lock; }
if($moved[0] == "moved") { $folder = "move"; $gotounread = ''; }
$folder .= "folder";
$inline_edit_tid = $thread['tid'];
// If this user is the author of the thread and it is not closed or they are a moderator, they can edit if(($thread['uid'] == $mybb->user['uid'] && $thread['closed'] != 1 && $mybb->user['uid'] != 0 && $can_edit_titles == 1) || $ismod == true) { $inline_edit_class = "subject_editable"; } else { $inline_edit_class = ""; } $load_inline_edit_js = 1;
$lastpostdate = my_date($mybb->settings['dateformat'], $thread['lastpost']); $lastposttime = my_date($mybb->settings['timeformat'], $thread['lastpost']); $lastposter = $thread['lastposter']; $lastposteruid = $thread['lastposteruid'];
// Don't link to guest's profiles (they have no profile). if($lastposteruid == 0) { $lastposterlink = $lastposter; } else { $lastposterlink = build_profile_link($lastposter, $lastposteruid); }
$thread['replies'] = my_number_format($thread['replies']); $thread['views'] = my_number_format($thread['views']);
// Threads and posts requiring moderation if($thread['unapprovedposts'] > 0 && $ismod) { if($thread['unapprovedposts'] > 1) { $unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_posts_count, $thread['unapprovedposts']); } else { $unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_post_count, 1); }
$unapproved_posts = " <span title=\"{$unapproved_posts_count}\">(".my_number_format($thread['unapprovedposts']).")</span>"; } else { $unapproved_posts = ''; }
// If this thread has 1 or more attachments show the papperclip if($thread['attachmentcount'] > 0) { if($thread['attachmentcount'] > 1) { $attachment_count = $lang->sprintf($lang->attachment_count_multiple, $thread['attachmentcount']); } else { $attachment_count = $lang->attachment_count; }
eval("\$attachment_count = \"".$templates->get("forumdisplay_thread_attachment_count")."\";"); } else { $attachment_count = ''; }
eval("\$threads .= \"".$templates->get("forumdisplay_thread")."\";"); }
$customthreadtools = ''; if($ismod) { if(is_moderator($fid, "canusecustomtools") && $has_modtools == true) { switch($db->type) { case "pgsql": case "sqlite": $query = $db->simple_select("modtools", 'tid, name', "(','||forums||',' LIKE '%,$fid,%' OR ','||forums||',' LIKE '%,-1,%' OR forums='') AND type = 't'"); break; default: $query = $db->simple_select("modtools", 'tid, name', "(CONCAT(',',forums,',') LIKE '%,$fid,%' OR CONCAT(',',forums,',') LIKE '%,-1,%' OR forums='') AND type = 't'"); }
while($tool = $db->fetch_array($query)) { eval("\$customthreadtools .= \"".$templates->get("forumdisplay_inlinemoderation_custom_tool")."\";"); } if($customthreadtools) { eval("\$customthreadtools = \"".$templates->get("forumdisplay_inlinemoderation_custom")."\";"); } }
eval("\$inlinemod = \"".$templates->get("forumdisplay_inlinemoderation")."\";"); } }
// If there are no unread threads in this forum and no unread child forums - mark it as read require_once MYBB_ROOT."inc/functions_indicators.php";
$unread_threads = fetch_unread_count($fid); if($unread_threads !== false && $unread_threads == 0 && empty($unread_forums)) { mark_forum_read($fid); }
// Subscription status $add_remove_subscription = 'add'; $add_remove_subscription_text = $lang->subscribe_forum;
if($mybb->user['uid']) { $query = $db->simple_select("forumsubscriptions", "fid", "fid='".$fid."' AND uid='{$mybb->user['uid']}'", array('limit' => 1));
if($db->fetch_field($query, 'fid')) { $add_remove_subscription = 'remove'; $add_remove_subscription_text = $lang->unsubscribe_forum; } }
// Is this a real forum with threads? if($foruminfo['type'] != "c") { if(!$threadcount) { eval("\$threads = \"".$templates->get("forumdisplay_nothreads")."\";"); }
$clearstoredpass = ''; if($foruminfo['password'] != '') { eval("\$clearstoredpass = \"".$templates->get("forumdisplay_threadlist_clearpass")."\";"); }
if($load_inline_edit_js == 1) { eval("\$inline_edit_js = \"".$templates->get("forumdisplay_threadlist_inlineedit_js")."\";"); }
$post_code_string = ''; if($mybb->user['uid']) { $post_code_string = "&my_post_key=".$mybb->post_code; }
$lang->rss_discovery_forum = $lang->sprintf($lang->rss_discovery_forum, htmlspecialchars_uni(strip_tags($foruminfo['name']))); eval("\$rssdiscovery = \"".$templates->get("forumdisplay_rssdiscovery")."\";"); eval("\$threadslist = \"".$templates->get("forumdisplay_threadlist")."\";"); } else { $rssdiscovery = ''; $threadslist = '';
if(empty($forums)) { error($lang->error_containsnoforums); } }
$plugins->run_hooks("forumdisplay_end");
$foruminfo['name'] = strip_tags($foruminfo['name']);
eval("\$forums = \"".$templates->get("forumdisplay")."\";"); output_page($forums); ?>
Wäre jemand zu lieb mir zu verraten, was ich falsch mache? Bitte?
Liebe Grüße
RE: Für Gäste keine Themen- und Beitragszahl - Jockl - 08.12.2013
(08.12.2013, 17:40)Kiss.ME schrieb: Ich hab mehrmals alles so geändert, wie es in Melometlar Beitrag stand, aber bei mir hat sich rein gar nichts geändert. Die Gäste sehen immer noch keine Themen. Hast Du nur die Änderungen aus Melometlars Beitrag durchgeführt oder auch die in diesem Beitrag verlinkten?
Edit: Link korrigiert
RE: Für Gäste keine Themen- und Beitragszahl - MrBrechreiz - 08.12.2013
Jockl, dein Link geht nicht
|