Seite 1 von 1

Frage: Who is online - $is_auth_ary und auth

Verfasst: 04.07.2006 21:08
von LuLa
Hallo,
ich habe die Topic_in_Who_is_online-MOD von Niels (ehemals http://mods.db9.dk) eingebaut, aber es funktioniert leider noch nicht so richtig. Es geht um folgende Zeilen der viewonline.php:

Code: Alles auswählen

$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata);
.
.
.
// Start replacement - Topic in Who is online MOD
// if ( $row['session_topic'] )
if ( $row['session_topic'] && $is_auth_ary[$row['session_topic']]['auth_view'] )
{
	//
	// Topic info
	//
	$sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id=" . $row['session_topic'];
	if ( $result2 = $db->sql_query($sql) )
	{
		$topic_title = $db->sql_fetchrow($result2);
	}
	else
	{
		message_die(GENERAL_ERROR, 'Could not obtain user/online forums information', '', __LINE__, __FILE__, $sql);
	}
	$location_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $row['session_topic']);
	$location = $forum_data[$row['session_page']] .' -> '.$topic_title['topic_title'];
} else
{
	$location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']);
	$location = $forum_data[$row['session_page']];
}
// End replacement - Topic in Who is online MOD
Der if-Zeile am Anfang habe ich das "&& $is_auth_ary[$row['session_topic']]['auth_view']" hinzugefügt, damit User die Information nur dann sehen können, wenn sie auch Leserechte für das entsprechende Forum haben. Leider habe ich da irgendwo etwas falsch gemacht. Nehme ich das "&& $is_auth_ary[$row['session_topic']]['auth_view']" weg, funktioniert alles. Bloß können dann User andere User in Foren sehen, die sie selber gar nicht sehen/kennen können. Das soll ja nicht sein.

Könnt Ihr mir sagen was ich falsch gemacht habe? Ist bestimmt nur eine Kleinigkeit. Niels' Board gibt es nicht mehr, aber Ihr könnt mir bestimmt auch helfen!


Danke im voraus.
LG Lula

Verfasst: 05.07.2006 23:06
von LuLa
26 Stunden sind um und von allen PHP-Göttern hatte noch keiner eine Idee?
Glaube ich kaum... :D

Vielleicht würde es schon ausreichen, wenn mir jemand die Funktionsweise von $is_auth_ary und auth(...) erklärt.
Ich komme sonst in dieser Sache wirklich nicht weiter.

Verfasst: 08.07.2006 12:20
von LuLa
Noch ein Versuch...
Hüüülfe! :D

Re: Frage: Who is online - $is_auth_ary und auth

Verfasst: 08.07.2006 13:36
von easygo
LuLa hat geschrieben:Der if-Zeile am Anfang habe ich das "&& $is_auth_ary[$row['session_topic']]['auth_view']" hinzugefügt, damit User die Information nur dann sehen können, wenn sie auch Leserechte für das entsprechende Forum haben. Leider habe ich da irgendwo etwas falsch gemacht. Nehme ich das "&& $is_auth_ary[$row['session_topic']]['auth_view']" weg, funktioniert alles. Bloß können dann User andere User in Foren sehen, die sie selber gar nicht sehen/kennen können. Das soll ja nicht sein.

Könnt Ihr mir sagen was ich falsch gemacht habe? Ist bestimmt nur eine Kleinigkeit. Niels' Board gibt es nicht mehr, aber Ihr könnt mir bestimmt auch helfen!
Hi! Mach deine Änderung einfach wieder rückgängig. Da jetzt noch eine
Kontrolle einzubauen ergibt nämlich keinen Sinn. Schau hier -->
if ( $row['session_page'] < 1 || !$is_auth_ary[$row['session_page']]['auth_view'] )
{
.
.
.
}
else
{
$location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']);
$location = $forum_data[$row['session_page']];

}
Die IF-Anweisung ist ja eindeutig genug und wenn du nur das Rote durch den Code
von Niels ersetzt hast, sollte das mit den Rechten keine Probleme geben. easy

Verfasst: 08.07.2006 20:43
von LuLa
Hallo easygo,
die Installationsanweisung von Niels sah in der viewonline.php Folgendes vor:

Code: Alles auswählen

#
#-----[ FIND ]------------------------------------------------
#
$location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']);
$location = $forum_data[$row['session_page']];

#
#-----[ REPLACE WITH ]----------------------------------------
#

// Start replacement - Topic in Who is online MOD
// if ($row['session_topic'])
if ( $row['session_topic'] && $is_auth_ary[$row['session_topic']]['auth_view'] )
{
	//
	// Topic info
	//
	$sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id=" . $row['session_topic'];
	if ( $result2 = $db->sql_query($sql) )
	{
		$topic_title = $db->sql_fetchrow($result2);
	}
	else
	{
		message_die(GENERAL_ERROR, 'Could not obtain user/online forums information', '', __LINE__, __FILE__, $sql);
	}
	$location_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $row['session_topic']);
	$location = $forum_data[$row['session_page']] .' -> '.$topic_title['topic_title'];
} else
{
	$location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']);
	$location = $forum_data[$row['session_page']];
}
// End replacement - Topic in Who is online MOD
Von daher verstehe ich Deinen Hinweis nicht so ganz...
Bitte antworte nochmal darauf, vielleicht kapiere ich es dann...

Verfasst: 12.07.2006 02:04
von easygo
Stammt das aus der Orginal Install oder ist das dein Edit? :-? easy

Verfasst: 12.07.2006 10:12
von LuLa
Original bis auf eine Zeile:

Code: Alles auswählen

// if ($row['session_topic'])
Diese Zeile war im Original "aktiv".

Verfasst: 16.07.2006 03:34
von LuLa
Letzter Versuch.
Bitte, helft...