Hallo,
man sollte Inaktive Mitglieder per Mail anschreiben können, also alle die 0 Posts haben, direkt alle über ein Formular oder so per Mail anschreiben!
Ort: / Boardübersicht / Code Hack Requests / Inaktive Mitglieder
Seite 1 von 1
Hallo,
man sollte Inaktive Mitglieder per Mail anschreiben können, also alle die 0 Posts haben, direkt alle über ein Formular oder so per Mail anschreiben!
gute idee für nen hack, werd versuchen das in den nächsten tagen mal aufzugreifen, als zusatzoption beim newsletter.
allerdings steht im mom ne wohnzimmerrenovierung an *stöhn*
Jo, das wäre cool wenn du das machen könntest!
okay, hier der Hack, und damit kommts auch ins Code Hacks Forum:
es reicht EINE datei zu ändern:
admin/newsletter.php
in zeile ~108 einfügen:
<tr valign="top"> <td align="left" colspan="3"> <input type="radio" name="sendto" value="nopost"> User with no posts</td> </tr>
und in zeile ~153 das hier einfügen:
else if( $sendto == 'nopost' ) { $where_sql = " WHERE userposts = '0' "; }
funzt per pm in 2.73 komplett ohne probleme ;)
danke!!!!!!
Hallo,
es funzt soweit, doch der Newsletter wurde nur an 30 Benutzer gesendet, owbohl ich 62 registriete benutzer habe und nur 19 davon aktiv sind!?
Bei mirwurde er an alle versendet obwohl bis auf einen alle min.1 post hatten!!
else if( $sendto == 'nopost' ) { $where_sql = " WHERE userposts = '0' "; }
durch
else if ($sendto=='nopost') { $where_sql = " WHERE userlastpost < ".time() - 60 * 60 * 24 * 30." "; //alle, die 30 Tage nichts gepostet haben... }
Hoffe, das macht weniger Probs...
[Edit]
Fehler...
[/Edit]
das gibt aber acuh ein anderes ergebnis...
@tobi: inaktive user sind nicht immer welche ohne post...
hallo,
ich möchte mir das auch mit einbauen, habe aber noch einige fragen dazu? muß ich die mitglieder selber raussuchen, welche die tage nichts gepostet haben, oder werde ich darauf aufmerksam gemacht? wie läuft das denn ab? wenn ich die mitglieder trotzdem selber raussuchen müßte, dann brauche ich ja den hack nicht, deswegen meine frage. kann man eventuell nicht einen hack machen, der alle von selbst kickt? ist so etwas machbar? wäre über antworten sehr dankbar.
mfg yorki
Schreib dir eine neue PHP-Datei mit folgendem Inhalt:
include "./inc/config.inc.php"; $res=thwb_query("SELECT userid, username, userposts FROM ".$pref."user WHERE userlastpost<".time() - 60 * 60 * 24 * 30); if (mysql_num_rows($res)==0) die("Keine User, die inaktiv sind gefunden!"); echo "Folgende User wurden gekickt:<br>"; $res2=thwb_query("SELECT userid FROM ".$pref."user WHERE username='[Deleted]' AND userlevel=0 LIMIT 1"); if (mysql_num_rows($res2)==0) { thwb_query("INSERT INTO ".$pref."user (username) VALUES ('[Deleted]')"); $newuser=mysql_insert_id(); } else { $newuserres=mysql_fetch_array($res2); $newuser=$res2['userid']; } while ($user=mysql_fetch_array($res)) { echo "User $user[username] ($user[userid])<br>"; if ($user['userposts']>0) { thwb_query("UPDATE ".$pref."post SET userid=$newuser WHERE userid=$user[userid]"); } thwb_query("UPDATE ".$pref."pm SET pmtoid=$newuser WHERE pmtoid=$user[userid]"); thwb_query("UPDATE ".$pref."pm SET pmfromid=$newuser WHERE pmfromid=$user[userid]"); thwb_query("DELETE FROM ".$pref."user WHERE userid=$user[userid]"); thwb_query("DELETE FROM ".$pref."lastvisited WHERE userid=$user[userid]"); } die("Alle User, die inaktiv sind wurden somit gelöscht!");
Habs jetzt kurz aus dem Kopf geschrieben... Vor dem ausführen im richtigen Board bitte zuerst in einem Test-Board ausprobieren...
Ich empfehle die Benützung solcher Skripts allerdings nicht, da sie Probleme hervorrufen können...
[Edit]
Die Datei dann natürlich in das Board-Verzeichniss uploaden und ausführen ;) und am Schluss am besten wieder löschen oder den CHMOD so ändern, dass man sie nicht ausführen kann (sonst wirds Probleme geben...)
[/Edit]
[Edit2]
Die Admins, OPs und Mods werden jetzt auch nicht mehr gelöscht...
[/Edit2]
@Superhausi,
ich habe mal testweise nur das hier eingesetzt
include "./inc/config.inc.php"; $res=thwb_query("SELECT userid, username, userposts FROM ".$pref."user WHERE userlastpost<".time() - 60 * 60 * 24 * 30); if (mysql_num_rows($res)==0) die("Keine User, die inaktiv sind gefunden!"); echo "Folgende User wurden gekickt:<br>";
kommt fehlermeldung: Call to undefined function
und welche funktion ist undefiniert?
das wäre ev. noch wichtig... ev. ein schreibfehler...
[Edit]
Sorry, sollte include "./inc/header.inc.php"; heissen...
[/Edit]
jetzt kommt dieser fehler:
MySQL: You have an error in your SQL syntax near '-2592000' at line 1
Query: -2592000
wie gesagt, habe in der php nur das obige drin, also nicht alles, wollte mir nur mal anzeigen lassen welche user gefunden werden
Superhausi postete
Schreib dir eine neue PHP-Datei mit folgendem Inhalt:
[code]
$res=thwb_query("SELECT userid, username, userposts FROM ".$pref."user
WHERE userlastpost<".time() - 60 * 60 * 24 * 30);
[/code]
dieser code funst so nett
richtig muss es heissen:
$res=thwb_query("SELECT userid, username, userposts FROM ".$pref."user WHERE userlastpost < ".(time() - 60 * 60 * 24 * 30));
nun ein paar probs die ich dabei festgestellt habe, bzw was mir daran nicht so gefällt:
User die sich gerade neu registriert haben werden auch gelöscht :(
Alle user mit 0 post werden gelöscht, dabei scheint die zeit keine rolle zu spielen
warum wird in der db (deletet) eingetragen und der User nicht richtig aus der db entfernt?
ist es nicht möglich, daß man die user auflistet, welche gekickert werden sollen und man jeden einzelnen user per mausklick dann kickt?
1. Ich weiss, ist ein kleines Problem. Mach beim query noch AND userjoin>".(time()-60*60*24*30) hin
2. Damit im Forum dann nicht einfach Fehler auftauchen (Wer hat den Beitrag geschrieben)
3. Könnte man machen, ist aber zusätzliche Arbeit und ich habe keine Lust dazu. :D :p
Hallo!
Könnte man soetwas nicht auch für solche Leute machen, die sich seit Ihrer Registrierung oder dem letzten Login nicht wieder nach soundsovielen Tagen eingeloggt haben?
Das heißt es sollte erst eine Mail verschickt werden können, um den User darauf aufmerksam zu machen, das er seit 30,60 oder 90 Tagen nicht eingeloggt war und sein Account in 1,2,3,4 oder 5 Tagen gelöscht wird, wenn er sich nicht wenigstens einmal wieder einloggt.
Damit könnte man die Spaßuser rausbekommen, die die Memberliste überquellenlassen.
Bis denne...
Peter
Seite 1 von 1