Seite 2 von 3

Verfasst: 19.09.2005 16:59
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 !

Verfasst: 20.09.2005 08:29
von muffin-of
Guten Morgen :) ,
hat denn wirklich keiner einer Idee, woran es liegen könnte ? :(

Verzweifelte Grüsse :cry:

Verfasst: 23.09.2005 12:59
von muffin-of
:( Einen Schubs-Versuch sei mir noch gestattet :wink:

Verfasst: 24.02.2006 02:12
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.

Verfasst: 24.02.2006 16:49
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:

Verfasst: 24.02.2006 18:08
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.

Verfasst: 24.02.2006 18:30
von mauswurf
Spitze, nu funktioniert´s :wink:
Vielen Dank für die Mühe !

Verfasst: 22.10.2006 17:31
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. ;-(

Verfasst: 01.11.2006 21:29
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

Verfasst: 02.11.2006 19:49
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.';