Herzlich willkommen zu diesem ausführlichen Tutorial, in dem wir uns mit einem wichtigen Aspekt der Forenmoderation beschäftigen: der automatischen Benachrichtigung von Usern, deren Beiträge in Ihrem myBB Forum gelöscht wurden. Eine transparente und nachvollziehbare Moderation ist essentiell für eine positive Community-Atmosphäre. User sollten wissen, warum ihre Beiträge entfernt wurden, um aus Fehlern zu lernen und die Forenregeln besser zu verstehen. Eine automatische Nachricht spart Ihnen als Moderator Zeit und stellt sicher, dass jeder betroffene User die notwendige Information erhält.
Warum eine automatische Nachricht bei Post-Löschung?
Bevor wir uns in die technische Umsetzung stürzen, wollen wir kurz die Vorteile einer solchen automatischen Benachrichtigung beleuchten:
- Transparenz: User wissen, warum ihr Beitrag gelöscht wurde.
- Nachvollziehbarkeit: Die Begründung für die Löschung ist dokumentiert.
- Lernprozess: User können ihr Verhalten anpassen und zukünftig Regelverstöße vermeiden.
- Entlastung der Moderatoren: Automatisierung reduziert den manuellen Aufwand.
- Verbesserung der Community-Atmosphäre: Eine faire und transparente Moderation fördert das Vertrauen.
Voraussetzungen
Für die Umsetzung dieses Tutorials benötigen Sie Folgendes:
- Ein installiertes und funktionierendes myBB Forum.
- Administratorzugriff auf das Forum.
- Grundkenntnisse in HTML und PHP (nicht zwingend erforderlich, aber hilfreich).
- Zugriff auf die Datenbank Ihres Forums (z.B. über phpMyAdmin).
Die Umsetzung: Schritt für Schritt
Wir werden diesen Prozess in mehrere Schritte unterteilen, um die Übersichtlichkeit zu gewährleisten:
1. Erstellung einer benutzerdefinierten Benachrichtigungsvorlage
Der erste Schritt besteht darin, eine Vorlage für die Benachrichtigung zu erstellen. Diese Vorlage enthält den Text, der dem User angezeigt wird, wenn sein Beitrag gelöscht wurde. Gehen Sie im Admin-Control-Panel (ACP) zu „Templates & Style” -> „Templates” -> „Ihr Template-Set” -> „Benutzerdefinierte Templates”. Klicken Sie auf „Neues Template hinzufügen”.
Geben Sie dem Template einen aussagekräftigen Namen, z.B. „post_deleted_notification”. Im Feld „Template Code” fügen Sie den folgenden Code ein, den Sie natürlich an Ihre Bedürfnisse anpassen können:
Hallo {$username},
Ihr Beitrag im Forum "{$forum_name}" mit dem Titel "{$thread_title}" wurde von einem Moderator gelöscht.
Grund für die Löschung: {$reason}
Bitte beachten Sie die Forenregeln, um zukünftige Löschungen zu vermeiden.
Mit freundlichen Grüßen,
Ihr Moderationsteam
Erläuterung der Variablen:
- {$username}: Der Name des Users, dessen Beitrag gelöscht wurde.
- {$forum_name}: Der Name des Forums, in dem der Beitrag erstellt wurde.
- {$thread_title}: Der Titel des Threads, in dem sich der Beitrag befand.
- {$reason}: Der Grund für die Löschung (wird vom Moderator angegeben).
Klicken Sie auf „Template speichern”.
2. Modifikation der Datei „moderation.php”
Dieser Schritt erfordert den Zugriff auf die Dateien Ihres Forums über FTP oder den Dateimanager Ihres Webhosting-Anbieters. Suchen Sie die Datei „moderation.php” im Stammverzeichnis Ihres Forums (normalerweise im Ordner „inc”). Machen Sie eine Sicherheitskopie dieser Datei, bevor Sie Änderungen vornehmen! Öffnen Sie die Datei mit einem Texteditor.
Suchen Sie nach der Funktion, die für das Löschen von Beiträgen zuständig ist. Diese Funktion heißt wahrscheinlich „RemovePost” oder ähnlich. Die genaue Bezeichnung kann je nach myBB-Version variieren. Innerhalb dieser Funktion müssen Sie Code hinzufügen, der die Benachrichtigung an den User sendet.
Fügen Sie den folgenden Code (oder eine angepasste Version davon) innerhalb der Funktion „RemovePost” hinzu, nachdem der Beitrag gelöscht wurde (in der Regel direkt nach dem Datenbank-Update, das den Beitrag löscht):
global $db, $mybb, $lang;
// Daten für die Benachrichtigung sammeln
$post_info = get_post($pid); // $pid ist die Post-ID
$thread_info = get_thread($post_info['tid']);
$forum_info = get_forum($thread_info['fid']);
$username = htmlspecialchars_uni($post_info['username']);
$forum_name = htmlspecialchars_uni($forum_info['name']);
$thread_title = htmlspecialchars_uni($thread_info['subject']);
$reason = $mybb->input['deletethreadreason']; // Annahme: Grund wird über ein Input-Feld übergeben
// Daten für die Vorlage vorbereiten
$template_data = array(
"username" => $username,
"forum_name" => $forum_name,
"thread_title" => $thread_title,
"reason" => $reason
);
// Vorlage laden und parsen
$template = $mybb->settings['bburl']."/cache/templates/default/post_deleted_notification.php"; // Pfad zur generierten Template-Datei
eval("$message = "" . file_get_contents($template) . "";");
// Benachrichtigung senden
require_once MYBB_ROOT."inc/datahandlers/pm.php";
$pmhandler = new PMDataHandler();
$pm = array(
"subject" => "Ihr Beitrag wurde gelöscht",
"message" => $message,
"touid" => $post_info['uid'],
"fromid" => $mybb->user['uid'], // Absender ist der Moderator
"options" => array(
"savecopy" => 0
)
);
$pmhandler->set_data($pm);
// Validierung der Daten (wichtig!)
if($pmhandler->validate_pm())
{
$pmhandler->insert_pm();
}
else
{
// Fehlerbehandlung (z.B. Log-Eintrag)
$errors = $pmhandler->get_errors();
error_log("Fehler beim Senden der Benachrichtigung: ".implode(", ", $errors));
}
Wichtiger Hinweis: Der Code oben ist ein Beispiel und muss möglicherweise an Ihre spezifische myBB-Version und Ihre Bedürfnisse angepasst werden. Achten Sie besonders auf die korrekten Variablen und die Pfade zu den Dateien. Der Code geht davon aus, dass der Grund für die Löschung über ein Input-Feld mit dem Namen „deletethreadreason” übergeben wird. Stellen Sie sicher, dass dieses Feld in Ihrem Moderationsformular vorhanden ist.
3. Anpassen des Moderationsformulars
Wenn Sie den Grund für die Löschung noch nicht im Moderationsformular angeben können, müssen Sie dieses anpassen. Dies erfordert in der Regel die Modifikation der Template-Datei, die das Moderationsformular darstellt. Suchen Sie nach der entsprechenden Template-Datei (der Name kann je nach Template variieren, aber er könnte etwas wie „moderation_deletepost” oder ähnlich lauten). Fügen Sie ein Textfeld hinzu, in dem der Moderator den Grund für die Löschung eingeben kann:
Stellen Sie sicher, dass das Attribut `name=”deletethreadreason”` korrekt gesetzt ist, da der Code in „moderation.php” diesen Namen erwartet.
4. Testen der Implementierung
Nachdem Sie alle Änderungen vorgenommen haben, ist es wichtig, die Implementierung gründlich zu testen. Löschen Sie einen Testbeitrag und überprüfen Sie, ob der User eine private Nachricht mit dem korrekten Text und den korrekten Informationen erhält. Überprüfen Sie auch, ob Fehler auftreten und beheben Sie diese gegebenenfalls.
Wichtige Hinweise und Best Practices
- Sicherheitskopien: Erstellen Sie immer Sicherheitskopien aller Dateien, bevor Sie Änderungen vornehmen.
- Fehlerbehandlung: Implementieren Sie eine solide Fehlerbehandlung, um Probleme zu erkennen und zu beheben.
- Benutzerfreundlichkeit: Gestalten Sie die Benachrichtigung klar und verständlich.
- Datenschutz: Achten Sie darauf, dass Sie keine sensiblen Daten in der Benachrichtigung preisgeben.
- Regelmäßige Updates: Überprüfen Sie die Implementierung regelmäßig und passen Sie sie gegebenenfalls an neue myBB-Versionen an.
- Individuelle Anpassung: Passen Sie die Vorlage und den Code an Ihre spezifischen Bedürfnisse an.
Fazit
Eine automatische Nachricht bei der Löschung von Beiträgen ist ein wertvolles Werkzeug für die Forenmoderation. Sie fördert die Transparenz, entlastet die Moderatoren und trägt zu einer positiven Community-Atmosphäre bei. Mit den in diesem Tutorial beschriebenen Schritten können Sie eine solche Funktionalität in Ihrem myBB Forum implementieren. Denken Sie daran, dass der Code möglicherweise an Ihre spezifische Umgebung angepasst werden muss und dass eine gründliche Testphase unerlässlich ist.