MyBB.de Forum
Account-Löscher - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.4.x (https://www.mybb.de/forum/forum-51.html)
+---- Forum: Sonstiges (https://www.mybb.de/forum/forum-55.html)
+---- Thema: Account-Löscher (/thread-13613.html)

Seiten: Seiten: 1 2


Account-Löscher - Ryuuzaki - 26.06.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


RE: Account-Löscher - Michael - 26.06.2009

Siehe: https://www.mybb.de/forum/thread-11791.html


RE: Account-Löscher - Ryuuzaki - 29.06.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


RE: Account-Löscher - Michael - 29.06.2009

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}'"); 



RE: Account-Löscher - Ryuuzaki - 03.07.2009

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?


RE: Account-Löscher - Michael - 03.07.2009

(03.07.2009, 08: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, 08: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!?


RE: Account-Löscher - Ryuuzaki - 04.07.2009

WOW danke dir.


RE: Account-Löscher - Ryuuzaki - 07.07.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?


RE: Account-Löscher - Michael - 07.07.2009

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.


RE: Account-Löscher - Ryuuzaki - 08.07.2009

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.