Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=3)
-- Fragen zum WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=4)
--- Beiträge automatisch löschen. (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=356)
Geschrieben von Powerman6672 am 29.11.2009 um 10:22:
Beiträge automatisch löschen.
Hallo zusammen
Ich betreibe ein wbb2.3.6. und in diesem Forum ist auch eine Suche/Biete Sektion drin.
Kann man es irgendwie im acp oder durch einen hack einstellen, das in diesen beiden foren die Beiträge automatisch nach 14 Tagen gelöscht werden?
Danke schonmal im vorraus.
MfG Powerman6672
Geschrieben von samurai am 29.11.2009 um 11:15:
Hey POwer...,
ja da gab es ein hack weis aber nicht wie der heißtich schaue mal ob ich wasfinde ggf. ;) suchen alle mit xD
Geschrieben von haumi am 29.11.2009 um 16:21:
Das sollt auf jeden Fall Möglich sein.
Heute habe ich das Haus noch voller Besuch,
werde mich aber morgen mal drum kümmern,
wenn nicht bis dahin ein Hack gefunden wurde.
Sollen die Userbeiträge erhalten bleiben,
oder zurückgezählt werden?
LG
hannes
Geschrieben von haumi am 01.12.2009 um 08:03:
Ich habs soweit fertig, das aus der Tabelle
bb1_threads alle Einträge eines bestimmten Forums die älter sind als 14 Tage gelöscht werden
bb1_posts alle zugehörigen Postings gelöscht werden.
bb1_boards der Tabelleneintrag zurückgesetzt wird, wenn in den 14 Tagen keine neuer Eintrag efolgte.
bzw.
bb1_boards Einträge der Themen und Beiträge aktualisiert werden, wenn in den 14 Tagen neue Einträge gemacht wurden
der code hierzu sieht wie folgt aus:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
|
#######Anfang Autolöschung#######
$zeit=time();
$zeit1=intval($zeit-'1209600');
$auswahls=array(148,151,154);
$i=0;
while($i < count($auswahls)) {
$auswahl = $auswahls[$i];
$ergebnis = $db->unbuffered_query("SELECT * FROM bb1_boards where boardid=$auswahl");
$erg = mysql_fetch_object($ergebnis);
$ergo = $erg->lastthreadid;
$result = $db->unbuffered_query("SELECT * FROM bb1_threads where boardid=$auswahl AND starttime<$zeit1");
while($ds = mysql_fetch_object($result)) {
$starttime = $ds->starttime;
$idthread = $ds->threadid;
$auswahl = $ds->boardid;
$dell= "DELETE FROM bb1_threads WHERE threadid='".$ds->threadid."'";
$dummy = mysql_query($dell);
$dell= "DELETE FROM bb1_posts WHERE threadid='".$ds->threadid."'";
$dummy = mysql_query($dell);
list($threadcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_threads WHERE boardid=$auswahl");
list($postcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_posts p, bb".$n."_threads t WHERE p.threadid=t.threadid AND t.boardid =$auswahl AND p.visible=1");
if ($ergo==$idthread) {
$update="UPDATE `bb1_boards` SET `threadcount` = 0, `postcount` = 0, `lastthreadid` = 0, `lastposttime` = 0, `lastposterid` = 0, `lastposter` = '0', `threadsperpage` = 0, `postsperpage` = 0, `postorder` = 0, `countuserposts` = 1, `hotthread_reply` = 0, `hotthread_view` = 0 WHERE `bb1_boards`.`boardid` = $auswahl;";
$dummy = mysql_query($update);
}
else {
$update1="UPDATE `bb1_boards` SET `threadcount` = $threadcount, `postcount` =$postcount where boardid=$auswahl";
$dummy = mysql_query($update1);
}
}
$i++;
}
#######Ende Autolöschung####### |
|
$auswahls=array(148,151,154);
Sollte so funktionieren (getestet in 2 Boards)
Ich muss noch mal nachsehen wie es mit eventuell vorhandenen Dateianhängen ist, oder kann man das ausschließen?
Andererseit tun die keinem weh, wenn sie in der Tabelle verbleiben.
Ich habs mal in der board.php untergebracht und zwar unter:
require('./global.php');
$lang->load('START,BOARD');
Man kann den Code auch in einer eigenen php-Datei speichern -
postdel.php und diese dann in der board.php einbinden unter
require('./global.php'); als
require('./postdel.php');
Solltest du, Powerman6672, dich jedoch mit php etwas auskennen darfst du gerne das bei dir selbst einbauen und anpassen.
NUR DARAN DENKEN; VORHER DIE DATENBANK SICHERN, DA HIER, BEI DATENVERLUßT KEINE WIEDERHERSTELLUNG MÖGLICH IST!!!!!!!!!!!
Auch hier gilt wie immer:
alle zu ändernden php-Dateien vorher sichern,
damit man bei einem Fehler den alten Zustand wieder herstellen kann!
auf jeden Fall eine Datenbanksicherung machen!!!!!!!!!!!!
Eine Garantie wird auch nicht übernommen.
Wenn etwas unklar sein sollte bitte hier fragen bevor man etwas falsch macht.
Es wird auch Hilfe gegeben wenn etwas nicht so ganz geklappt hat.
Urheber ist haumi - aber jeder kann es frei verwenden und nach belieben abändern.
LG
haumi
Geschrieben von alfie am 02.12.2009 um 15:08:
Warum das Rad zweimal erfinden?
Active ThreadMod 1.0
alfie
Geschrieben von haumi am 02.12.2009 um 16:53:
Na prima,
Ich hab ja gesehen das es für 2 (oder auch mehrere) Foren gelten soll und habe das vor wenigen Min. auch hinbekommen.
So ist es natürlich besser, aber es war mal wieder gut das ich etwas ans grübeln kekommen bin.
Schaden kann es nie!!!
Somit verweise auch ich auf den
Active ThreadMod 1.0]Active ThreadMod1.0
LG
haumi
Geschrieben von alfie am 02.12.2009 um 17:10:
Grübeln ist nie verkehrt, hält jung! Das kenne ich aus eigener Erfahrung
Du machst hier einen tollen Job, das wollte ich mal nebenbei noch loswerden!
MfG
alfie
Geschrieben von haumi am 02.12.2009 um 17:24:
Danke.
Soweit es in meiner Macht steht versuche ich zu helfen.
Es klappt zwar nicht immer aber doch in sehr vielen Fällen.
Und es macht Spaß, was die Hauptsache ist.
Edit:
Ich hab mir den Active ThreadMod 1.0 mal angesehen und es ist doch etwas anders,
als das was ich hier verstanden und gemacht habe.
Mit dem Active ThreadMod 1.0 werden Threads nach einer einzustellenden Zeit geschlossen oder verschoben.
Ich habe die Anfrage so verstanden, das diese Threads gelöscht werden sollen und das macht mein kleines Progrämmchen.
Zwar noch nicht so komfortabel aber was nicht ist kann ja noch werden.
So haben wir eigendlich 2 Möglichkeiten im Angebot, was ja besser ist als keine.
LG
haumi
Geschrieben von alfie am 02.12.2009 um 19:07:
Jetzt, wo du das sagst! Stimmt, verschieben und schliessen ist z.Z. möglich! Löschen soll mal irgendwann in einer neuen Version kommen, dann soll es auch noch mehr Möglichkeiten geben!
alfie
Geschrieben von samurai am 04.12.2009 um 12:13:

Alfie ,
und vieleicht wird der Hack dann auch server freundlicher :) wenn ich das richtig lese in der anleitung *g* is er ja nicht freundlich zum server
Geschrieben von haumi am 05.12.2009 um 08:18:
Ich habe das script jetzt in mein Board eingebaut.
9 Foren sind davon betroffen und es klappt.
Hier im nobodys-wbb-hilfe ist es auch eingabaut, jedoch nur im Forum "Guten Morgen - guten tag - gute Nacht".
Auch hier funktioniert es einwandfrei.
Ich habe nur in beiden Boards einen Zeitraum von 28 Tagen eingestellt.
statt 1209600 habe ich 2419200 genommen
Wie ist es eingebaut?
Ich habe im Ordner wbb2 eine neue Datei erstellt die heißt: postdel.php
Zwischen den beiden php-Kennungen <?php und ?>
habe ich den Code eingeschrieben.
Hier im Board sieht es so aus:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
<?php
#######Anfang Autolöschung#######
$zeit=time();
$zeit1=intval($zeit-'2419200');
$auswahls=array(58);
$i=0;
while($i < count($auswahls)) {
$auswahl = $auswahls[$i];
$ergebnis = $db->unbuffered_query("SELECT * FROM bb1_boards where boardid=$auswahl");
$erg = mysql_fetch_object($ergebnis);
$ergo = $erg->lastthreadid;
$result = $db->unbuffered_query("SELECT * FROM bb1_threads where boardid=$auswahl AND starttime<$zeit1");
while($ds = mysql_fetch_object($result)) {
$starttime = $ds->starttime;
$idthread = $ds->threadid;
$auswahl = $ds->boardid;
$dell= "DELETE FROM bb1_threads WHERE threadid='".$ds->threadid."'";
$dummy = mysql_query($dell);
$dell= "DELETE FROM bb1_posts WHERE threadid='".$ds->threadid."'";
$dummy = mysql_query($dell);
list($threadcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_threads WHERE boardid=$auswahl");
list($postcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_posts p, bb".$n."_threads t WHERE p.threadid=t.threadid AND t.boardid =$auswahl AND p.visible=1");
if ($ergo==$idthread) {
$update="UPDATE `bb1_boards` SET `threadcount` = 0, `postcount` = 0, `lastthreadid` = 0, `lastposttime` = 0, `lastposterid` = 0, `lastposter` = '0', `threadsperpage` = 0, `postsperpage` = 0, `postorder` = 0, `countuserposts` = 1, `hotthread_reply` = 0, `hotthread_view` = 0 WHERE `bb1_boards`.`boardid` = $auswahl;";
$dummy = mysql_query($update);
}
else {
$update1="UPDATE `bb1_boards` SET `threadcount` = $threadcount, `postcount` =$postcount where boardid=$auswahl";
$dummy = mysql_query($update1);
}
}
$i++;
}
#######Ende Autolöschung#######
?>
|
|
Wenn mehrere Foren eingebunden werden sollen,
einfach die Boardid der betreffenden Foren hier ergänzen (durch Komma trennen):
$auswahls=array(58);
z. B.
$auswahls=array(58.136,22,79);
Damit das auch alles funktioniert muss nur noch die boardphp wie folgt ergänzt werden:
Suche:
require('./global.php');
und füge darunter ein:
require('./postdel.php');
speichern - fertig
Auch hier gilt vor allen Dingen die Datenbank sichern, damit man bei einem Fehler den alten Zustand wieder herstellen kann!!
Eine Garantie wird auch nicht übernommen.
Wenn etwas unklar sein sollte bitte hier fragen bevor man etwas falsch macht.
Es wird auch Hilfe gegeben wenn etwas nicht so ganz geklappt hat.
Urheber ist haumi - aber jeder kann es frei verwenden und nach belieben abändern.
LG
hauimi
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH