Postbox Mod Administration

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
mauswurf
Mitglied
Beiträge: 91
Registriert: 28.01.2005 14:45
Wohnort: Siegen
Kontaktdaten:

Beitrag von mauswurf »

Jetzt dachte ich hier gäbs die ultimative Lösung :(

Grundsätzlich finde ich die Idee der Postboxen nicht schlecht, grad in so einem heillosen Geschredder wie es bei uns manchmal an der Tagesordnung ist. Da verschwinden zB Urlaubsabmeldungen schonmal im Nivana und nach wenigen Tagen werden dann reihenweise Vermisstenmeldungen aufgegeben. Für solche "Meldungen" fand ich diese Idee eigentlich ziemlich gut :wink:

Vielleicht hat ja Leuchte irgendwann noch die Erleuchtung, wie man als Admin doch noch auf diese Postboxen zugreifen kann *hoff*

Danke für Eure Bemühungen !
muffin-of
Mitglied
Beiträge: 7
Registriert: 11.08.2005 06:37

Beitrag von muffin-of »

Guten Morgen :) ,
hat denn wirklich keiner einer Idee, woran es liegen könnte ? :(

Verzweifelte Grüsse :cry:
muffin-of
Mitglied
Beiträge: 7
Registriert: 11.08.2005 06:37

Beitrag von muffin-of »

:( Einen Schubs-Versuch sei mir noch gestattet :wink:
adamo
Mitglied
Beiträge: 33
Registriert: 26.10.2004 18:56

Beitrag von adamo »

Der Mod ist eigenwillig.

Hier ein kleines Addon dazu.

1. Der Mod fragt nicht ab ob der User schon ein Postfach hat. Hat er keines angelegt (Geht nur über die Beschreibung) aber schreibt einen Beitrag, dann verschwindet er auf nimmerwiedersehen in die DB und müllt dort alles zu. Daher auch die höhere Anzahl an Beiträgen ohne das alle sichtbar sind.

Änderung dieses unhaltbaren zustandes:

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 

 postbox_post.php

# 
#-----[ FIND ]------------------------------------------ 
# 

if( isset($_POST['box_id']) )
{
	$box_id = intval($_POST['box_id']);
}

# 
#-----[ BEFORE, ADD ]------------------------------------------ 
#

$userid = $userdata['user_id'];
$check = 0;

$checken = mysql_query("SELECT user_id FROM ". POSTBOX_USERS_TABLE ."  WHERE user_id = $userid ");
while ($checker = mysql_fetch_array($checken)) 
	{
		$check = 1;
	}
if (!$check == 1)
	{
		message_die(GENERAL_ERROR, "Bitte erst eine Beschreibung eingeben" );
	}

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
Zumüllen ist somit erledigt.
- Man glaubt nicht wie oft das geschieht ...

Nun zur Administration. Es ist natürlich unschön etwas "verwerfliches" zu finden und erst die DB zu bemühen.
Folgende kleine Änderung bewirkt eine Löschmöglichkeit:

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 

postbox_view.php

# 
#-----[ FIND ]------------------------------------------ 
# 

if ( $box == $box_id )

# 
#-----[ REPLACE WITH  ]------------------------------------------ 
# - Admin-delete 

if ($userdata['user_level'] == ADMIN or $box == $box_id )

# 
#-----[ OR REPLACE WITH  ]------------------------------------------ 
# - Admin and Mod-delete

if ($userdata['user_level'] == ADMIN or $userdata['user_level'] == MOD or $box == $box_id )



# 
#-----[ OPEN ]------------------------------------------ 
# 

postbox_post.php


#
#-----[ FIND ]------------------------------------------
#

$text = $_POST['message'];
$subject = $_POST['subject'];
$user_id = $userdata['user_id'];

#
#-----[ AFTER, ADD ]------------------------------------------
# - Admin-delete
 
if ($userdata['user_level'] == ADMIN)
{$authcheck = 1;}
else
{$authchek = 0;}

# 
#-----[ OR AFTER, ADD  ]------------------------------------------ 
# - Admin and Mod-delete

if ($userdata['user_level'] == ADMIN or $userdata['user_level'] == MOD)
{$authcheck = 1;}
else
{$authchek = 0;}

#
#-----[ FIND ]------------------------------------------
#

 	if ( $_GET['mode'] == 'delete' || $_POST['mode'] == 'delete' && !isset($_POST['post']) )
	{
   		$sql = "SELECT user_id 
			FROM ". POSTBOX_USERS_TABLE ."
			WHERE box_id = $box_id";

# 
#-----[ REPLACE WITH  ]------------------------------------------ 
# 

 	if ( $_GET['mode'] == 'delete' || $_POST['mode'] == 'delete' && !isset($_POST['post']) )
	{
   		$sql = "SELECT user_id 
			FROM ". POSTBOX_USERS_TABLE ."
			WHERE box_id = $box_id or $authcheck = 1 ";

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
Bei nicht vorhandenen Beiträgen brauchen wir auch keine Postfachanzeige.
Es steht ja nichts darin, trägt also nur zur Verwirrung bei und müllt die Anzeigeseite zu.

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 

postbox.php

# 
#-----[ FIND ]------------------------------------------ 
# 

$sql = "SELECT pu.box_id, pu.pbdesc, pu.auth, pu.message_count, pm.message_time, u.username
FROM ". POSTBOX_USERS_TABLE ." pu, ". POSTBOX_MSG_TABLE ." pm,  ". USERS_TABLE ." u
WHERE pu.user_id = u.user_id

# 
#-----[ REPLACE WITH  ]------------------------------------------ 
# 

$sql = "SELECT pu.box_id, pu.pbdesc, pu.auth, pu.message_count, pm.message_time, u.username
FROM ". POSTBOX_USERS_TABLE ." pu, ". POSTBOX_MSG_TABLE ." pm,  ". USERS_TABLE ." u
WHERE pu.user_id = u.user_id AND pu.box_id = pm.box_id

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
Was wir schon wissen brauchen wir natürlich nicht nochmals abfragen und so werden auch die ausgeblendeten Postfächer (Wenn keine Nachricht hinterlegt ist) nicht in der Statistik angezeigt.

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 

 postbox.php

# 
#-----[ FIND ]------------------------------------------ 
# 

$sql = "SELECT COUNT(user_id) AS total
				FROM ". POSTBOX_USERS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
 message_die(GENERAL_ERROR, 'Could not get total users', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$total_pbs = $row['total'];

# 
#-----[ REPLACE WITH ]------------------------------------------ 
#

$total_pbs = count($memberrow);

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
 

Noch ein kleiner Bugfix dazu, damit die Installation auch durchläuft:

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 

 db_update.php

# 
#-----[ FIND ]------------------------------------------ 
# 

PRIMARY KEY  (message_id,message_id)

# 
#-----[ REPLACE WITH ]------------------------------------------ 
#

PRIMARY KEY  (message_id)

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
 
Hoffe geholfen zu haben.
Zuletzt geändert von adamo am 24.02.2006 18:04, insgesamt 2-mal geändert.
Benutzeravatar
mauswurf
Mitglied
Beiträge: 91
Registriert: 28.01.2005 14:45
Wohnort: Siegen
Kontaktdaten:

Beitrag von mauswurf »

Vielen Dank ! Ich hab mich da mal dran gemacht und soweit funzt es auch, aber :

In der Datei postbox_user.php hab ich if( isset($_POST['submit']) ) ... und if( isset($_POST['user_id']) ) ..., aber nicht die gesuchte Stelle if( isset($_POST['box_id']) ) ...
Kann ich das ADD auch irgendwo anders hin packen ? :D

Die entsprechende Stelle in der postbox_view.php habe ich geändert, aber ich bekomme trotzdem die Meldung "Keine Befugnisse", wenn ich einen Eintrag löschen möchte. :(

Vielleicht stehe ich ja da irgendwo noch auf dem Schlauch :oops:
adamo
Mitglied
Beiträge: 33
Registriert: 26.10.2004 18:56

Beitrag von adamo »

Mein Fehler :oops:

Ich habe es jetzt einmal eingebaut und ausprobiert.
Die notwendigen Änderungen sind in meinem vorherigen Beitrag hereineditiert.

Entschuldigung für die verursachte Verwirrung.
Benutzeravatar
mauswurf
Mitglied
Beiträge: 91
Registriert: 28.01.2005 14:45
Wohnort: Siegen
Kontaktdaten:

Beitrag von mauswurf »

Spitze, nu funktioniert´s :wink:
Vielen Dank für die Mühe !
Benutzeravatar
redbull254
Ehemaliges Teammitglied
Beiträge: 10379
Registriert: 05.01.2006 13:01
Kontaktdaten:

Beitrag von redbull254 »

Hallo,adamo

Danke für diese Erweiterung, klappt jetzt alles wunderbar.
Da Du so fit bist darauf,wage ich mal eine Frage zu stellen?
Ist es möglich,ohne gigantischen Aufwand es zu ermöglichen,das neue Nachrichten im Postfach angezeigt werden? So wie bei PN, "du hast eine neue Nachricht".
Etwas für faule und Blinde,die nicht immer die Postfächer nachschauen eben. ;-(
Beste Grüße
Walter
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Um auf die vorherigen Anfragen zurück zu kommen: Der MOD ist recht alt und wurde nie von mir aktualisiert (obwohl eine Auffrischkur nicht schaden würde). Ich habe es irgendwie nie benötigt, andere Nachrichten zu löschen, weshalb diese Funktion auch nicht existiert. Aber jetzt gibt es sie ja. Zur letzten Frage:
includes/page_header.php - Finde

Code: Alles auswählen

else
{
	$icon_pm = $images['pm_no_new_msg'];
	$l_privmsgs_text = $lang['Login_check_pm'];
	$l_privmsgs_text_unread = '';
	$s_privmsg_new = 0;
}
Füge danach ein

Code: Alles auswählen

// Postbox
if ( $userdata['session_logged_in'] && (empty($gen_simple_header)) )
{
  $sql = "SELECT SUM(new_msg) as new
    FROM ". POSTBOX_USERS_TABLE ."
    WHERE new_msg != 0
    AND user_id = ". $userdata['user_id'];
  if ( !($result = $db->sql_query($sql)) )
  {
   message_die(GENERAL_ERROR, 'Could not get read data', '', __LINE__, __FILE__, $sql);
  }
  $row = $db->sql_fetchrow($result);
  $new = $row['new'];

  if ( $new <= 0 )
  {
    $l_new_pb = '';
  } 
  else if ( $new == 1 )
  {
    $l_new_pb = $lang['PB_one_new'];
  }
  else
  {
    $l_new_pb = sprintf($lang['PB_more_new'], $new);
  }
}
Finde

Code: Alles auswählen

	'PRIVMSG_IMG' => $icon_pm,
Füge danach ein

Code: Alles auswählen

  'POSTBOX_NEW' => $l_new_pb,
Öffne language/lang_german/lang_main.php - Finde

Code: Alles auswählen

$lang['PB_mark_read'] = 'Alle Postf&auml;cher als gelesen markieren';
$lang['PB_marked_read'] = 'Die Postf&auml;cher wurden als gelesen markiert.';
Füge danach ein

Code: Alles auswählen

$lang['PB_one_new'] = '(1 neue Nachricht)';
$lang['PB_more_new'] = '(%s neue Nachrichten)';
Öffne templates/subSilver/overall_header.tpl - Finde

Code: Alles auswählen

<a href="{U_POSTBOX}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_postbox.gif" width="12" height="13" border="0" alt="{U_POSTBOX}" hspace="3" />{L_POSTBOX}
Füge direkt danach ein*

Code: Alles auswählen

&nbsp;{POSTBOX_NEW}
* Kann natürlich auch an jede andere, gewünschte Stelle eingefügt werden

HTH
Benutzeravatar
redbull254
Ehemaliges Teammitglied
Beiträge: 10379
Registriert: 05.01.2006 13:01
Kontaktdaten:

Beitrag von redbull254 »

Hallo,Leuchte
das habe ich nicht bei mir in der Datei drin.
Öffne language/lang_german/lang_main.php - Finde
Code:
$lang['PB_mark_read'] = 'Alle Postf&auml;cher als gelesen markieren';
$lang['PB_marked_read'] = 'Die Postf&auml;cher wurden als gelesen markiert.';
Beste Grüße
Walter
Antworten

Zurück zu „phpBB 2.0: Mod Support“