Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Account-Löscher
#1
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
#2
Siehe: https://www.mybb.de/forum/thread-11791.html

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#3
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
#4
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#5
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?
#6
(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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#7
WOW danke dir.
#8
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?
#9
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#10
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.