Seite 1 von 1

Brauch mal jemand der sich mit PHP auskennt.

Verfasst: 08.03.2004 23:17
von Sujao
Also bin gerade dabei ein größeres Modding durchzuführen und den Category-Hirarchy-Mod von Ptirhiik (RPGnet-fr) zu installieren und bin dabei auf ein Problem gestossen. Theoretisch ist der Mod Easymodkompatibel, aber da mein Forum schon sehr stark gemoddet ist, klappt es nicht. Ich hab jetzt mal alle Teile die Fehler verursachen aus der Installationsdatei rausgenommen und bin gerade dabei sie manuell einzufügen. Bei den tpl's ist das kein Problem, aber es gibt einen Teil aus einer php-Datei und da gibt es das Problem:

Die Anleitung sagt mir wie ich eine Original viewforum.php bearbeite und ich weiss nicht so genau wie ich das auf meine gemodete anwenden soll.

Hier ist die Anweisung:

Code: Alles auswählen

#-----[ OPEN ]------------------------------------------------
#
viewforum.php
#
#-----[ FIND ]------------------------------------------------
#
$sql = "SELECT u.user_id, u.username 
	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
	WHERE aa.forum_id = $forum_id 
		AND aa.auth_mod = " . TRUE . " 
		AND g.group_single_user = 1
		AND ug.group_id = aa.group_id 
		AND g.group_id = aa.group_id 
		AND u.user_id = ug.user_id 
	GROUP BY u.user_id, u.username  
	ORDER BY u.user_id";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}

$moderators = array();
while( $row = $db->sql_fetchrow($result) )
{
	$moderators[] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
}

$sql = "SELECT g.group_id, g.group_name 
	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
	WHERE aa.forum_id = $forum_id
		AND aa.auth_mod = " . TRUE . " 
		AND g.group_single_user = 0
		AND g.group_type <> ". GROUP_HIDDEN ."
		AND ug.group_id = aa.group_id 
		AND g.group_id = aa.group_id 
	GROUP BY g.group_id, g.group_name  
	ORDER BY g.group_id";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}

