Seite 1 von 1

Extended Rank System + Rank in Memberlist [erledigt]

Verfasst: 14.06.2007 11:47
von blacksoul_
Hallo allerseits, kurz zu Erklärung, ich bin neu hier und betreibe seit ca. zwei Monaten ein eigenes Forum von phpBB. Bin absoluter php-Neuling, habe es aber geschafft einige Mods einzubauen die auch fehlerfrei Funktionieren. Oft hat mir bei Problemen schon die Suche hier im Forum weitergeholfen, diesmal leider nicht.

Also zum Problem:

Ich habe in meinem Forum (http://forum.mnpcs.de) u.a. die beiden Mods "Extended Rank System" und "Rank in Memberlist" installiert. Nun habe ich ein Problem mit der Kombination beider Mods. In der Mitgliederliste werden zwar die Ränge angezeigt aber falsch. Und zwar insofern falsch daß immer wenn ich ein neues Rankset erstelle bei allen Usern die Ränge des zuletzt erstellten Rank-Sets angezeigt werden.

Beispiel zur Verdeutlichung:

In meinem Forum sind die Benutzer in mehrere Gruppen unterteilt, Administratoren, Supermods, Moderatoren, Supporter und normale User. Jede dieser Gruppen hat ein eigenes Rank-Set mit eigenen Rank-Symbolen. Als letztes habe ich das Rank-Set Administratoren erstellt und mit der Benutzergruppe Administratoren verknüpft. Nun werden bei allen Benutzern in der Mitgliederliste die Ränge der Administratoren angezeigt. Bei den vorherigen Erstellungen der Rank-Sets das gleiche Problem.

Das Problem ist nur in der Mitgliederliste, im Rest des Forums werden alle Ränge richtig angezeigt. Nun hätte ich gerne daß das auch in der Mitgliederliste so funktioniert. Jegliche versuche das Problem selbst zu lösen sind (mangels Kenntniss) fehlgeschlagen.

Ich habe auch mal meine memberlist.php verlinkt:

http://www.mnpcs.de/forum/memberlist.txt

Ich hoffe mir kann jemand weiterhelfen.

Gruß Michael

Verfasst: 19.02.2008 12:08
von blacksoul_
*push* (ich weis ist nicht gerne gesehen aber nach sooo langer Zeit;))

Habs Problem jetzt ne zeitlang nicht mehr verfolgt aber interessiert hätt mich schonmal an was es liegt. Ich benutze jetzt übrigens version 2.0.23.

Vielleicht liest das ja jemand der das gleiche oder ein ähnliches Problem hat!

Verfasst: 11.03.2008 20:45
von blacksoul_
Habs geschafft daß in der Memberlist zumindest das Standard-Rankset bei allen Usern angezeigt wird. Habe folgenden Code verändert:

Code: Alles auswählen

$sql = "SELECT *
	FROM " . RANKS_TABLE . "
	ORDER BY rank_special, rank_min";
if ( !($result = $db->sql_query($sql)) )
ersetzt mit:

Code: Alles auswählen

$sql = "SELECT *
	FROM " . RANKS_TABLE . "
	WHERE rankset_id = 1
	OR rank_special = " . TRUE . "
	ORDER BY rank_special, rank_min";
if ( !($result = $db->sql_query($sql)) )
Hätte es wie gesagt gerne so daß in der Memberlist bei jedem Mitglied der richtige Rang aus dem dementsprechenden Rankset angezeigt wird. Momentan wird bei allen das Rankset "forum default" angezeigt. Ich glaube daß ich zumindest schon auf dem richtigen Weg bin. Wäre natürlich schön wenn mir jemand mit Ahnung unter die Arme greift 8) Habe die aktuelle memberlist.php nochmal zum download bereitgestellt:

http://www.mnpcs.de/forum/memberlist.txt

Verfasst: 29.03.2008 10:37
von blacksoul_
Erledigt, habe das Problem selbst gelöst. Werde heute Abend mal die Lösung posten falls jemand das gleiche Problem hat.

Verfasst: 29.03.2008 20:00
von blacksoul_
So, hier wie versprochen die Lösung. Wichtig für alle die die Mods "Rank in Memberlist" und "Extended Rank Set" gleichzeitig installiert haben.

Finde:

Code: Alles auswählen

$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar 
Füge danach ein:

Code: Alles auswählen

, user_rankset_id
Finde:

Code: Alles auswählen

$user_rank = '';
$rank_image = '';
if ( $row['user_rank'] )
{
	for($j = 0; $j < count($ranksrow); $j++)
	{
		if ( $row['user_rank'] == $ranksrow[$j]['rank_id'] && $ranksrow[$j]['rank_special'] )
		{
			$user_rank = $ranksrow[$j]['rank_title'];
			$rank_image = ( $ranksrow[$j]['rank_image'] ) ? '<img src="' . $ranksrow[$j]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : '';
		}
	}
}
else
{
	for($j = 0; $j < count($ranksrow); $j++)
	{
		if ( $row['user_posts'] >= $ranksrow[$j]['rank_min'] && !$ranksrow[$j]['rank_special'] )
		{
			$user_rank = $ranksrow[$j]['rank_title'];
			$rank_image = ( $ranksrow[$j]['rank_image'] ) ? '<img src="' . $ranksrow[$j]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : '';
		}
	}
}
Ersetze mit:

Code: Alles auswählen

$user_rank = '';
$rank_image = '';
if ( $row['user_rank'] )
{
	for($j = 0; $j < count($ranksrow); $j++)
	{
		if ( $row['user_rank'] == $ranksrow[$j]['rank_id'] && $ranksrow[$j]['rank_special'] )
		{
			$user_rank = $ranksrow[$j]['rank_title'];
			$rank_image = ( $ranksrow[$j]['rank_image'] ) ? '<img src="' . $ranksrow[$j]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : '';
		}
	}
}
else
{
	for($j = 0; $j < count($ranksrow); $j++)
	{
		if ( $row['user_posts'] >= $ranksrow[$j]['rank_min'] && !$ranksrow[$j]['rank_special'] && $ranksrow[$j]['rankset_id'] == $row['user_rankset_id'] )
		{
			$user_rank = $ranksrow[$j]['rank_title'];
			$rank_image = ( $ranksrow[$j]['rank_image'] ) ? '<img src="' . $ranksrow[$j]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : '';
		}
	}
}
Jetzt sollten die Ränge in der Mitgliederliste richtig angezeigt werden.