PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Threads nach x Tagen schliessen


realtec
23.02.2006, 21:20
Hallo, gibt es eine Funktion mit der ich Themen nach einer bestimmten zeit automatisiert schliessen kann??

Andreas
23.02.2006, 22:18
Das ist standardmäßig nicht möglich.

Die Billig-Variante wäre dieses hier
cron_script_cleanup

$days = 30;
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE open = 1 AND visible = 1 AND sticky = 0 AND lastpost < " . (TIMENOW - $days*86400));


Das schließ alle nicht-geschlossenen, nicht-moderierten, nicht-gelöschten, nicht-angepinnten Threads bei denen die letzte Antwort vor mehr als $days Tagen war.

andi_t
16.12.2006, 21:43
Das ist standardmäßig nicht möglich.

Die Billig-Variante wäre dieses hier
cron_script_cleanup

$days = 30;
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE open = 1 AND visible = 1 AND sticky = 0 AND lastpost < " . (TIMENOW - $days*86400));
Das schließ alle nicht-geschlossenen, nicht-moderierten, nicht-gelöschten, nicht-angepinnten Threads bei denen die letzte Antwort vor mehr als $days Tagen war.
... und

$days = 30;
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE open = 1 AND visible = 1 AND sticky = 0 AND firstpost < " . (TIMENOW - $days*86400));
schließt hoffentlicht alle nicht-geschlossenen, nicht-moderierten, nicht-gelöschten, nicht-angepinnten Threads die vor mehr als $days Tagen eröffnet wurden.
Oder gibt es die Variable "firstpost" nicht?

Gruß Andi

Mystics
16.12.2006, 22:30
Nimm dateline statt firstpost (das gibt es nicht).

andi_t
16.12.2006, 23:29
Nimm dateline statt firstpost (das gibt es nicht).
ok, danke :)
Ich habe jetzt mal den folgenden Text in eine eigene Datei im cron-Verzeichnis kopiert, passt das?

<?php

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!is_object($vbulletin->db))
{
exit;
}

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

// schließen der FAQ-Threads
$days = 30;
$vbulletin->db->query_write("
UPDATE " . TABLE_PREFIX . "thread
SET
open = 0
WHERE
open = 1 AND visible = 1 AND sticky = 0 AND dateline < " . (TIMENOW - $days*86400));

log_cron_action('', $nextitem, 1);

?>
da ich das ganze aber nur in einem bestimmten Unterforum anwenden möchte muss ich wohl noch in der WHERE-Klausel etwas einfügen, die Foren ID wäre 112, reicht da schon
AND forumid = 112?

Gruß Andi

andi_t
16.12.2006, 23:41
... habs einfach mal angetestet, und es funktioniert.
Danke und Gruß


Andi

Pathor
22.10.2007, 17:21
AND forumid = 112
Wie sieht es denn mit mehreren Foren aus? Gibt es dafür ein Array?

StGaensler
22.10.2007, 17:31
Entweder: AND (forumid = 112 OR forumid = 110) oder AND forumid IN (112, 110)

Viele Grüße,
Stefan

Pathor
22.10.2007, 18:35
Danke! :)