Seite 1 von 3

[erledigt] Profil, email und pn-Button bei inaktiven ...

Verfasst: 06.01.2007 14:59
von Joe1220
Moin,

ich würde gern in allen Ansichten (Topics, Profil usw.) bei inaktiven Usern die Buttons für Profil, email und pn ausblenden.

Hintergrund:

Bei einem kleinen Forum mit ca. 40 Usern und 5000 Beiträgen ist es sehr ärgerlich, alle Beiträge eines ausgeschiedenen Users zu löschen, das zerreist zu viele Threads (Löschen nur der User ist auch nicht wirklich so schön, da dann keine Zuordnung zum Postenden mehr möglich ist). Also habe ich die betreffenden User einfach inaktiv gesetzt und dafür gesorgt, dass sie nicht mehr in der Memberliste usw. auftauchen (Gab dafür hier ja nette Code-Schnipsel) ... Auch deren Profil habe ich bereinigt und alles entfernt, was ging. Nun haben diese User den Spezial-Rang "inaktiv". Die Beiträge sind noch da, aber eben leider auch die Möglichkeit, über die PN und Email-Buttons die User zu kontaktieren... Blendet man diese bei Usern im Status "inaktiv" aus, ist diese Lösung für mich perfekt, finde ich.

Hat jemand eine Idee?

Danke und Gruß

Joe


Die drei Knöpfe da unten will ich bei inaktiven Usern nicht sehen:
[ externes Bild ]

Verfasst: 06.01.2007 15:28
von Miriam
Die Standardvorgehensweise sollte die sein, den User zu löschen. Dann wird der Name des nunmehr ehemaligen Users beim Posting direkt eingetragen und es steht der Name des Users dort. Probiere es mit einem Testuser.
Falls es Dir nicht gefällt, können wir es immer noch umbauen. :P

Verfasst: 06.01.2007 18:41
von Joe1220
Miriam hat geschrieben:Dann wird der Name des nunmehr ehemaligen Users beim Posting direkt eingetragen und es steht der Name des Users dort.
Ah, ich habe das mal mit nem Testuser ausprobiert. Der Name bleibt ja so wie es aussieht tatsächlich erhalten - ohne, dass ich etwas tun muss ...
War das schon immer so?? Hab das anders in Erinnerung, daher die Anfrage ...

Egal, damit hat sich dann meine Anfrage natürlich erledigt, danke Miriam ...

Verfasst: 06.01.2007 18:55
von nickvergessen
Ich glaub ich hab hier genau das richtige für dich gefunden:
schau mal rein

gefunden mit:
gast user löschen

Verfasst: 06.01.2007 18:57
von Skeita
Joe1220 hat geschrieben:War das schon immer so?? Hab das anders in Erinnerung, daher die Anfrage ...

Egal, damit hat sich dann meine Anfrage natürlich erledigt, danke Miriam ...
Ich weiß nicht, seit welcher phpBB Version das so gelöst wird, aber ich bin mir sicher, dass es diese 'Funktion' schon mindestens seit phpBB 2.0.17 gibt. ;)

Verfasst: 07.01.2007 07:23
von Joe1220
Ich bin mit 2.0.21 gestartet, habe mich vorher aber sehr häufig in einem Forum 2.0.6 rumgetrieben, zumindest da war das anders (nur "Gast", kein Nick) ....

Danke nochmal an alle für die nette Hilfestellung.

(Nur mal so am Rande: Wäre ein Umbau wie ursprünglich angedacht sehr umständlich? Denn es hätte ja den zusätzlichen Charme, dass ein User reaktiviert werden könnte, sollte er es sich anders überlegen. Ist er gelöscht, ließen sich seine früheren Posts ja nur durch diesen reassign-MOD wieder zuweisen. Möchte aber ehrlich gesagt so wenig MODs wie möglich einbauen bzw. später so wenig administrativen Aufwand wie möglich haben.)

Verfasst: 07.01.2007 13:19
von Miriam
Deine Wortwahl ist ja sehr charmant :D

