codemonkey
27.01.2004, 12:14
Hi Leute.
Ich arbeite gerade an einem neuen Markierungssystem. Es funktioniert auch ansatzweise ... wenn man in Forum A ein neues Thema liest und danach direkt wieder auf die Startseite geht wird auch Forum A direkt als gelesen markiert. Das funktioniert durch eine Überprüfung in der showthread.php.
Nur dummerweise funktioniert das nicht immer. Es ist richtig komisch. Mal funktioniert es, mal nicht. Hat jmd. eine Idee woran das bei diesem Code liegen könnte?
// ################################################## #####################
// ######################## FORUM MARKIERUNG! ############################
// ################################################## #####################
$unreadchildforums = 0;
$childlist = explode(',', $foruminfo['childlist']);
foreach ($childlist AS $val)
{
if (($val == -1 OR $val == $foruminfo['forumid']) OR in_array($thread['forumid'], $childlist))
{
continue;
}
if ($forumcache["$val"]['lastpost'] >= fetch_bbarray_cookie('forum_view', $val) AND $forumcache["$val"]['lastpost'] >= $bbuserinfo['lastvisit'])
{
$unreadchildforums = 1;
}
}
$threads = $DB_site->query("SELECT threadid, lastpost, forumid FROM " . TABLE_PREFIX . "thread WHERE forumid = ".$thread['forumid']." AND lastpost > ".$bbuserinfo['lastvisit']);
$newthreads = mysql_num_rows($threads); // Ersetz das gegebenenfalls durch $DB_site->mysql_num_rows_funktion($threads); wenn diese existiert
$lastread = fetch_bbarray_cookie('forum_view', $thread['forumid']);
if ($lastread < $bbuserinfo['lastvisit'])
{
$lastread = $bbuserinfo['lastvisit'];
}
while($thread = $DB_site->fetch_array($threads))
{
if ($thread['lastpost'] > $lastread)
{
$threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']);
if ($thread['lastpost'] < $threadview)
{
$newthreads--;
}
}
}
if($newthreads < 1 && $unreadchildforums < 1)
{
set_bbarray_cookie('forum_view', $foruminfo['forumid'], TIMENOW);
}
Wäre echt cool, wenn ihr mir helfen könntet.
Ich arbeite gerade an einem neuen Markierungssystem. Es funktioniert auch ansatzweise ... wenn man in Forum A ein neues Thema liest und danach direkt wieder auf die Startseite geht wird auch Forum A direkt als gelesen markiert. Das funktioniert durch eine Überprüfung in der showthread.php.
Nur dummerweise funktioniert das nicht immer. Es ist richtig komisch. Mal funktioniert es, mal nicht. Hat jmd. eine Idee woran das bei diesem Code liegen könnte?
// ################################################## #####################
// ######################## FORUM MARKIERUNG! ############################
// ################################################## #####################
$unreadchildforums = 0;
$childlist = explode(',', $foruminfo['childlist']);
foreach ($childlist AS $val)
{
if (($val == -1 OR $val == $foruminfo['forumid']) OR in_array($thread['forumid'], $childlist))
{
continue;
}
if ($forumcache["$val"]['lastpost'] >= fetch_bbarray_cookie('forum_view', $val) AND $forumcache["$val"]['lastpost'] >= $bbuserinfo['lastvisit'])
{
$unreadchildforums = 1;
}
}
$threads = $DB_site->query("SELECT threadid, lastpost, forumid FROM " . TABLE_PREFIX . "thread WHERE forumid = ".$thread['forumid']." AND lastpost > ".$bbuserinfo['lastvisit']);
$newthreads = mysql_num_rows($threads); // Ersetz das gegebenenfalls durch $DB_site->mysql_num_rows_funktion($threads); wenn diese existiert
$lastread = fetch_bbarray_cookie('forum_view', $thread['forumid']);
if ($lastread < $bbuserinfo['lastvisit'])
{
$lastread = $bbuserinfo['lastvisit'];
}
while($thread = $DB_site->fetch_array($threads))
{
if ($thread['lastpost'] > $lastread)
{
$threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']);
if ($thread['lastpost'] < $threadview)
{
$newthreads--;
}
}
}
if($newthreads < 1 && $unreadchildforums < 1)
{
set_bbarray_cookie('forum_view', $foruminfo['forumid'], TIMENOW);
}
Wäre echt cool, wenn ihr mir helfen könntet.