MyBB.de Forum

Normale Version: Account-Löscher
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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
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}'"); 
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?
(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!?
WOW danke dir.
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?
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.
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.
Seiten: 1 2