Probier das ->

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php
#
#-----[ FIND ]------------------------------------------
#
if ( $profiledata['user_rank'] )
{
	for($i = 0; $i < count($ranksrow); $i++)
	{
		if ( $profiledata['user_rank'] == $ranksrow[$i]['rank_id'] && $ranksrow[$i]['rank_special'] )
		{
			$poster_rank = $ranksrow[$i]['rank_title'];
			$rank_image = ( $ranksrow[$i]['rank_image'] ) ? '<img src="' . $ranksrow[$i]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : '';
#
#-----[ AFTER, ADD ]------------------------------------------
#
                         if ( ($poster_rank == 'inaktiv') && ($userdata['user_level'] != ADMIN) )
                         {
                         	message_die(GENERAL_MESSAGE,"Userprofil nicht verf&uuml;gbar");
                         }
#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php
#
#-----[ FIND ]------------------------------------------
#
		'PROFILE_IMG' => $profile_img,
		'PROFILE' => $profile,
#
#-----[ REPLACE WITH ]------------------------------------------
#
		'PROFILE_IMG' => $profile_img = ($poster_rank == 'inaktiv') ? '' : $profile_img,
		'PROFILE' => $profile = (poster_rank ==  'inaktiv') ? '' : $profile,
#
#-----[ FIND ]------------------------------------------
#
		'PM_IMG' => $pm_img,
		'PM' => $pm,

#
#-----[ REPLACE WITH ]------------------------------------------
#
		'PM_IMG' => $pm_img = ($poster_rank == 'inaktiv') ? '' : $pm_img,
		'PM' => $pm = ($poster_rank == 'inaktiv') ? '' : $pm,
#
#-----[ OPEN ]------------------------------------------
#
memberlist.php
#
#-----[ FIND ]------------------------------------------
#
$sql = "SELECT user_id, username, 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,
	FROM " . USERS_TABLE . "
	WHERE user_id <> " . ANONYMOUS . "
	ORDER BY $order_by";
#
#-----[ REPLACE WITH ]------------------------------------------
#
$sql = "SELECT user_id, username, 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, user_rank, rank_title
	FROM " . USERS_TABLE . "
	LEFT JOIN " . RANKS_TABLE ." ON rank_id = user_rank
	WHERE user_id <> " . ANONYMOUS . "
	ORDER BY $order_by";
#
#-----[ FIND ]------------------------------------------
#
if ( $row = $db->sql_fetchrow($result) )
{
	$i = 0;
	do
	{
		$username = $row['username'];
		$user_id = $row['user_id'];
#
#-----[ AFTER, ADD ]------------------------------------------
#
                 $user_rank = $row['rank_title'];
#
#-----[ FIND ]------------------------------------------
#
			'PROFILE_IMG' => $profile_img,
			'PROFILE' => $profile,
#
#-----[ REPLACE WITH ]------------------------------------------
#
			'PROFILE_IMG' => $profile_img = ($user_rank == 'inaktiv') ? '' : $profile_img,
			'PROFILE' => $profile = (user_rank ==  'inaktiv') ? '' : $profile,
#
#-----[ FIND ]------------------------------------------
#
			'PM_IMG' => $pm_img,
			'PM' => $pm,
#
#-----[ REPLACE WITH ]------------------------------------------
#
			'PM_IMG' => $pm_img = ($user_rank == 'inaktiv') ? '' : $pm_img,
			'PM' => $pm = ($user_rank == 'inaktiv') ? '' : $pm,
#
#-----[ OPEN ]------------------------------------------
#
privmsg.php
#
#-----[ FIND ]------------------------------------------
#
		if ( !empty($HTTP_POST_VARS['username']) )
		{
			$to_username = phpbb_clean_username($HTTP_POST_VARS['username']);

			$sql = "SELECT user_id, user_notify_pm, user_email, user_lang, user_active,
				FROM " . USERS_TABLE . "
				WHERE username = '" . str_replace("\'", "''", $to_username) . "'
				AND user_id <> " . ANONYMOUS;
#
#-----[ REPLACE WITH ]------------------------------------------
#
		if ( !empty($HTTP_POST_VARS['username']) )
		{
			$to_username = phpbb_clean_username($HTTP_POST_VARS['username']);

			$sql = "SELECT user_id, user_notify_pm, user_email, user_lang, user_active, user_rank, rank_title
				FROM " . USERS_TABLE . "
				LEFT JOIN " . RANKS_TABLE ." ON rank_id = user_rank
				WHERE username = '" . str_replace("\'", "''", $to_username) . "'
				AND user_id <> " . ANONYMOUS;
#
#-----[ FIND ]------------------------------------------
#
			if (!($to_userdata = $db->sql_fetchrow($result)))
			{
				$error = TRUE;
				$error_msg = $lang['No_such_user'];
			}
#
#-----[ AFTER, ADD ]------------------------------------------
#
                         else
                         {
                         	$to_user_rank = $to_userdata['rank_title'];
                         	$error = ($to_user_rank == 'inaktiv') ? TRUE : 0;
                                 if (error)
                                 {
                                 	$error_msg = "Dieser User kann keine PN erhalten!";
                                 }
                         }
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Der Spezialrang MUSS inaktiv heissen!
Nur Admins können das Profil anschauen.
Es kann keine PN mehr geschickt werden.
Es gibt keine PN und Profil Buttons mehr.
Die Daten können auch nicht über die URL aufgerufen werden.

Den e-mail Button kannst Du auch über das Profil des betreffenden Users deaktivieren, darum habe ich mich jetzt nicht gekümmert.

Verfasst: 07.01.2007 13:51
von Joe1220
Hallo Miriam,

wow, genau das wollte ich erreichen... :)

Danke, danke, danke, danke ... :grin:

Du gestattest, dass ich Dich noch auf einen kleinen Fehler hinweise?

In Zeile 4 Deines Snippets muß es "usercp_viewprofile.php" heissen ...
Miriam hat geschrieben:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php
#

...

Aber es hat prima funktioniert :)
Miriam hat geschrieben:Den e-mail Button kannst Du auch über das Profil des betreffenden Users deaktivieren, darum habe ich mich jetzt nicht gekümmert.
?? Ich kann im ACP e-mail nicht deaktivieren?? Ist aber egal, habe einfach das da ...

Code: Alles auswählen

      'EMAIL_IMG' => $email_img = ($poster_rank == 'inaktiv') ? '' : $email_img,
      'EMAIL' => $email = ($poster_rank == 'inaktiv') ? '' : $email,
... eingebaut (sinngemäß abgewandelt aus Deinem Code), dann wars perfekt :)

Lieben Dank und Gruß

Joe

Verfasst: 07.01.2007 14:07
von MasterofFlames
Um übers acp die Emailoption abzuschalten musst du doch nur den User aufrufen und dann in seinen Einstellungen E-Mail abschalten.

Verfasst: 07.01.2007 14:09
von nickvergessen
MasterofFlames hat geschrieben:Um übers acp die Emailoption abzuschalten musst du doch nur den User aufrufen und dann in seinen Einstellungen E-Mail abschalten.
wobei die Lösung von ihm, viel besser ist, um den User zureaktivieren:
Joe1220 hat geschrieben:

Code: Alles auswählen

      'EMAIL_IMG' => $email_img = ($poster_rank == 'inaktiv') ? '' : $email_img,
      'EMAIL' => $email = ($poster_rank == 'inaktiv') ? '' : $email,