I used this code, where 12,13,14 are the tag_id for which I want the autodelete.
I also added a discussion cleaning if no more posts are linked to it
<?php
// Chemin vers le fichier de log
$logFile = '/var/www/html/xxxx/forum/flarum/script/autodelete.log';
// Connexion à la base de données MySQL
$servername = "localhost";
$username = "xxxx";
$password = "xxxx";
$dbname = "xxxx";
$conn = new mysqli($servername, $username, $password, $dbname);
// VĂ©rifier la connexion
if ($conn->connect_error) {
error_log('Connexion échouée: ' . $conn->connect_error, 3, $logFile);
die("Connexion échouée: " . $conn->connect_error);
}
// Supprimer les messages ont plus de 24 heures dans 12
$sqlA = "DELETE FROM Fl_posts WHERE discussion_id in (select discussion_id from Fl_discussion_tag where tag_id=12) and created_at< DATE_SUB(NOW(), INTERVAL 24 HOUR);";
$resultA = $conn->query($sqlA);
if ($resultA === false) {
error_log('Erreur lors de la suppression des posts 1j: ' . $conn->error, 3, $logFile);
}
// Supprimer les messages ont plus d'une semaine dans 13
$sqlB = "DELETE FROM Fl_posts WHERE discussion_id in (select discussion_id from Fl_discussion_tag where tag_id=13) and created_at< DATE_SUB(NOW(), INTERVAL 1 WEEK);";
$resultB = $conn->query($sqlB);
if ($resultB === false) {
error_log('Erreur lors de la suppression des posts 1s: ' . $conn->error, 3, $logFile);
}
// Supprimer les messages ont plus d'un mois dans 14
$sqlC = "DELETE FROM Fl_posts WHERE discussion_id in (select discussion_id from Fl_discussion_tag where tag_id=14) and created_at< DATE_SUB(NOW(), INTERVAL 1 MONTH);";
$resultC = $conn->query($sqlC);
if ($resultC === false) {
error_log('Erreur lors de la suppression des posts 1m: ' . $conn->error, 3, $logFile);
}
// Supprimer les discussions qui n'ont plus de posts
$sqlD = "DELETE FROM Fl_discussions WHERE id NOT IN (SELECT DISTINCT discussion_id FROM Fl_posts);";
$resultD = $conn->query($sqlD);
if ($resultD === false) {
error_log('Erreur lors de la suppression des discussions sans posts: ' . $conn->error, 3, $logFile);
}
if ($resultA === true || $resultB === true || $resultC === true|| $resultD === true) {
echo "Autodelete des posts réussi";
} else {
echo "Erreur lors de la suppression des messages. Consultez le fichier de log pour plus de détails.";
}
// Fermer la connexion à la base de données
$conn->close();
?>