Gelöschte User nicht als Gäste?
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
- SethDeBlade
- Beiträge: 708
- Registriert: Mo 31.Mai, 2004 02:31
- Kontaktdaten:
Gelöschte User nicht als Gäste?
Ich hab da mal ne Frage.
Wenn ich einen User lösche, z.B. weil er null Postings hatte, dann ist es ja nicht weiter tragisch. Wenn nun aber ein User mehrere Postings geschrieben hat und seit X Monaten nicht mehr im Forum war, dann ist das Löschen ja nicht so toll. Der User wird gelöscht, und mit ihm auch die Zuordnung in den Postings. Wenn ich mehrere User lösche, dann weiß ich ja nicht mehr, welche Posts von wem sind, da ja bei den Posts jetzt Gast als Poster steht.
Meine Frage daher: Gibt es einen Mod, mit dem ich einstellen kann, wie mit gelöschten Usern umgehen möchte? Z.B. wenn der gelöschte User Fritz heißt, dann soll nach dem Löschen z.B. Fritz_gelöscht oder sowas erscheint. Gibt es sowas??
Wenn ich einen User lösche, z.B. weil er null Postings hatte, dann ist es ja nicht weiter tragisch. Wenn nun aber ein User mehrere Postings geschrieben hat und seit X Monaten nicht mehr im Forum war, dann ist das Löschen ja nicht so toll. Der User wird gelöscht, und mit ihm auch die Zuordnung in den Postings. Wenn ich mehrere User lösche, dann weiß ich ja nicht mehr, welche Posts von wem sind, da ja bei den Posts jetzt Gast als Poster steht.
Meine Frage daher: Gibt es einen Mod, mit dem ich einstellen kann, wie mit gelöschten Usern umgehen möchte? Z.B. wenn der gelöschte User Fritz heißt, dann soll nach dem Löschen z.B. Fritz_gelöscht oder sowas erscheint. Gibt es sowas??
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ist mir nicht bekannt.
Sollte aber nicht das Problem sein, wenn man nur aus dem ACP raus lösche. Dann könnte man in allen Posts, die der User geschrieben hatte, den Nicknamen entsprechend ändern. Ist dann nur eine zusätzliche SQL-Anweisung mehr.
Sollte aber nicht das Problem sein, wenn man nur aus dem ACP raus lösche. Dann könnte man in allen Posts, die der User geschrieben hatte, den Nicknamen entsprechend ändern. Ist dann nur eine zusätzliche SQL-Anweisung mehr.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- SethDeBlade
- Beiträge: 708
- Registriert: Mo 31.Mai, 2004 02:31
- Kontaktdaten:
jo, habe ich mir auch gedacht, dass das nicht so schwer sein sollte. man könnte ja den username ändern evtl auch die profildaten löschen. Irgendwie müsste man verhindern, dass die User sich nicht mehr mit dem geänderten Namen einloggen können. Vielleicht kann man das ja so einrichten, dass User mit dem entsprechenden Zusatz sich nicht mehr einloggen können, oder man ändert beim "löschen" das Passwort in eine sehr lange kaum zu erratene Zeichenfolge.
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Oder Du deaktivierst den Account einfach, ohne ihn zu löschen. Dann kann er sich nicht einloggen und die Posts behalten noch die Original-Daten.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- SethDeBlade
- Beiträge: 708
- Registriert: Mo 31.Mai, 2004 02:31
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Wenn Du im ACP unter Benutzer > Einstellungen ein Profil aufruft, kannst Du ganz weit unten den Benutzer auf "inaktiv" setzen. Damit ist der Account gesperrt, bleibt aber erhalten.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- SethDeBlade
- Beiträge: 708
- Registriert: Mo 31.Mai, 2004 02:31
- Kontaktdaten:
Ein kleiner Tipp:
Erstelle eine neue Gruppe zb. Fahnenflüchtige
oder sowas in der Richtung!
Dann stellst du bei dieser Gruppe alle Rechte auf 0.
Anschliessend verschiebst du alle User in diese Gruppe!
Ich mach dies nur so, weil eben fahnenflüchtige nicht wissen dürfen was im Forum geschrieben wird (Onlinegame), ansonsten würde ich da nichts machen in der Richtung! Immerhin stört es ka keinen oder?
Erstelle eine neue Gruppe zb. Fahnenflüchtige
oder sowas in der Richtung!
Dann stellst du bei dieser Gruppe alle Rechte auf 0.
Anschliessend verschiebst du alle User in diese Gruppe!
Ich mach dies nur so, weil eben fahnenflüchtige nicht wissen dürfen was im Forum geschrieben wird (Onlinegame), ansonsten würde ich da nichts machen in der Richtung! Immerhin stört es ka keinen oder?
Wahrscheinlich hakt man mir hier bald die Finger spitz, wenn ich so alte postings raushole
Eine ähnliche Variante ist ja, dass nicht der Admin den Account löscht, sondern der User selbst, gibt man ihm die Möglichkeit dazu *g*
Das geht z.B. mit diesem Mod: Account Self-Delete
Das funktioniert soweit auch. Ebenfalls habe ich vorher registriert, dass nach dem Löschen des Accounts "Gast" als Usernick gesetzt wird. Verstehen tu ich es nur nicht, denn, eigentlich müsste es im MOD schon drin sein, dass der Username erhalten bleibt:
Die Zelle post_username exitiert in der DB, nur wird beim Löschen diese nicht gefüllt
Schreibt man den Nick von Hand hinein, ist alles ok.
Kann es sein, das $username zum Zeitpunkt des Löschens leer ist, bzw. nicht erkannt wird?
Ich hab von php, coden, skripten leider nicht den Durchblick. Da hilft auch eine Brille nicht.
Wäre dankbar, wenn sich jemand erbarmen würde vielleicht einmal drüberzuschauen ^d
Ich habs schon anderweitig versucht, zig mal die Suche bentzt, aber entweder kann, oder will man mir nicht weiterhelfen ...
Eine ähnliche Variante ist ja, dass nicht der Admin den Account löscht, sondern der User selbst, gibt man ihm die Möglichkeit dazu *g*
Das geht z.B. mit diesem Mod: Account Self-Delete
Das funktioniert soweit auch. Ebenfalls habe ich vorher registriert, dass nach dem Löschen des Accounts "Gast" als Usernick gesetzt wird. Verstehen tu ich es nur nicht, denn, eigentlich müsste es im MOD schon drin sein, dass der Username erhalten bleibt:
Code: Alles auswählen
$sql = "UPDATE " . POSTS_TABLE . "
SET poster_id = " . DELETED . ", post_username = '$username'
WHERE poster_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql);
}
Schreibt man den Nick von Hand hinein, ist alles ok.
Kann es sein, das $username zum Zeitpunkt des Löschens leer ist, bzw. nicht erkannt wird?
Ich hab von php, coden, skripten leider nicht den Durchblick. Da hilft auch eine Brille nicht.
Wäre dankbar, wenn sich jemand erbarmen würde vielleicht einmal drüberzuschauen ^d
Ich habs schon anderweitig versucht, zig mal die Suche bentzt, aber entweder kann, oder will man mir nicht weiterhelfen ...
Nicht erschrecken, dass ist die gesamte Install des Mods.
Der Part wird in der usercp_register.php in einem Block eingebaut
Der Part wird in der usercp_register.php in einem Block eingebaut
Code: Alles auswählen
##############################################################
## MOD Title : Account Self-Delete
## MOD Author: Poupoune < poupoune@phpbb-fr.com > (N/A) http://php-tools.org/poupoune/
##
## MOD Description : This MOD allows users to delete their own account on your board.
## This feature can be desactivated in the ACP.
##
## MOD Version : 1.0.0
##
## Installation Level : Easy
## Installation Time : 5 minute(s)
## Files To Edit : 5
## admin/admin_board.php
## includes/usercp_register.php
## language/lang_english/lang_main.php
## language/lang_english/lang_admin.php
## templates/subSilver/admin/board_config_body.tpl
## templates/subSilver/profile_add_body.tpl
## Included Files : 0
##
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes :
##
##############################################################
## MOD History :
##
## 10-08-2004 - Version 1.0.0
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ SQL ]----------------------------------------------
#
INSERT INTO `phpbb_config` VALUES ('account_delete', '1');
#
#-----[ OPEN ]----------------------------------------------
#
admin/admin_board.php
#
#-----[ FIND ]----------------------------------------------
#
$disable_board_yes = ( $new['board_disable'] ) ? "checked=\"checked\"" : "";
$disable_board_no = ( !$new['board_disable'] ) ? "checked=\"checked\"" : "";
#
#-----[ AFTER, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
$account_delete_yes = ( $new['account_delete'] ) ? "checked=\"checked\"" : "";
$account_delete_no = ( !$new['account_delete'] ) ? "checked=\"checked\"" : "";
// End Account Self-Delete MOD
#
#-----[ FIND ]----------------------------------------------
#
"L_DISABLE_BOARD_EXPLAIN" => $lang['Board_disable_explain'],
#
#-----[ AFTER, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
"L_ACCOUNT_DELETE" => $lang['account_delete'],
// End Account Self-Delete MOD
#
#-----[ FIND ]----------------------------------------------
#
"S_DISABLE_BOARD_NO" => $disable_board_no,
#
#-----[ AFTER, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
"S_ACCOUNT_DELETE_YES" => $account_delete_yes,
"S_ACCOUNT_DELETE_NO" => $account_delete_no,
// End Account Self-Delete MOD
#
#-----[ OPEN ]----------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]----------------------------------------------
#
$strip_var_list = array(
#
#-----[ BEFORE, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
if( $HTTP_POST_VARS['deleteuser'] )
{
$message = "<form action=\"". append_sid("profile.$phpEx?mode=editprofile") ."\" method=\"post\">". $lang['Delete_account_question'] ."<br /><br /><input type=\"submit\" name=\"delete_confirm\" value=\"". $lang['Yes'] ."\" class=\"mainoption\" /> <input type=\"submit\" name=\"delete_cancel\" value=\"". $lang['No'] ."\" class=\"liteoption\" /><input type=\"hidden\" name=\"user_id\" value=\"$user_id\" /></form>";
message_die(GENERAL_MESSAGE, $message);
}
// End Account Self-Delete MOD
#
#-----[ FIND ]----------------------------------------------
#
//
// Let's make sure the user isn't logged in while registering,
// and ensure that they were trying to register a second time
// (Prevents double registrations)
//
#
#-----[ BEFORE, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD ** Code from admin/admin_users.php
if( isset($HTTP_POST_VARS['delete_confirm']) )
{
$user_id = intval( $HTTP_POST_VARS['user_id'] );
$sql = "SELECT g.group_id
FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
WHERE ug.user_id = $user_id
AND g.group_id = ug.group_id
AND g.group_single_user = 1";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$sql = "UPDATE " . POSTS_TABLE . "
SET poster_id = " . DELETED . ", post_username = '$username'
WHERE poster_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_poster = " . DELETED . "
WHERE topic_poster = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . VOTE_USERS_TABLE . "
SET vote_user_id = " . DELETED . "
WHERE vote_user_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "SELECT group_id
FROM " . GROUPS_TABLE . "
WHERE group_moderator = $user_id";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql);
}
while ( $row_group = $db->sql_fetchrow($result) )
{
$group_moderator[] = $row_group['group_id'];
}
if ( count($group_moderator) )
{
$update_moderator_id = implode(', ', $group_moderator);
$sql = "UPDATE " . GROUPS_TABLE . "
SET group_moderator = " . $userdata['user_id'] . "
WHERE group_moderator IN ($update_moderator_id)";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
}
}
$sql = "DELETE FROM " . USERS_TABLE . "
WHERE user_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . USER_GROUP_TABLE . "
WHERE user_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . GROUPS_TABLE . "
WHERE group_id = " . $row['group_id'];
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
WHERE group_id = " . $row['group_id'];
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
WHERE user_id = $user_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . BANLIST_TABLE . "
WHERE ban_userid = $user_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql);
}
$sql = "SELECT privmsgs_id
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_from_userid = $user_id
OR privmsgs_to_userid = $user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql);
}
// This little bit of code directly from the private messaging section.
while ( $row_privmsgs = $db->sql_fetchrow($result) )
{
$mark_list[] = $row_privmsgs['privmsgs_id'];
}
if ( count($mark_list) )
{
$delete_sql_id = implode(', ', $mark_list);
$delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
WHERE privmsgs_text_id IN ($delete_sql_id)";
$delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_id IN ($delete_sql_id)";
if ( !$db->sql_query($delete_sql) )
{
message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql);
}
if ( !$db->sql_query($delete_text_sql) )
{
message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql);
}
}
$message = $lang['User_deleted'] . '<br /><br />' . sprintf($lang['Click_return_userprofile'], '<a href="' . append_sid("profile.$phpEx?mode=editprofile") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
// End Account Self-Delete MOD
#
#-----[ FIND ]----------------------------------------------
#
'L_ALWAYS_ADD_SIGNATURE' => $lang['Always_add_sig'],
#
#-----[ AFTER, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
'L_ACCOUNT_DELETE' => $lang['Account_delete'],
'L_DELETE_ACCOUNT_EXPLAIN' => $lang['Account_delete_explain'],
// End Account Self-Delete MOD
#
#-----[ FIND ]----------------------------------------------
#
if ( $mode != 'register' )
{
#
#-----[ AFTER, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
if( $board_config['account_delete'] )
{
$template->assign_block_vars('account_delete_block', array() );
}
// End Account Self-Delete MOD
#
#-----[ OPEN ]----------------------------------------------
#
language/lang_english/lang_admin.php
#
#-----[ FIND ]----------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
$lang['account_delete'] = 'Allows users to delete their own accounts';
// End Account Self-Delete MOD
#
#-----[ OPEN ]----------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]----------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]----------------------------------------------
#
// Begin Account Self-Delete MOD
$lang['Account_delete'] = 'Do you want to delete your account on this board?';
$lang['Account_delete_explain'] = 'Deletion of your account cannot be undone';
$lang['User_deleted'] = 'Your account has been sucessfully deleted.';
$lang['Delete_account_question'] = 'Deletion of your account will delete all personnal informations that concerns you in your profile, inside the database of this board. The messages you wrote in this board will have as post author a guest. <b>Attention !</b> all deletion can not be undone.<br /><br />Do you want to delete your account in this board?';
// End Account Self-Delete MOD
#
#-----[ OPEN ]----------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl
#
#-----[ FIND ]----------------------------------------------
#
<tr>
<td class="row1">{L_ALLOW_NAME_CHANGE}</td>
<td class="row2"><input type="radio" name="allow_namechange" value="1" {NAMECHANGE_YES} /> {L_YES} <input type="radio" name="allow_namechange" value="0" {NAMECHANGE_NO} /> {L_NO}</td>
</tr>
#
#-----[ AFTER, ADD ]----------------------------------------------
#
<tr>
<td class="row1">{L_ACCOUNT_DELETE}</td>
<td class="row2"><input type="radio" name="account_delete" value="1" {S_ACCOUNT_DELETE_YES} /> {L_YES} <input type="radio" name="account_delete" value="0" {S_ACCOUNT_DELETE_NO} /> {L_NO}</td>
</tr>
#
#-----[ OPEN ]----------------------------------------------
#
templates/subSilver/profile_add_body.tpl
#
#-----[ FIND ]----------------------------------------------
#
<!-- Visual Confirmation -->
#
#-----[ BEFORE, ADD ]----------------------------------------------
#
<!-- BEGIN account_delete_block -->
<tr>
<td class="row1"><span class="gen">{L_ACCOUNT_DELETE}</span></td>
<td class="row2">
<input type="checkbox" name="deleteuser">
<span class="gensmall">{L_DELETE_ACCOUNT_EXPLAIN}</span></td>
</tr>
<!-- END account_delete_block -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Kurios ist, daß die Konstante DELETED, wie hier verwendet
nicht definiert wird. Von daher wundert es mich, daß entweder der Mod wirklich komplett ist oder dieser überhaupt funktioniert.
Code: Alles auswählen
$sql = "UPDATE " . POSTS_TABLE . "
SET poster_id = " . DELETED . ", post_username = '$username'
WHERE poster_id = $user_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql);
}
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Öhm, also den Link zum Mod habe ich ja hier gepostet.
Funktionieren tut er auch. Die Ergebnisse kannst du hier sehen: Test
In diesem Test-Beispiel habe ich im ersten Beitrag den ursprünglichen Nick von Hand in die DB (post_username) eingetragen.
Im zweiten Beispiel hab ich den User einfach nur über die Account-Self-delete Funktion im Profil gelöscht.
Ich nehme an, da der Mod in die includes/usercp_register.php integriert wird, das dort die Konstante DELETED bereits definiert wird. Nachgesehen habe ich aber nicht. Bin mir auch nicht sicher, ob ich es erkennen würde.
Funktionieren tut er auch. Die Ergebnisse kannst du hier sehen: Test
In diesem Test-Beispiel habe ich im ersten Beitrag den ursprünglichen Nick von Hand in die DB (post_username) eingetragen.
Im zweiten Beispiel hab ich den User einfach nur über die Account-Self-delete Funktion im Profil gelöscht.
Ich nehme an, da der Mod in die includes/usercp_register.php integriert wird, das dort die Konstante DELETED bereits definiert wird. Nachgesehen habe ich aber nicht. Bin mir auch nicht sicher, ob ich es erkennen würde.
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
In der constants.php wird es definiert:
Und dadurch wird der User gleich einem anonymen Gast gesetzt. Der Username sollte dann bestenfalls in den Post eingetragen werden, damit man diesen auch später noch zuordnen kann.
Werde ich mal prüfen, ob der Mod hier sauber arbeitet.
Code: Alles auswählen
define('DELETED', -1);
Werde ich mal prüfen, ob der Mod hier sauber arbeitet.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Im Grunde ist es einfach, warum der Username nicht gespeichert wird:
Der wird nicht vorher ausgelesen und bleibt damit leer. Die Folge: Es wird "Gast" angezeigt.
Hier der entsprechende Fix:
Dieses basiert auf den eingebauten Mod. Damit wird das Versäumnis des Mod Autoren ausgeglichen, den Usernamen vorher aus der Datenbank zu holen, bevor die User-Daten endgültig gelöscht wurden.
Der wird nicht vorher ausgelesen und bleibt damit leer. Die Folge: Es wird "Gast" angezeigt.
Hier der entsprechende Fix:
Code: Alles auswählen
#
#-----[ OPEN ]----------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]----------------------------------------------
#
// Begin Account Self-Delete MOD ** Code from admin/admin_users.php
if( isset($HTTP_POST_VARS['delete_confirm']) )
{
$user_id = intval( $HTTP_POST_VARS['user_id'] );
#
#-----[ AFTER, ADD ]----------------------------------------------
#
$sql = "SELECT username FROM " . USERS_TABLE . "
WHERE user_id = $user_id";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain username for this user', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$username = $row['username'];
}
$db->sql_freeresult($result);
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ist nicht schwer. Man muss nur
1. Einmal verstanden haben, wie der logische Ablauf im Programm ist (Logisches Talent willkommen)
2. Den Ablauf auf Vollständigkeit prüfen. Und zwar zunächst "im Kopf".
Dabei ist mir eben dieser Fehler aufgefallen. Der Rest ist dann wieder PHP-Wissen: Die fehlenden Daten abfragen und den Folgefunktionen bereitstellen.
Ist im Grunde vergleichbar mit Vokallernen mit Kenntnis von mathematischen Formeln
1. Einmal verstanden haben, wie der logische Ablauf im Programm ist (Logisches Talent willkommen)
2. Den Ablauf auf Vollständigkeit prüfen. Und zwar zunächst "im Kopf".
Dabei ist mir eben dieser Fehler aufgefallen. Der Rest ist dann wieder PHP-Wissen: Die fehlenden Daten abfragen und den Folgefunktionen bereitstellen.
Ist im Grunde vergleichbar mit Vokallernen mit Kenntnis von mathematischen Formeln
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Viewforum Announces/News Last Poster = Gast
Guten Morgen,
meine Änderung, wo ich mich hier inspirieren hab lassen, soll bewirken, dass in der Beitragsansicht, sorry nicht Forenansicht, da schauts gut aus, der letzte Poster, der via ACP gelöscht wurde, als Name erscheint und nicht Gast als letzter Poster zu lesen ist.
Der alte Zustand war dieser:
Ein User ist gelöscht, der $last_post_author ist Gast.
Das ist unschön.
Nach meiner Änderung, wie oben aufgeführt steht das.
Das ist super, aber leider noch nicht 100%.
Ist ein Beitrag auf News oder Announce gesetzt steht wieder Gast
Ändere ich den Code
so ab
Dann stehen in den Beiträgen die auf News und Announce gesetzt sind der Name des gelöschten Users, aber in den normalen Beiträgen dann Gast.
Wie kann das Problem bitte elegant gelöst werden?
Ich habe zur Sicherheit die Datei functions_topics_list.php mit angehangen.
Gruß Stöbi
Nachtrag:
Möchte mich für das Erstellen eines neuen Beitrages, obwohl schon ein ähnlicher Thread vorhanden, entschuldigen.
Nachtrag2:
Folgende Dinge habe ich geschafft. Es wird jetzt sowohl in einer Ankündigung, News, Globalen Ankündigung und auch im normalen Beiträgen der Username angezeigt, aber wenn ich in einem
Forum Gäste erlaube zu schreiben, und die keinen Benutzernamen angeben, bleibt das Feld leer.
Mein neuer Code:
Liegt wohl an diesem CH MOD.
Wenn ich diese Zeile einfüge
Dann steht zwar nun Gast, aber bei den den Beiträgen wo der letzte Poster gelöscht wurde dann auch $lang['Guest']<post_username>.
Z. B. => GastStoebi
Ich weiss echt nicht mehr, was ich noch tun kann.
meine Änderung, wo ich mich hier inspirieren hab lassen, soll bewirken, dass in der Beitragsansicht, sorry nicht Forenansicht, da schauts gut aus, der letzte Poster, der via ACP gelöscht wurde, als Name erscheint und nicht Gast als letzter Poster zu lesen ist.
Der alte Zustand war dieser:
Ein User ist gelöscht, der $last_post_author ist Gast.
Das ist unschön.
Nach meiner Änderung, wie oben aufgeführt steht das.
Das ist super, aber leider noch nicht 100%.
Ist ein Beitrag auf News oder Announce gesetzt steht wieder Gast
Ändere ich den Code
Code: Alles auswählen
$last_post_author = ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ? ( ($topic_rowset[$i]['post_username2'] != '' ) ? $topic_rowset[$i]['post_username2'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
Code: Alles auswählen
$last_post_author = ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ? ( ($topic_rowset[$i]['post_username'] != '' ) ? $topic_rowset[$i]['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
Wie kann das Problem bitte elegant gelöst werden?
Ich habe zur Sicherheit die Datei functions_topics_list.php mit angehangen.
Gruß Stöbi
Nachtrag:
Möchte mich für das Erstellen eines neuen Beitrages, obwohl schon ein ähnlicher Thread vorhanden, entschuldigen.
Nachtrag2:
Folgende Dinge habe ich geschafft. Es wird jetzt sowohl in einer Ankündigung, News, Globalen Ankündigung und auch im normalen Beiträgen der Username angezeigt, aber wenn ich in einem
Forum Gäste erlaube zu schreiben, und die keinen Benutzernamen angeben, bleibt das Feld leer.
Mein neuer Code:
Code: Alles auswählen
$last_post_author = ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ? ( ($topic_rowset[$i]['post_username'] != '' ) ? $topic_rowset[$i]['post_username'] : '' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
$last_post_author .= ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ? ( ($topic_rowset[$i]['post_username2'] != '' ) ? $topic_rowset[$i]['post_username2'] : '' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
Wenn ich diese Zeile einfüge
Code: Alles auswählen
$last_post_author = ($topic_author_name != '' ) ? $topic_author_name : $lang['Guest'];
Z. B. => GastStoebi
Ich weiss echt nicht mehr, was ich noch tun kann.
Zuletzt geändert von Stoebi am Di 19.Jul, 2005 17:04, insgesamt 3-mal geändert.
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Wird denn beim Löschen eines Users dessen Name in den Beiträgen angezeigt, d.h. genauer: Durch einen anderen Mod in den Posts hinterlegt?
Dann sollte die ursprüngliche Variation in der functions_topics_list.php funktionieren. Wenn nicht, dann kannst Du probieren, wie Du willst: Es führt nicht 100%ig zum Erfolg. Ohne Username ist nunmal keine Anzeige möglich, wenn die User-ID schon nicht mehr in der User-Tabelle zu finden ist.
Dann sollte die ursprüngliche Variation in der functions_topics_list.php funktionieren. Wenn nicht, dann kannst Du probieren, wie Du willst: Es führt nicht 100%ig zum Erfolg. Ohne Username ist nunmal keine Anzeige möglich, wenn die User-ID schon nicht mehr in der User-Tabelle zu finden ist.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
[quote="oxpus - Di 19.Jul, 2005 17:12";p="39023"]Wird denn beim Löschen eines Users dessen Name in den Beiträgen angezeigt, d.h. genauer: Durch einen anderen Mod in den Posts hinterlegt?
Dann sollte die ursprüngliche Variation in der functions_topics_list.php funktionieren. Wenn nicht, dann kannst Du probieren, wie Du willst: Es führt nicht 100%ig zum Erfolg. Ohne Username ist nunmal keine Anzeige möglich, wenn die User-ID schon nicht mehr in der User-Tabelle zu finden ist.[/quote]
Versteh schon. Dann wäre die einzige Alternative, das Feld post_username in der Tabelle phpbb2_posts mit Gast zu füllen, wenn kein Benutzername angegeben wurde.
Ab wo und wie?
Gruß Stöbi
Nachtrag:
Ich habe ja deine Frage nicht beantwortet.
Ja, das Löschen des Names eines Users wird vorher im Feld post_username in der Tabelle phpbb2_posts hinterlegt.
Das ist nur durch die Änderung von hier http://ptifo.clanmckeen.com/viewtopic.php?t=1085 möglich geworden.
Dann sollte die ursprüngliche Variation in der functions_topics_list.php funktionieren. Wenn nicht, dann kannst Du probieren, wie Du willst: Es führt nicht 100%ig zum Erfolg. Ohne Username ist nunmal keine Anzeige möglich, wenn die User-ID schon nicht mehr in der User-Tabelle zu finden ist.[/quote]
Versteh schon. Dann wäre die einzige Alternative, das Feld post_username in der Tabelle phpbb2_posts mit Gast zu füllen, wenn kein Benutzername angegeben wurde.
Ab wo und wie?
Gruß Stöbi
Nachtrag:
Ich habe ja deine Frage nicht beantwortet.
Ja, das Löschen des Names eines Users wird vorher im Feld post_username in der Tabelle phpbb2_posts hinterlegt.
Das ist nur durch die Änderung von hier http://ptifo.clanmckeen.com/viewtopic.php?t=1085 möglich geworden.
Zuletzt geändert von Stoebi am Di 19.Jul, 2005 17:42, insgesamt 2-mal geändert.
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ja, und steht denn auch der Username in der Tabelle?
Dann wäre functions_topics_list.php eben nicht anzupassen
Dann wäre functions_topics_list.php eben nicht anzupassen
Zuletzt geändert von oxpus am Di 19.Jul, 2005 17:42, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!