Wenn Benutzer in Gruppe dann anzeigen, help! :)

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
RyoBerlin
Mitglied
Beiträge: 304
Registriert: 24.05.2004 14:11
Wohnort: Berlin

Wenn Benutzer in Gruppe dann anzeigen, help! :)

Beitrag von RyoBerlin »

Bezugnehment auf

http://www.phpbb.de/viewtopic.php?t=151304

brauche ich mal hilfe dabei aber umgekehrt.

In dem Thema geht es ja darum das der surfende user ausgelesen wird.

Ich möchte aber jetzt eine Grafik auf dem Profil anzeigen lassen wenn der User dessen Profil man anschaut sich in der Gruppe befindet...

Wie geht das?

Bisheriger code

Code: Alles auswählen

<!-- IF S_IN_GROUP --><a href="viewtopic.php?f=2&t=22"><img style="border: 0px solid ; width: 151px; height: 50px;" alt="Dieses Mitglied ist echt!" src="{T_THEME_PATH}/images/geprueft.jpg" /></a><br><!-- ENDIF -->	
Ist dafür leider völlig unbrauchbar da es ja nicht um den surfenden geht sondern um das Profil des users das man sieht :(
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Stimmt, dafür war die function auch nicht gedacht.

Hier die neue Funktion:

Code: Alles auswählen

function get_group_auth($access_group = 5, $user_id = false) 
{ 
   global $db, $user; 

   if ($user_id == false)
   {
		// Wurde keine $user_id übergeben, benutze den User, der diese Funktion aufgerufen hat.
		$user_id = $user->data['user_id'];
   }
   
   $access_group = (int)$access_group;
   $user_id = (int)$user_id;
    
   $sql = 'SELECT g.group_id 
      FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug 
      WHERE g.group_id = ug.group_id 
         AND ug.user_id = ' . $db->sql_escape($user_id) . ' 
         AND ug.user_pending <> ' . TRUE . ' 
         AND g.group_id = ' . $db->sql_escape($access_group); 
   $result = $db->sql_query($sql); 

   $check_group_auth = $db->sql_affectedrows($result); 
   $db->sql_freeresult($result); 
   if ( $check_group_auth <> 0 ) 
   { 
      return TRUE; 
   } 
   return FALSE; 
}

Nun kann man auf 2 verschiedene Wege die Funktion aufrufen:

1. Variante:
Prüfen ob der User, der die Seite aufgerufen hat, in der Gruppe ist:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Ist der User, der diese PHP Datei aufgerufen hat, in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group);
2. Variante:
Prüfen ob ein bestimmter User in einer bestimmten Gruppe ist:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Die folgende $check_user_id ist die zu überprüfende $user_id
$check_user_id = 2;

// Ist der angegebene User in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group, $check_user_id);

Bei der 2. Variante ist zubeachten, das Ihr die zu überprüfende User_Id auch richtig füllt.
Je nach Script ist ja eine andere Variable mit der zu überprüfenden User_ID gefüllt...
Beispiel:

Code: Alles auswählen

$check_user_id = $row['user_id'];

Die Variable $is_in_group beinhaltet nach Aufruf der Funktion entweder TRUE oder FALSE und kann dann weiter verwertet werden.
Zuletzt geändert von Dr.Death am 05.10.2007 13:21, insgesamt 1-mal geändert.
Benutzeravatar
RyoBerlin
Mitglied
Beiträge: 304
Registriert: 24.05.2004 14:11
Wohnort: Berlin

Beitrag von RyoBerlin »

Danke dir, ch werds heute mal vesuchen.

Hoffentlich scaff ich das diesmal auch :/

Aber geht das auch das beide Funktionen Paalle laufen oder nur eine von beiden?

Weil sieht sich so ähnlich
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Du kannst die "alte Funktion" mit der neuen ersetzen ;-)
Benutzeravatar
RyoBerlin
Mitglied
Beiträge: 304
Registriert: 24.05.2004 14:11
Wohnort: Berlin

Beitrag von RyoBerlin »

also entweder oder?

hmmm das iss schlecht weil ich beide haben wollte..

mit der einen verstecke ich optionen/infos

Mit der anderen wollte ich jetzt infos anzeigen lassen *seuftz*
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

lese meinen vorherigen Satz bitte erneut.....

Er beudeutet: Die neue Funktion beherrscht beides ;-)

Ersetzte Deine alte Funktion mit der neuen und Du kannst beides haben ;-)
Benutzeravatar
RyoBerlin
Mitglied
Beiträge: 304
Registriert: 24.05.2004 14:11
Wohnort: Berlin

Beitrag von RyoBerlin »

ahh okey.

Bistn Engel :)

Ich bin halt klein Progger unter ersetzen verstehe ich immer bisschen was anderes :D

Nur noch eine Frage ehe ich mich später mal dransetze.

Mit welchem Befehl lasse ich das dann anzeigen?

auch IF S_IN_GROUP, nee oder?

1000 Dank! Wo wären wir nur ohne dich :)
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Genau.

Du musst natürlich wie gehabt das Ergebnis

$is_in_group

wieder in das Template bekommen.

Wie Du das machst ist ja egal, du kannst Dir auch eine neue Zuweisung aussuchen:

Code: Alles auswählen

'S_USER_XYZ_IS_IN_GROUP'  => $is_in_group,
Dann musst Du natürlich im Template die IF Abfrage auf die neue Variable setzen:

Code: Alles auswählen

<!-- IF S_USER_XYZ_IS_IN_GROUP -->

blablabla

<!-- ENDIF -->
Benutzeravatar
RyoBerlin
Mitglied
Beiträge: 304
Registriert: 24.05.2004 14:11
Wohnort: Berlin

Beitrag von RyoBerlin »

Seh ich das richtig das es pro User ist???

erklär nochmal wies gemeint ist.

Wenn der User dessen Profil gerade angeschaut wird in der Gruppe ist zeige ein bild an.

Müsste man dann wohl statt XYZ = {USERNAME} nehmen hmm nee warte das haut nich hin *G* das wäre ja wieder der surfer
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Nein, das mit der Variable S_USER_XYZ.... war nur als Beispiel für eine andere Template Bezeichnung gedacht.

Siehe im o.g. Beitrag "2. Variante".

Hint: Du baust ja Deine Abfrage in der memberlist.php ein.

An der richtigen Stelle müsste es dann also so aussehen:

Code: Alles auswählen

// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet 
$check_group = 10; 

// Die folgende $check_user_id ist die zu überprüfende $user_id 
$check_user_id = (int) $member['user_id'];

// Ist der angegebene User in der Gruppe mit der o.g. ID ?? 
$is_in_group = get_group_auth($check_group, $check_user_id);
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“