MyBB.de Forum

Normale Version: MyBB Funktion die automatisch löscht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Ihr lieben,
ich habe eine Frage und zwar kann ich über ein Maske ein Event eintragen wo in einem Feld in der DB immer das aktuelle Datum mit gespeichert wird (Format: 2017-06-26).

Im Hintergrund lasse ich auf das aktuelle Datum immer + 5 Tage drauf rechen, was aber nur in der PHP Datei passiert und nicht nochmal extra in der DB abspeichert wird.

Nun soll beim erreichen dieses Datums (aktuelles Datum + 5 Tage) der Eintrag aus der DB wieder entfernt werden und zwar automatisch (ohne das betätigen eines Buttons zum löschen).

Jetzt hatte ich schon mit ein paar Varianten herum probiert, aber etwa wurde sofort der Eintrag gelöscht egal welches Datum er hatte oder er bleibt in der DB stehen.

Nun würde ich gerne wissen, ob es im MyBB eine Funktion existiert die ggfs. nach diesem Schema arbeitet?

Ich würde mir gerne den Aufbau einer solchen Abfrage anschauen, da meine Varianten bis jetzt nicht richtig ausgeführt wurden.

Herzliche Grüße
Das kannst Du mittels Task erledigen. Wenn ich heute Nacht wieder zu Hause bin, kann ich dir ein Beispiel Posten.
@ prom.night

Nur aus Neugier, was machst du dann mit den Themen in den Foren zu den Veranstaltungen ?
@Erkan, wenn ein Event aus dem Kalender entfernt wird, ist auch das Event-Thema nicht mehr vorhanden.

Ich hoffe ich lag mit meiner Vermutung nicht falsch, das es sich hier um Kalendereinträge handelt.

Hier ein Beispiel wie eine Task aussehen könnte um Events, die älter als 5 Tage, automatisch zu löschen.


events_loeschen.php (kommt in den task Ordner)
PHP-Code:
<?php

function task_events_loeschen($task)
{
    global 
$db$mybb;
    
    
$loeschzeit time() - 60*60*24*5// jetzt minus 5 Tage
    
    
$query $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE starttime > '".$loeschzeit."' AND endtime = '0'");
    
$row $db->num_rows($query);

    if(
time() > $row['starttime'] + $loeschzeit)
    {
        
$db->delete_query("events""starttime < '".$loeschzeit."' AND endtime = '0'");
    }
    
    
add_task_log($task"Events älter als 5 Tage erfolgreich gelöscht.");
}    
?>

Local mit ein paar Events erfolgreich getestet.


Task anlegen:

Titel & Kurze Beschreibung sollte klar sein.
Aufgabe = events_loeschen.php auswählen
Zeit: Minuten & Zeit: Stunden & Zeit: Tage im Monat kannst Du auf Standard lassen, also jede Minute
Der Rest sollte auch klar sein.