Pagina 1 van 1

Mark forums van categorie

Geplaatst: 29 okt 2004, 08:58
door Luuk
Ik heb een script gemaakt dat, als het goed is, alle forums als gelezen markeerd van 1 categorie. Nu werkt dit niet helemaal goed, bij 1 forum waar ongelezen topic in staan doet ie het, maar bij 2 forums, markeerd hij er maar 1 als gelezen. Ook als ik het dan nog een keer op de link klik doet ie het niet.
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);
}
Het stuk staat in index.php onder het stuk van mark all forums.

De link wordt dan index.php?mark=category&c=1

PS: grotedeels gekopieerd uit viewforum, hoe je daar alle topics als gelezen worden gemarkeerd