ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Code Hack Requests / Inaktive Mitglieder


Seite 1 von 1

Tobi schrieb am 11.04.2002 um 16:13 Uhr

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!

Jonas schrieb am 11.04.2002 um 19:21 Uhr

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*

Tobi schrieb am 12.04.2002 um 15:21 Uhr

Jo, das wäre cool wenn du das machen könntest!

Jonas schrieb am 12.04.2002 um 15:52 Uhr

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 ;)

Tobi schrieb am 12.04.2002 um 19:07 Uhr

danke!!!!!!

Tobi schrieb am 13.04.2002 um 15:23 Uhr

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!?

Excalibur schrieb am 13.04.2002 um 16:19 Uhr

Bei mirwurde er an alle versendet obwohl bis auf einen alle min.1 post hatten!!

Superhausi schrieb am 13.04.2002 um 19:30 Uhr

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]

Jonas schrieb am 13.04.2002 um 19:37 Uhr

das gibt aber acuh ein anderes ergebnis...
@tobi: inaktive user sind nicht immer welche ohne post...

yorki schrieb am 27.04.2002 um 18:52 Uhr

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

Superhausi schrieb am 28.04.2002 um 09:41 Uhr

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]

Schnassel63 schrieb am 28.04.2002 um 10:34 Uhr

@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

Superhausi schrieb am 28.04.2002 um 10:41 Uhr

und welche funktion ist undefiniert?
das wäre ev. noch wichtig... ev. ein schreibfehler...
[Edit]
Sorry, sollte include "./inc/header.inc.php"; heissen...
[/Edit]

Schnassel63 schrieb am 28.04.2002 um 10:49 Uhr

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

Schnassel63 schrieb am 28.04.2002 um 12:37 Uhr

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?

Superhausi schrieb am 28.04.2002 um 14:08 Uhr

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

Buggyboy schrieb am 21.12.2003 um 18:42 Uhr

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