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 st1
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.
st6 st6 st6


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:

 

st1 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