Seite 1 von 1

ezPortal Neue Beiträge nur aus erlaubten Foren zählen

Verfasst: 09.03.2007 18:08
von StanleyG
Hallo,

ich habe folgendes Problem:
ich habe in meinem Forum das ezPortal eingebaut. Dort gibt es die Funktion "Neue Beiträge seit dem letzten Besuch" und in klammern dahinter die Anzahl.
Diese Anzahl gibt nur einfach die Anzahl der Beiträge, die nach dem letzten Forumbesuch gepostet wurden, ohne zu prüfen, ob der Besucher diese Beiträge überhaupt lesen kann (d.h., ob er für das jeweilige Forum Leserechte hat).
Es passiert daher immer wieder, dass jemand dort die Angabe sieht: "Neue Beiträge seit dem letzten Besuch (5)" und wenn er darauf klickt, um die Suche aufzurufen, dann kommt nur die Meldung "Keine Beiträge entsprechen Ihren Kriterien." (weil die Suche dann schon richtig sucht, d.h. prüft, welche Beiträge der User lesen darf).

Weiß jemand vielleicht eine einfache Möglichkeit, auch die Zählung der Beiträge in ezPortal davon abhängig zu machen, welche Foren man lesen kann?
Ich habe versucht, das Verfahren von search.php abzukupfern, komme dort aber nicht ganz klar, weil ich kein PHP-SuperProfi bin.

Wer kann mir da einen Hinweis geben?
TIA
Stanley

Verfasst: 09.03.2007 19:16
von easygo
Ok den Versuch ist es wert! Einmal die portal.php öffnen / suchen

Code: Alles auswählen

	$sql = "SELECT COUNT(post_id) as total
			FROM " . POSTS_TABLE . "
			WHERE post_time >= " . $userdata['user_lastvisit'];
ersetzen durch

Code: Alles auswählen

	// Search for readable posts since last Login
	$sql = "SELECT * FROM " . FORUMS_TABLE;
	if(!($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
	}
	$forums = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$forums[] = $row;
	}
	$db->sql_freeresult($result);

	$is_auth_ary = array();
	$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata);

	$hidden_forums = '\'start\'';
	for( $i = 0; $i < count($forums); $i++ )
	{
		if(!$is_auth_ary[$forums[$i]['forum_id']]['auth_read'])
		{
			if( $hidden_forums == '\'start\'' )
			{
				$hidden_forums = $forums[$i]['forum_id'];
			}
			else
			{
				$hidden_forums .= ','. $forums[$i]['forum_id'];
			}
		}
	}
	$sql = "SELECT COUNT(post_id) as total
		FROM " . POSTS_TABLE . "
		WHERE forum_id NOT IN (" . $hidden_forums . ")
		AND post_time >= " . $userdata['user_lastvisit'];
Rückmeldung erwünscht. easy

Verfasst: 11.03.2007 15:02
von StanleyG
Danke,
habe den Code jetzt eingebaut, muss nur noch die Usermeldung abwarten, ob das jetzt klappt (bei mir gab es mit der Zählung nie Probleme, weil ich als Admin alle Foren lesen kann).
Melde mich wieder, denn wenn das klappt, dann könnte man diesen Codeschnipsel im entsprechenden Bereich veröffentlichen.

Stanley

Verfasst: 03.04.2007 10:16
von uran2358
easygo hat geschrieben: ...

Rückmeldung erwünscht. easy

.

.

Verfasst: 21.04.2007 19:43
von StanleyG
easygo hat geschrieben:Rückmeldung erwünscht. easy
Hi,
die Zählung klappt jetzt wunderbar.
Ich würde empfehlen, den Code unter Snippets zu veröffentlichen.
Danke
Stanley