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.