Seite 1 von 2

Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 09:13
von Tim
Hallo Forum, ich habe mir eine MOD schreiben lassen, mit der User selbst ihr Profil inaktiv schalten können, als Alternative zum Profil löschen. Nun würde ich gerne das Profil so umbauen, dass, wenn ein User inaktiv ist, keine Informationen mehr im Profil sichtbar sind. Dazu brauche ich einen Code, der prüft, ob der User inaktiv ist. IF_user_not_inactive zum Beispiel :D Irgendwie so in der Art wird der Code wohl sein, ich komme aber leider nicht drauf, hoffe hier kann mir jemand weiterhelfen, vielen Dank :) LG Tim

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 12:30
von oxpus
Hallo,

wenn ein Benutzer inaktiv ist, kann das Profil erst gar nicht angezeigt werden.
Das unterbindet das phpBB 3 bereits.
Also wäre es auch nicht nötig, Informationen nicht darzustellen.

Ansonsten wird in den betreffenden Userdaten bei inaktiven Usern der Wert für "user_type" auf "USER_INACTIVE" (= "1") gesetzt, was man an den gewünschten Stellen abfragen kann.
Das wird so z. B. zur Profilansicht in der memberlist.php geprüft:

Code: Alles auswählen

		if (!$auth->acl_get('a_user') && $user->data['user_type'] != USER_FOUNDER)
		{
			if ($member['user_type'] == USER_IGNORE)
			{
				trigger_error('NO_USER');
			}
			else if ($member['user_type'] == USER_INACTIVE && $member['user_inactive_reason'] != INACTIVE_PROFILE)
			{
				trigger_error('NO_USER');
			}
		}
Damit werden Profile aller ignorierten oder deaktivierten User nicht dargestellt und mit der (sinngemässen) Meldung "Benutzer nicht gefunden" quittiert.

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 12:37
von Tim
Hallo Karsten,

danke für deine Antwort.
Bei der MOD wird der Wert aber nicht auf 1 sondern auf 2 gesetzt, somit ist der User zwar nicht mehr über die Suchfunktion zu finden, aber wenn man bei einem Beitrag von ihm auf die Profilverlinkung klickt kommt man so auch auf das Profil.
LG Tim

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 16:12
von oxpus
Ah ja. Also ignorierte User!!
Dann füge vor dem Block von mir einfach dieses ein:

Code: Alles auswählen

if ($member['user_type'] <> USER_IGNORE)
{
$template->assign_var('S_SHOW_PROFILE', true);
}
Damit hättest Du in der memberlist_view.html den Switch

Code: Alles auswählen

<!-- IF S_SHOW_PROFILE -->

<!-- ENDIF -->
zur Verfügung, der die gewünschten Inhalte im Profil bei den aktiven Usern einbindet, bei den ignorierten dann folglich nicht.

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 16:23
von Tim
Funktioniert leider nicht. Profil wird noch genau so angezeigt wie vorher. Cache und Template habe ich natürlich aktualisiert/geleert.

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 29.04.2009 17:42
von oxpus
Und Du hast den Switch in der Template-Datei auch um den Bereich herum"gelegt", der nur bei nicht ignorierten Usern angezeigt werden soll?

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 30.04.2009 07:01
von Tim
Ich habe den Switch in der memberlist_view am Anfang und am Ende des Quellcodes gesetzt.

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 30.04.2009 09:33
von oxpus
Dann müsste die Seite bei ignorierten Usern komplett leer sein. Also zumindest der Teil des Profils.
Versuchs doch mal so:

Code: Alles auswählen

if ($member['user_type'] <> 2)
{
$template->assign_var('S_SHOW_PROFILE', true);
}
Obwohl das eigentlich gleich sein müsste, sofern die Konstante in der includes/constants.php nicht geändert wurde.

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 30.04.2009 19:21
von Tim
Hallo Karsten,

in der Datei memberlist_profile_view.html habe ich dies gesehen:

Code: Alles auswählen

{L_USER_IS_INACTIVE}
Kann man das nicht einfach vor die einzelnen Felder setzen? Oder funktioniert das nicht? LG Tim :geek:

Re: Wie lautet der Code für wenn User inaktiv?

Verfasst: 30.04.2009 21:03
von Dr.Death
Variablen mit einem L_ am Anfang sind "Sprach Variablen" und beinhalten nur die "Übersetzung", aber niemals den Status.