Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
Hi,
mal ne frage: Gibt es ein Plugin, was Accounts die noch keinen Post geschrieben haben nach 7 Tagen löscht und alle, die 1 Monat inaktiv waren löscht? Wenn nein, kann jemand soetwas schreiben oder erklären wie man das schriebt? Wär super.
mfg Ryu
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
PHP-Code: <?php function task_inactivemembers($task) { global $db;
// Nicht aktivierte Accounts löschen $cut = TIME_NOW-604800; $query = $db->simple_select("users", "uid", "usergroup = '5' AND regdate < {$cut}");
while($users = $db->fetch_array($query)) { $db->update_query("posts", array('uid' => 0), "uid='{$users['uid']}'"); $db->delete_query("userfields", "ufid='{$users['uid']}'"); $db->delete_query("privatemessages", "uid='{$users['uid']}'"); $db->delete_query("events", "uid='{$users['uid']}'"); $db->delete_query("moderators", "uid='{$users['uid']}'"); $db->delete_query("forumsubscriptions", "uid='{$users['uid']}'"); $db->delete_query("threadsubscriptions", "uid='{$users['uid']}'"); $db->delete_query("sessions", "uid='{$users['uid']}'"); $db->delete_query("banned", "uid='{$users['uid']}'"); $db->delete_query("threadratings", "uid='{$users['uid']}'"); $db->delete_query("users", "uid='{$users['uid']}'");
update_stats(array('numusers' => '-1')); }
add_task_log($task, "Nicht aktivierte Accounts gelöscht."); } ?>
Wenn ich den Code nehme, dann löscht er alle nutzer, die nach 7 Tagen immer noch 0 Beiträge haben. Werden da 7 Tage nach der Registrierung gezählt? Und was wird mit den Usern die 31 Tage nicht on waren. Das müsste noch geändert werden. Ansonsten Danke erstmal.
mfg Ryu
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Versuchs mal so:
PHP-Code: // Nicht aktivierte Accounts löschen $cut = TIME_NOW-60*60*24*7; $cut2 = TIME_NOW-60*60*24*31; $query = $db->simple_select("users", "uid", "usergroup = '5' AND regdate < '{$cut}' OR lastactive < '{$cut2}'");
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
03.07.2009, 07:19
(Dieser Beitrag wurde zuletzt bearbeitet: 03.07.2009, 07:32 von Ryuuzaki.)
Danke, so klingt das doch super. Nur noch ne kleine Frage: Kann man da noch ausnahmen machen, wenn sich jemand im Profil als Abwesend meldet (wenn er dann den Status wieder zurück nimmt, dass von da an die 30 bzw. 7 Tage gezähtwerden?
EDIT: Achso, wär super, wenn ich das als Aufgabe (also Task) einstellen könnte. Geht das da so?
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
(03.07.2009, 07:19)Ryuuzaki schrieb: Kann man da noch ausnahmen machen, wenn sich jemand im Profil als Abwesend meldet? Ja, kann man:
PHP-Code: $query = $db->simple_select("users", "uid", "(usergroup = '5' AND regdate < '{$cut}' OR lastactive < '{$cut2}') AND away != '1'");
(03.07.2009, 07:19)Ryuuzaki schrieb: Achso, wär super, wenn ich das als Aufgabe (also Task) einstellen könnte. Geht das da so? Darum geht es hier doch!?
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
Also ich hab das nun laufen aber es funktioniert nicht. Es schreibt zwar einen Log, aber die User werden nicht gelöscht (also zumindest nicht die, die 7 Tage alt sind und 0 Posts haben.
So ist der Code doch richtig, oder?
PHP-Code: <?php function task_inactivemembers($task) { global $db;
// Nicht aktivierte Accounts löschen $cut = TIME_NOW-60*60*24*7; $cut2 = TIME_NOW-60*60*24*31; $query = $db->simple_select("users", "uid", "(usergroup = '5' AND regdate < '{$cut}' OR lastactive < '{$cut2}') AND away != '1'");
while($users = $db->fetch_array($query)) { $db->update_query("posts", array('uid' => 0), "uid='{$users['uid']}'"); $db->delete_query("userfields", "ufid='{$users['uid']}'"); $db->delete_query("privatemessages", "uid='{$users['uid']}'"); $db->delete_query("events", "uid='{$users['uid']}'"); $db->delete_query("moderators", "uid='{$users['uid']}'"); $db->delete_query("forumsubscriptions", "uid='{$users['uid']}'"); $db->delete_query("threadsubscriptions", "uid='{$users['uid']}'"); $db->delete_query("sessions", "uid='{$users['uid']}'"); $db->delete_query("banned", "uid='{$users['uid']}'"); $db->delete_query("threadratings", "uid='{$users['uid']}'"); $db->delete_query("users", "uid='{$users['uid']}'");
update_stats(array('numusers' => '-1')); }
add_task_log($task, "Nicht aktivierte Accounts gelöscht."); } ?>
Was geht da nicht?
BTW: muss das away nicht != '0' sein?
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Irgendwas stimmt mit dem Query nicht. Versuchs mal so:
PHP-Code: $query = $db->simple_select("users", "uid", "((usergroup = '5' AND regdate < '{$cut}') OR lastactive < '{$cut2}') AND away != '1'");
Das mit dem away != '1' ist korrekt, da du ja nur Benutzer löschen willst, die nicht abwesend sind.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 68
Themen: 15
Registriert seit: 26.05.2009
08.07.2009, 08:47
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2009, 08:50 von Ryuuzaki.)
Ja stimmt, danke. Aber es funktioniert leider immer noch nciht. Ihc hab ein User, der war zuletzt am 23.6.09 on (hat sich da auch registriert) und hat 0 Beiträge. Aber er wird nicht gelöscht.
EDIT: Vielleciht klappt das auch mit der Usergroup nciht. Die 5 ist doch bestimmt für Registrierte Spieler. Ich lass ihnen das immer als Hauptgruppe und geb ihnen eine selbst erstellte Gruppe als Anzeigegruppe und auch gleichzeitig als skeundäre Gruppe.
|