$forumdata['LASTPOST_TIME'] = $res['lastposttime']; $forumdata['LASTPOST_LINK'] = 'thread.php?id=' . $res['lastthread'] . '&goto=lastpost'; $forumdata['LASTPOST_ICON'] = $icon; } return $forumdata; } //Forum-Liste abarbeiten $forumRec = array(); if (count($data)) { //Erzeuge eine rekursive Datenstruktur $superForum = array(); foreach ($data as $key => $res) { $right_visible = dash_unserialize($res['right_visible']); $right_read = dash_unserialize($res['right_read']); //Foren, die der Benutzer nicht lesen darf überspringen if (!forum_access_visible($res)) { continue; } //Level 1 Foren in die Liste schreiben if ($res['level'] == 1) { $forumRec[] =& $data[$key]; } //Letztes Forum pro Level merken $superForum[$res['level']] =& $data[$key]; //Beim übergeordneten Forum hinzufügen if (isset($superForum[$res['level'] - 1])) { $superForum[$res['level'] - 1]['subforums'][] =& $data[$key]; } } //Posts und Threadcount, sowieso Lastpost nach oben propagieren function propagateInfo(&$forumList)
if (is_array($icons)) { $icons = array_sort($icons, 'ord', 'ASC'); } if (count($icons)) { foreach ($icons as $key => $res) { ++$ii; $icondata[$ii]['ID'] = $key; $icondata[$ii]['IMAGE'] = $res['file']; } } //Foren auflisten $data = forum_readout(); foreach ($data as $res) { ++$i; //Nicht sichtbare Foren überspringen if (!forum_access_visible($res) || !forum_access_read($res)) { $jump = $res['level']; continue; } if ($jump && $res['level'] > $jump) { continue; } else { $jump = 0; } if (!$res['iscat']) { $forumdata[$i]['ID'] = $res['forumid']; } $forumdata[$i]['TITLE'] = replace($res['title']); $forumdata[$i]['LEVEL'] = $res['level']; $forumdata[$i]['ISCAT'] = $res['iscat']; $forumdata[$i]['SELECTED'] = iif($_POST['forum'] == $res['forumid'], 1, 0);
list($userCount, $guestCount, $activelist) = forum_get_activity('forum', $foruminfo['forumid'], $foruminfo['moderator']); $apx->tmpl->assign('ACTIVITY_USERS', $userCount); $apx->tmpl->assign('ACTIVITY_GUESTS', $userCount); $apx->tmpl->assign('ACTIVITY', $activelist); $apx->tmpl->parse('forum'); //////////////////////////////////////////////////////////////////////////////////////////////////////// $apx->tmpl->assign_static('STYLESHEET', compatible_hsc($foruminfo['stylesheet'])); $apx->tmpl->assign('PATH', forum_path($foruminfo)); $apx->tmpl->assign('PATHEND', replace($foruminfo['title'])); titlebar($foruminfo['title']); ///////////////////////////////////////////////////////////////////////////////////////////////// GELESEN-STATUS $isread = true; //Fieser Hack: Verwende die Daten, die forum_assign.php erzeugt hat, //denn da steht schon die lastposttime des Forums (inklusive Unterforen) drin. foreach ($forumRec as $forum) { if (forum_access_visible($forum) && forum_access_read($forum) && correct_forum_password($forum)) { $forumLastview = max(array($user->info['forum_lastonline'], forum_readtime($forum['forumid']))); if ($forumLastview < $forum['lastposttime']) { $isread = false; break; } } } //Themen brauchen wir nur anzuschauen, wenn die Unterforen alle gelesen sind if ($isread) { //Eine detaillierte Prüfung ist nur notwendig, wenn es in diesem Forum etwas neues gibt $forumLastview = max(array($user->info['forum_lastonline'], forum_readtime($foruminfo['forumid']))); if ($forumLastview < $foruminfo['lastposttime']) { //Alle ungelesenen Themen bestimmen und prüfen, ob bereits gelesen $data = $db->fetch("\n\t\t\tSELECT threadid, lastposttime\n\t\t\tFROM " . PRE . "_forum_threads\n\t\t\tWHERE forumid='" . $foruminfo['forumid'] . "' AND del=0 AND moved=0 AND lastposttime>'" . $forumLastview . "'\n\t\t\tORDER BY lastposttime DESC\n\t\t"); $readThreads = threads_get_read();