Seite 1 von 1

Avatare für bestimmte Gruppen-Mod

Verfasst: 26.08.2003 16:47
von Itac
Hallo,

ich hab hier:
http://www.phpbb.de/viewtopic.php?p=192280#192280

meinen ersten Mod gehackstückelt.

Er soll für bestimmte Gruppen zusätzliche eigene Avatare ermöglichen.
Wer möchte kann mal Testen, Optimierungsvorschläge sind auch willkommen. (hab gerade mit PHP is mir neu)

Ein Gruß
Itac

Verfasst: 26.08.2003 18:24
von Lucas1510
Die Idee ist klasse :) Aber bei mir funzt es nicht :(

bekomme den Fehler

Code: Alles auswählen

Couldn't obtain user group information.

DEBUG MODE

SQL Error : 1146 Table 'meinedomain_de.PHPBB_GROUPS' doesn't exist

SELECT * FROM PHPBB_GROUPS

Line : 361
File : /is/htdocs/49513/www.meinedomain.de/includes/usercp_avatar.php
Kann bei mir aber sein, daß es daran liegt, daß ich folgenden Hack installiert habe:

Code: Alles auswählen

## Mod Title: Avatar gallery hack
## Mod Version: 1.0.0
## phpBB Version: 2.0.2
## Author: dzidzius - dzidzius@dione.ids.pl (you can find me also at forum www.ForumBest.150.pl, there send all questions)
## Description:
## Avatar from gallery after chosing it by user automatically disappear from gallery. Thanks
## to this hack two users cannot have the same avatar. If user resign from that avatar it will 
## be shown again in gallery.
## Installation Level: easy
## Installation Time: 2
## Files To Edit: 
##
##   includes\usercp_avatar.php 
Schade, aber trotzdem super-Idee, werde den Avatar-Gallery-Hack mal testweise entfernen und Deinen Mod nochmal ausprobieren :)

Viele Grüße,

Lucas

Verfasst: 26.08.2003 22:55
von Acid
..ersetze in dem Code ma $sql = "SELECT * FROM ".PHPBB_GROUPS; mit $sql = "SELECT * FROM ".GROUPS_TABLE;

Ich hab das andere Thema ma geschlossen. :)

Verfasst: 27.08.2003 09:05
von Itac
@Acid: na hoffendlich nicht zu früh, ist ja noch beta.

Ich hab noch bemerkt wenn der GruppenAvatar Ordner an erster Stelle
liegt wird er, auch wenn der User nicht in der Grupe ist, angezeigt.
Entweder nehm ich "x_" statt "g_" oder muß nochmal coden.

@Acid: die Zeile werd ich mal umbauen, ich hab das Problem
das ich keine Übersicht der Variabel gefunden und da hab ich das
verwendet was ich mit phpMyAdmin aus der Datenbank gelesen
habe....

*Ärmel hochkrempel* :grin:

Verfasst: 27.08.2003 12:26
von Henne
Itac hat geschrieben:@Acid: die Zeile werd ich mal umbauen, ich hab das Problem das ich keine Übersicht der Variabel gefunden...
Schau mal in die constants.php

Verfasst: 27.08.2003 14:06
von Itac
danke Henne für den Tip.

Ich habe mich entschlossen statt "g_" nehm ich "x_"
dazu sollte ein Order lieger der nicht mit "x_" anfängt,
dieser ist dann der Ordner dem man zuerst sieht.

hier nochmal der ganze Mod:

öffne usercp_avatar.php

suche

Code: Alles auswählen

while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			$s_categories .= '<option value="' . $key . '"' . $selected . '>' . ucfirst($key) . '</option>';
		}
	}
	$s_categories .= '</select>';
ersetze durch

Code: Alles auswählen

global $userdata; 

//Usergruppe des Users Finden
$is_in_Group = array(); 
$zz=-1;

//hole Gruppen ID des Users
		$sql = "SELECT * FROM ".USER_GROUP_TABLE." WHERE user_id = ".$userdata['user_id'];
		if(!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
		}
		while( $row = $db->sql_fetchrow($result))
		{
			$zz++;
			$is_in_Group[$zz] =$row['group_id'];  //merke GruppenID vom User
		}
		
//wandele GruppenID in Gruppennamen um
		if($zz>-1)
		{
			$sql = "SELECT * FROM ".GROUPS_TABLE; 		
                                                if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
			}
		
			while( $row = $db->sql_fetchrow($result))
			{
			for ($i=0;$i<($zz+1);$i++)
				{
					if ($is_in_Group[$i]==$row['group_id'])
						{
						$is_in_Group[$i]=strtolower ($row['group_name']);
						}
				}
			}		
		}

//Aufbau der dropdownbox
	while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			$AvatarOrdner=strtolower ($key);		  //ordnername 
			$AvatarOrdnerT= substr($AvatarOrdner, 2); //ohne die ersten beiden Zeichen
			$test=substr($AvatarOrdner, 0, 2);        //die ersten beiden Zeichen
		
			//Wenn Ordner mit "x_" anfängt gucken ob User zugriff darauf haben soll (=in Gruppe ist)
			if ($test=="x_")
				{
				for ($i=0;$i<($zz+1);$i++)
					{
					if ($is_in_Group[$i]==$AvatarOrdnerT)
							{
							$s_categories .= '<option value="' . $key . '"' . $selected . '>'. ucfirst($AvatarOrdnerT) . '</option>';
							}
					}
				}
			else
				{
				$s_categories .= '<option value="' . $key . '"' . $selected . '>'. ucfirst($key) . '</option>';
				}
		}
	}
	$s_categories .= '</select>';

speichere Datei

lege min. 2 Ordner in "images\avatars\gallery" an
einen den User auf jeden fall sehen z.B. "gallery01" und
einen zweiten für User einer Gruppe z.B. "x_anova".
lege dort in paar Bilder hinein.

melde Dich als Admin an und erzeuge eine Gruppe
z.B. "anova". Dazu einen Gruppen-Moderator und evlt.
ein paar User (die kann auch der Gruppen-Moderator eintragen)
an besten die Gruppe als geschlossen oder versteckt anlegen.

testen

Natürlich könnte man jetzt noch die erste Ausgabe so umschreiben
das per default keine "x_" Gruppe angezeigt wird.
aber man könnte :D

*edit 27.08.03. 14:45*

Verfasst: 06.11.2004 20:58
von FritzDaCat
Perfekt, das Mod hat super funktioniert! :D

getestet mit phpBB 2.0.10