Het forum met de post eerder (dus zeg maar om 10.10 uur) wordt wel gemarkeerd, het later geposte (10.20) niet.
Dit is mijn code:
Code: Selecteer alles
elseif ( $mark_read == 'category' && $viewcat != -1 )
{
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT forum_id
FROM " . FORUMS_TABLE . "
WHERE cat_id = '" . $viewcat . "'";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum list for marking read', '', __LINE__, __FILE__, $sql);
}
$forums_read = array();
while( $forums_read[] = $db->sql_fetchrow($result) );
$db->sql_freeresult($result);
if( ( $total_forums_read = count($forums_read) ) )
{
for($i = 0; $i < $total_forums_read; $i++)
{
$forum_id = $forums_read[$i]['forum_id'];
$sql = "SELECT MAX(post_time) AS last_post
FROM " . POSTS_TABLE . "
WHERE forum_id = '" . $forum_id . "'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
}
if ( $row = $db->sql_fetchrow($result) )
{
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
if ( ( count($tracking_forums) + count($tracking_topics) ) >= 150 && empty($tracking_forums[$forum_id]) )
{
asort($tracking_forums);
unset($tracking_forums[key($tracking_forums)]);
}
if ( $row['last_post'] > $userdata['user_lastvisit'] )
{
$tracking_forums[$forum_id] = time();
setcookie($board_config['cookie_name'] . '_f', serialize($tracking_forums), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
}
}
}
$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx?" . POST_CAT_URL . "=$viewcat") . '">')
);
}
$message = $lang['Category_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx?" . POST_CAT_URL . "=$viewcat") . '">', '</a> ');
message_die(GENERAL_MESSAGE, $message);
}
De link wordt dan index.php?mark=category&c=1
PS: grotedeels gekopieerd uit viewforum, hoe je daar alle topics als gelezen worden gemarkeerd