while( $row = $db->sql_fetchrow($result) )
{
	$moderators[] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
}
#
#-----[ REPLACE WITH ]---------------------------------------- 
#
//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
// $sql = "SELECT u.user_id, u.username 
//	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
//	WHERE aa.forum_id = $forum_id 
//		AND aa.auth_mod = " . TRUE . " 
//		AND g.group_single_user = 1
//		AND ug.group_id = aa.group_id 
//		AND g.group_id = aa.group_id 
//		AND u.user_id = ug.user_id 
//	GROUP BY u.user_id, u.username  
//	ORDER BY u.user_id";
// if ( !($result = $db->sql_query($sql)) )
// {
//	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
// }
//
// $moderators = array();
// while( $row = $db->sql_fetchrow($result) )
// {
//	$moderators[] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
// }
//
// $sql = "SELECT g.group_id, g.group_name 
//	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
//	WHERE aa.forum_id = $forum_id
//		AND aa.auth_mod = " . TRUE . " 
//		AND g.group_single_user = 0
//		AND g.group_type <> ". GROUP_HIDDEN ."
//		AND ug.group_id = aa.group_id 
//		AND g.group_id = aa.group_id 
//	GROUP BY g.group_id, g.group_name  
//	ORDER BY g.group_id";
// if ( !($result = $db->sql_query($sql)) )
// {
//	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
// }
//
// while( $row = $db->sql_fetchrow($result) )
// {
//	$moderators[] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
// }
//-- add
// moderators list
$moderators = array();
$idx = $tree['keys'][ POST_FORUM_URL . $forum_id ];
for ( $i = 0; $i < count($data['user_id']); $i++ )
{
	$moderators[] = '<a href="' . append_sid("./profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $tree['mods'][$idx]['user_id'][$i]) . '">' . $tree['mods'][$idx]['username'][$i] . '</a>';
}
for ( $i = 0; $i < count($data['group_id']); $i++ )
{
	$moderators[] = '<a href="' . append_sid("./groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $tree['mods'][$idx]['group_id'][$i]) . '">' . $tree['mods'][$idx]['group_name'][$i] . '</a>';
}
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Und so sieht mein zu ersetzender Teil aus:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_level, u.username 
	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
	WHERE aa.forum_id = $forum_id 
		AND aa.auth_mod = " . TRUE . " 
		AND g.group_single_user = 1
		AND ug.group_id = aa.group_id 
		AND g.group_id = aa.group_id 
		AND u.user_id = ug.user_id 
	GROUP BY u.user_id, u.username  
	ORDER BY u.user_id";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}

$moderators = array();
while( $row = $db->sql_fetchrow($result) )
{

// Start add - Admins/mods color management MOD
switch ( $row['user_level'] ) {
case ADMIN:
	$mod_color = 'class="admincolor"';
	break;
case MOD:
	$mod_color = 'class="modcolor"';
	break;
default:
	$mod_color = '';
	break;
}
// End add - Admins/mods color management MOD

	$moderators[] = '<a ' . $mod_color . ' href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
}

$sql = "SELECT g.group_id, g.group_name 
	FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
	WHERE aa.forum_id = $forum_id
		AND aa.auth_mod = " . TRUE . " 
		AND g.group_single_user = 0
		AND g.group_type <> ". GROUP_HIDDEN ."
		AND ug.group_id = aa.group_id 
		AND g.group_id = aa.group_id 
	GROUP BY g.group_id, g.group_name  
	ORDER BY g.group_id";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}

while( $row = $db->sql_fetchrow($result) )
{
	$moderators[] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
}

So wie ich das sehe, habe ich noch den Colormanagement-Mod dazwischen und. Weiss aber nicht ob es noch mehr Unterschiede gibt die ich nicht erkennen kann.
Hoffe jemand kann mir helfen !

Verfasst: 09.03.2004 11:04
von Acid
Ersetze einfach den kompletten Teil mit dem Hierarchy-Code (auch das Color Zeugs).

Code: Alles auswählen

{
   $moderators[] = '<a href="' . append_sid("./profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $tree['mods'][$idx]['user_id'][$i]) . '">' . $tree['mods'][$idx]['username'][$i] . '</a>';
}

..ersetze das dann mit folgendem..

Code: Alles auswählen

{
       // Start add - Admins/mods color management MOD
       switch ( $tree['mods'][$idx]['user_level'][$i] ) {
       case ADMIN:
                 $mod_color = 'class="admincolor"';
                 break;
       case MOD:
                 $mod_color = 'class="modcolor"';
                 break;
       default:
                 $mod_color = '';
                 break;
       }
       // End add - Admins/mods color management MOD

       $moderators[] = '<a href="' . append_sid("./profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $tree['mods'][$idx]['user_id'][$i]) . '" '. $mod_color .'>' . $tree['mods'][$idx]['username'][$i] . '</a>';
}
Wenn sich die Farben nicht ändern, muss eventuell hinsichtlich $tree['mods'][$idx]['user_level'][$i] noch "user_level" irgendwo notiert werden. Ich weiss jetzt nicht genau in welcher Datei das $tree Zeugs definiert wird.

Verfasst: 09.03.2004 19:23
von Sujao
Super, vielen Dank, Acid !
Kannst du mir auch sagen, was sich bei der Änderung des Codes im Forum verändern sollte ? Ich hab nämlich alles modifiziert und sehe keinen Unterschied zu vorher. Kann man den irgendwo verifizieren ?

Verfasst: 09.03.2004 22:38
von Acid
Was´n jetzt? Hierarchie oder des Color-Zeugs?
Beim Hierarchie-Mod kannst du Unterforen innerhalb von Foren erstellen usw. (die Änderungen an viewforum.php sind dahingehend notwendig, damit beim Aufruf dieser die ganzen Anzeigen für die jeweiligen (Unter)foren gelten). Beim Color-Mod sollten die Moderatoren bzw. Admins, welche in den Foren Moderatoren sind, in der jeweiligen Farbe angezeigt werden.

Verfasst: 09.03.2004 23:01
von Sujao
Nein, das meinte ich nicht. Ich meinte lediglich die Veränderung, wegen der ich dich gefragt hatte. Der Rest geht, ging aber auch ohne sie. Aber der Autor hatte ja seinen Grund die Stelle zu ändern. Da ich aber nicht sehe was konkret diese Änderung bewirkt, habe ich gefragt.

Verfasst: 09.03.2004 23:19
von Acid
In der viewforum.php gibt´s ja eine Anzeige der Moderatoren von dem jeweiligen Forum (als einzelne User bzw. als Gruppen aufgeteilt in 2 sql-Anweisungen).
Da´s beim Hierarchie-MOD ein wenig anders läuft bzw. vieles an Code in andere Dateien ausgelagert wurde, wurden diese beiden Queries deaktiviert und nur´n Verweis mit diesem $tree eingesetzt. Damit die Moderatoren dann für die Foren, Unterforen und Unterunterforen weiterhin korrekt angezeigt werden. (Die bisherigen sql-Anweisungen stehen dann etwas abgewandelt in einer anderen Datei (k/A welche das jetzt ist) und imho werden für die Moderatorenanzeige in den Foren und auf dem Index die selben Queries genutzt.