Benutzerkonto selber löschen: Klappt mit user_delete(array(), $uid); Aber wie lösche ich (vorher) auch seine Beiträge?
Eingetragen von MarkS (54)
am 08.12.2011 - 11:00 Uhr in
am 08.12.2011 - 11:00 Uhr in
Hallo,
ich möchte dem Benutzer die Möglichkeit geben, sein Konto wieder zu löschen. Das klappt mit einem selbstgeschriebenen Modul ganz gut.
Aber leider wird ausschließlich der Benutzer (inkl. Benutzerdaten und Foto) gelöscht. Beiträge (erstellt durch Inhaltstyp Mein_Blog) des Benutzers bleiben erhalten, der Autor wird in "Anonymous" umbenannt.
Das ist für mein Vorhaben ganz schlecht :( Gibt es eine Funktion mit der ich auch die Beiträge eines Benutzers löschen kann?
Danke,
viele Grüße
Mark
- Anmelden oder Registrieren um Kommentare zu schreiben
Schau dir mal das Modul
am 08.12.2011 - 11:16 Uhr
Schau dir mal das Modul http://drupal.org/project/user_delete an - damit kannst du genau diese Option beim Löschen eines Benutzers auswählen.
SteffenR
Dafür würde ich kein neues
am 08.12.2011 - 13:21 Uhr
Dafür würde ich kein neues Modul installieren. Wenn du eh schon ein eigenes Modul hast, mit dem der Benutzer gelöscht wird, dann jag doch vorm Löschen des Benutzers eine DELETE-Anweisung über die Datenbank, welche als WHERE die User-ID des zu löschenden Benutzers enthält, damit werden alle Nodes des Benutzers gelöscht:
<?php
db_query('DELETE FROM {node} WHERE uid = %d;', $uid);
db_query('DELETE FROM {node_revisions} WHERE uid = %d;', $uid);
user_delete(array(), $uid);
?>
Nur so als Beispiel.
Das löscht natürlich nur die Nodes, keine eingefügten Bilder oder so, dann müsste man das erweitern.
Exterior schrieb Dafür würde
am 08.12.2011 - 13:31 Uhr
Dafür würde ich kein neues Modul installieren. Wenn du eh schon ein eigenes Modul hast, mit dem der Benutzer gelöscht wird, dann jag doch vorm Löschen des Benutzers eine DELETE-Anweisung über die Datenbank, welche als WHERE die User-ID des zu löschenden Benutzers enthält, damit werden alle Nodes des Benutzers gelöscht:
<?php
db_query('DELETE FROM {node} WHERE uid = %d;', $uid);
db_query('DELETE FROM {node_revisions} WHERE uid = %d;', $uid);
user_delete(array(), $uid);
?>
Nur so als Beispiel.
Das löscht natürlich nur die Nodes, keine eingefügten Bilder oder so, dann müsste man das erweitern.
Da hast du natürlich recht - man kann sich sonst aus dem Modul user_delete ja auch die paar Zeilen raussuchen und diese dann mit ins eigene Modul übernehmen..
SteffenR
User delete
am 08.12.2011 - 15:03 Uhr
Dafür würde ich kein neues Modul installieren.
Gerade aus Sicherheitsgründen würde ich in solchen Fällen immer empfehlen, ein bereits vorhandenes und getestetes Modul zu verwenden. Speziell wenn es darum geht, Inhalte/Benutzer sauber aus der Datenbank zu entfernen ...
Wenn das eigene Modul aber
am 08.12.2011 - 16:13 Uhr
Wenn das eigene Modul aber noch eine ganze Ecke mehr machen soll und quasi "nebenbei" einen User löscht, dann wird's evtl. schwierig, ein anderes Modul zu verwenden.