diff --git a/README.md b/README.md index fb340c7..a31630f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,499 @@ -# WP-Business-Forum +# 💬 WP Business Forum +**Ein vollstĂ€ndiges, eigenstĂ€ndiges Forum-Plugin fĂŒr WordPress** — mit eigenem Login-System, dynamischen Rollen, Privatnachrichten, BBCode, Level-System, Moderations-Tools und vielem mehr. + +> **Version 2.0.0** · Getestet mit WordPress 6.x · PHP 8.0+ · MySQL 5.7+ + +--- + +## 📋 Inhaltsverzeichnis + +- [Features](#-features) +- [Installation](#-installation) +- [Erster Start — Setup-Wizard](#-erster-start--setup-wizard) +- [Shortcode](#-shortcode) +- [Admin-Bereich](#-admin-bereich) +- [Rollen & Berechtigungen](#-rollen--berechtigungen) +- [Level-System](#-level-system) +- [BBCode-Referenz](#-bbcode-referenz) +- [Dateistruktur](#-dateistruktur) +- [Datenbank-Tabellen](#-datenbank-tabellen) +- [Export & Import](#-export--import) +- [FAQ](#-faq) + +--- + +## ✹ Features + +### 🔐 Eigenes Login-System +- Komplett unabhĂ€ngig vom WordPress-Backend — Forum-Nutzer brauchen keinen WP-Account +- Registrierung direkt im Forum-Frontend +- **Remember-Me** Cookie (30 Tage) +- **Passwort vergessen** mit sicherem Reset-Link per E-Mail (1 Stunde gĂŒltig) +- **Auto-Logout** bei InaktivitĂ€t (einstellbar: 5 Min. bis 8 Std.) +- Groß-/Kleinschreibung beim Login egal + +### 📁 Kategorien & Threads +- **Eltern-Kind-Hierarchie** — unbegrenzte Verschachtelung +- Threads erstellen, bearbeiten (Titel + Inhalt), löschen +- **Pinnen** und **Schließen** von Threads (Moderatoren+) +- **Thread-Tags** fĂŒr bessere Auffindbarkeit +- **Views-Counter** pro Thread +- **Breadcrumb-Navigation** durch die gesamte Hierarchie +- **Kategorie-ZugangsbeschrĂ€nkung** per Mindest-Rolle + +### 💬 Posts & Interaktion +- Antworten mit **Live-Vorschau** (kein Seitenreload) +- **Like-System** fĂŒr Threads und Posts +- **Emoji-Reaktionen** (👍 ❀ 😂 😼 😱 đŸ”„) +- **Zitieren** mit automatischem `[quote=Name]`-BBCode +- **@ErwĂ€hnungen** — klickbare Profil-Links +- **BeitrĂ€ge melden** mit BegrĂŒndung +- Posts und Thread-Titel nachtrĂ€glich bearbeiten + +### đŸ›Ąïž Rollen-System +6 Standard-Rollen + beliebig viele eigene Rollen: + +| Rolle | Level | Besonderheit | +|---|---|---| +| 👑 Superadmin | 100 | Automatisch an WP-Administrator gebunden — unverĂ€nderlich | +| 🔮 Admin | 80 | VollstĂ€ndige Verwaltung | +| 🟡 Moderator | 50 | Moderation von Threads & Posts | +| đŸ”” VIP | 20 | Eigenes Badge | +| âšȘ Member | 10 | Standard fĂŒr neue Nutzer | +| ⛔ Gesperrt | -1 | Kein Forum-Zugang | + +Jede Rolle ist vollstĂ€ndig anpassbar: Label, Level, Farbe, Icon (FontAwesome), Permissions. + +### ⭐ Level-System +Automatisches Level basierend auf Beitragsanzahl (kann deaktiviert werden): + +| Level | Ab BeitrĂ€gen | Icon | +|---|---|---| +| đŸŒ± Neuling | 0 | `fas fa-seedling` | +| đŸȘ¶ Schreiberling | 10 | `fas fa-feather` | +| đŸ”„ Erfahrener | 50 | `fas fa-fire` | +| đŸ›Ąïž Veteran | 150 | `fas fa-shield-halved` | +| 👑 Legende | 500 | `fas fa-crown` | + +Levels sind im Admin vollstĂ€ndig anpassbar — Bezeichnung, Schwellenwert, Icon, Farbe. + +### đŸ‘€ Profile +- Eigenes Avatar-Bild (Upload oder Gravatar) +- Anzeigename, Bio und **Signatur** (max. 300 Zeichen, erscheint unter jedem Beitrag) +- Profil-Seite mit BeitragsĂŒbersicht und Fortschrittsbalken +- **Mitgliederliste** (nur fĂŒr eingeloggte Nutzer) mit Suche und Sortierung + +### ✉ Privatnachrichten +- Direktnachrichten zwischen Nutzern +- **Posteingang** mit Konversations-Übersicht +- Ungelesene Nachrichten werden im Topbar angezeigt +- **Ältere Nachrichten laden** (Pagination) +- Nachrichten löschen + +### 🔔 Benachrichtigungen +- In-App-Glocke in der Topbar mit Badge +- E-Mail-Benachrichtigungen bei: + - Antwort auf eigenen Thread + - @ErwĂ€hnung + - Neue Privatnachricht +- Benachrichtigungen als gelesen markieren + +### 🔍 Suche +- Volltextsuche in Threads und Posts +- Live-VorschlĂ€ge bei der Eingabe +- Ergebnisse mit Kategorie und Datum + +### 🔧 Moderations-Tools +- Thread pinnen / entpinnen +- Thread schließen / öffnen +- Thread in andere Kategorie verschieben +- Posts und Threads löschen +- Meldungs-System mit Admin-Dashboard +- Nutzer sperren mit Sperrgrund (wird beim Login angezeigt) + +### ⚙ Admin-Backend +- **Übersicht** mit Echtzeit-Statistiken +- **Kategorien** verwalten (Hierarchie, Icons, Min-Rolle) +- **Rollen** erstellen, bearbeiten, löschen +- **Level** konfigurieren +- **Mitglieder** verwalten — Rolle, E-Mail, Passwort, Anzeigename Ă€ndern +- **Meldungen** bearbeiten (offen / erledigt / verworfen) +- **Einstellungen** — alle Forum-Texte anpassbar, kein Code nötig +- **Export / Import** — vollstĂ€ndige Datensicherung + +--- + +## 🚀 Installation + +### Methode 1 — ZIP hochladen (empfohlen) +1. Lade das Repository als `.zip` herunter +2. WordPress-Admin → **Plugins** → **Installieren** → **Plugin hochladen** +3. ZIP auswĂ€hlen und installieren +4. Plugin **aktivieren** + +### Methode 2 — FTP / Dateimanager +1. Lade den Ordner `wp-business-forum` auf deinen Server hoch +2. Zielverzeichnis: `/wp-content/plugins/wp-business-forum/` +3. WordPress-Admin → Plugins → **WP Business Forum** aktivieren + +### Voraussetzungen +- WordPress **6.0+** +- PHP **8.0+** +- MySQL **5.7+** oder MariaDB **10.3+** +- `wp_mail()` fĂŒr E-Mail-Benachrichtigungen (Standard-WP-Mailer) + +--- + +## 🧙 Erster Start — Setup-Wizard + +Nach der Aktivierung wirst du automatisch zum **Setup-Wizard** weitergeleitet: + +**Schritt 1 — Superadmin-Konto erstellen** +- Dein Name und deine WP-Admin-E-Mail sind bereits vorausgefĂŒllt +- Gib ein Passwort fĂŒr dein Forum-Konto ein +- Das Konto wird automatisch dauerhaft mit dem Superadmin-Status verknĂŒpft + +**Schritt 2 — Forum-Seite erstellen** +- Optional: Eine WordPress-Seite mit dem Shortcode wird automatisch angelegt +- Du kannst auch eine eigene Seite manuell erstellen + +**Schritt 3 — Fertig!** +- Direktlink zur Forum-Seite +- Link zum Admin-Dashboard + +> ⚠ **Wichtig:** Verwende beim Superadmin-Konto dieselbe E-Mail wie dein WordPress-Administratorkonto. Das Plugin verknĂŒpft sie automatisch und stellt bei jedem Login sicher, dass dein Account immer Superadmin-Rechte hat. + +--- + +## 📌 Shortcode + +FĂŒge diesen Shortcode auf einer beliebigen WordPress-Seite ein: + +``` +[business_forum] +``` + +Das Plugin erkennt automatisch den aktuellen URL-Parameter und zeigt die passende Ansicht: + +| URL-Parameter | Ansicht | +|---|---| +| *(kein Parameter)* | Forum-Startseite | +| `?forum_cat=slug` | Kategorie-Ansicht | +| `?forum_thread=123` | Thread-Ansicht | +| `?forum_profile=123` | Profil-Seite | +| `?forum_members=1` | Mitgliederliste | +| `?forum_search=Begriff` | Suchergebnisse | +| `?forum_tag=tagname` | Tag-Übersicht | +| `?forum_dm=1` | Privatnachrichten | +| `?wbf_do_logout=1` | Logout (serverseitig) | +| `?wbf_reset_token=
` | Passwort zurĂŒcksetzen | + +--- + +## đŸ› ïž Admin-Bereich + +Erreichbar unter **WP-Admin → Business Forum** + +### Übersicht +- Echtzeit-Statistiken: Threads, BeitrĂ€ge, Mitglieder, Tags, Meldungen +- Schnellzugriff auf alle Unterbereiche +- Rollensystem-Übersicht + +### Kategorien +- Kategorien erstellen und bearbeiten +- **Eltern-Kind-Hierarchie** per Dropdown +- Icon (FontAwesome-Klasse), Beschreibung, Sortierreihenfolge +- **Mindest-Rolle** zum Posten (z.B. nur Moderatoren können in "AnkĂŒndigungen" posten) + +### Rollen +- Eigene Rollen mit individuellem Label, Level (1–99), Farbe, Icon und Permissions erstellen +- Rollen löschen (Nutzer werden automatisch auf "Member" gesetzt) +- Superadmin ist gesperrt und kann nicht verĂ€ndert werden + +**VerfĂŒgbare Permissions:** + +| Permission | Beschreibung | +|---|---| +| `post` | BeitrĂ€ge schreiben | +| `create_thread` | Threads erstellen | +| `like` | BeitrĂ€ge liken | +| `pin_thread` | Threads pinnen | +| `close_thread` | Threads schließen | +| `delete_post` | Posts löschen | +| `delete_thread` | Threads löschen | +| `manage_users` | Nutzer verwalten | +| `manage_cats` | Kategorien verwalten | +| `post_announcement` | In eingeschrĂ€nkte Kategorien posten | + +### Level +- Level-Bezeichnung, Mindest-Beitragsanzahl, Icon und Farbe anpassen +- Neues Level hinzufĂŒgen oder bestehende löschen +- Level-System global aktivieren/deaktivieren +- ZurĂŒcksetzen auf Standard-Konfiguration + +### Mitglieder +- Alle Forum-Nutzer mit Rolle, Beitragsanzahl und Registrierungsdatum +- **Rolle Ă€ndern** direkt in der Tabelle (inkl. Sperrgrund bei "Gesperrt") +- **Profil bearbeiten**: Anzeigename, E-Mail, Passwort +- Superadmin-Konten sind schreibgeschĂŒtzt + +### Meldungen +- Gemeldete BeitrĂ€ge mit BegrĂŒndung und Melder +- Status: Offen · Erledigt · Verworfen +- Direktlink zum gemeldeten Beitrag + +### Einstellungen +Alle sichtbaren Texte des Forums ohne Code Ă€ndern: +- Hero-Bereich (Titel, Untertitel) +- Topbar (Forum-Name, Button-Beschriftungen) +- Statistik-Labels +- AbschnittsĂŒberschriften +- Sidebar-Titel +- **Auto-Logout** nach InaktivitĂ€t (0 = deaktiviert, bis 8 Stunden) + +### Export / Import +VollstĂ€ndige Datensicherung aller Forum-Daten als `.json`-Datei: + +| Bereich | Inhalt | +|---|---| +| ⚙ Einstellungen | Forum-Texte, Labels, Auto-Logout | +| đŸ›Ąïž Rollen | Alle Rollen mit Permissions & Design | +| ⭐ Level | Level-Konfiguration & Status | +| 📂 Kategorien | Kategoriestruktur inkl. Hierarchie | +| đŸ‘„ Benutzer | Accounts inkl. Passwort-Hashes | +| 💬 Threads & Posts | Alle Inhalte inkl. Tags | +| ❀ Likes & Reaktionen | Likes, Reaktionen, Benachrichtigungen | +| ✉ Privatnachrichten | Alle DM-Konversationen | +| đŸš© Meldungen | Gemeldete BeitrĂ€ge inkl. Status | + +--- + +## 🎹 Rollen & Berechtigungen + +### Superadmin — Sonderfall +Der Superadmin ist **immer** an den WordPress-Administrator gebunden: +- Wird bei jedem Seitenaufruf automatisch synchronisiert +- Kann nicht manuell vergeben oder entzogen werden +- Hat Zugriff auf alle Funktionen ohne EinschrĂ€nkung +- Kann im Admin-Panel nicht gelöscht oder bearbeitet werden + +### Rollen-Hierarchie +Höherer `level`-Wert = mehr Rechte. Wenn eine Kategorie eine Mindest-Rolle hat, mĂŒssen Nutzer mindestens dieses Level haben um dort zu posten. + +### Eigene Rollen erstellen +1. WP-Admin → Business Forum → **Rollen** → **+ Neue Rolle** +2. Rollen-SchlĂŒssel vergeben (z.B. `trusted_member`) — kann nicht geĂ€ndert werden +3. Anzeigename, Level (zwischen `member` = 10 und `admin` = 80), Farbe, Icon, Permissions +4. Speichern + +--- + +## 📊 Level-System + +Das Level-System ist optional und kann jederzeit ein- oder ausgeschaltet werden. Es basiert ausschließlich auf der Anzahl der BeitrĂ€ge eines Nutzers. + +### Level-Badge +Wird auf der Profil-Seite, in Posts und auf der Mitgliederliste angezeigt. + +### Fortschrittsbalken +Auf der eigenen Profil-Seite wird angezeigt: +- Aktuelles Level mit Badge +- Anzahl der benötigten BeitrĂ€ge bis zum nĂ€chsten Level +- Fortschrittsbalken in der Levelfarbe + +### Konfiguration +WP-Admin → Business Forum → **Level** → Neue EintrĂ€ge hinzufĂŒgen oder bestehende bearbeiten. + +--- + +## đŸ·ïž BBCode-Referenz + +Nutzer können in Threads und Posts folgende Formatierungen verwenden: + +### Text-Formatierung +``` +[b]Fett[/b] +[i]Kursiv[/i] +[u]Unterstrichen[/u] +[s]Durchgestrichen[/s] +[h2]Überschrift 2[/h2] +[h3]Überschrift 3[/h3] +``` + +### Farbe & GrĂ¶ĂŸe +``` +[color=red]Roter Text[/color] +[color=#00b4d8]Hex-Farbe[/color] +[size=small]Kleiner Text[/size] +[size=large]Großer Text[/size] +[size=xlarge]Sehr großer Text[/size] +``` + +Erlaubte Farbnamen: `red`, `blue`, `green`, `orange`, `yellow`, `purple`, `pink`, `cyan`, `white`, `gray`, `black`, `gold`, `silver`, `lime`, `teal`, `navy` + +### Links & Medien +``` +[url=https://beispiel.de]Link-Text[/url] +[url]https://beispiel.de[/url] +[img]https://beispiel.de/bild.jpg[/img] +``` + +### Code +``` +[code] +function helloWorld() { + echo "Hallo Welt!"; +} +[/code] + +Inline: [icode]$variable[/icode] +``` + +### Zitat +``` +[quote]Allgemeines Zitat[/quote] +[quote=M_Viper]Zitat von M_Viper[/quote] +``` + +### Spoiler +``` +[spoiler]Versteckter Inhalt[/spoiler] +[spoiler=Titel]Inhalt mit Titel[/spoiler] +``` + +### Listen +``` +[list] +[*] Erstes Element +[*] Zweites Element +[/list] + +[list=1] +[*] Nummeriert +[*] Liste +[/list] +``` + +### Ausrichtung & Trennlinie +``` +[center]Zentrierter Text[/center] +[right]RechtsbĂŒndiger Text[/right] +[hr] +``` + +### @ErwĂ€hnungen +``` +@Benutzername +``` +Wird automatisch zu einem klickbaren Profil-Link und sendet eine Benachrichtigung. + +--- + +## 📁 Dateistruktur + +``` +wp-business-forum/ +├── wp-business-forum.php # Plugin-Hauptdatei +├── includes/ +│ ├── class-forum-db.php # Datenbankschicht (alle Abfragen) +│ ├── class-forum-auth.php # Login, Register, Session, Remember-Me +│ ├── class-forum-roles.php # Dynamisches Rollensystem +│ ├── class-forum-levels.php # Level-System +│ ├── class-forum-bbcode.php # BBCode → HTML Parser +│ ├── class-forum-shortcodes.php # Frontend-Rendering (alle Ansichten) +│ └── class-forum-ajax.php # AJAX-Handler (alle Aktionen) +├── admin/ +│ ├── forum-admin.php # Admin-Panel (alle Unterseiten) +│ ├── forum-settings.php # Einstellungsseite & wbf_get_settings() +│ └── forum-setup.php # Einrichtungs-Wizard +└── assets/ + ├── css/ + │ └── forum-style.css # Komplettes Dark-Theme (Minecraft Modern) + └── js/ + └── forum-script.js # Alle Frontend-Interaktionen (jQuery) +``` + +--- + +## đŸ—„ïž Datenbank-Tabellen + +Alle Tabellen werden bei der Plugin-Aktivierung automatisch erstellt. Bestehende Tabellen werden beim Update automatisch um neue Spalten erweitert (via `ALTER TABLE`). + +| Tabelle | Inhalt | +|---|---| +| `{prefix}forum_users` | Forum-Accounts (unabhĂ€ngig von WP-Usern) | +| `{prefix}forum_categories` | Kategorien mit Eltern-Kind-Hierarchie | +| `{prefix}forum_threads` | Hauptthreads | +| `{prefix}forum_posts` | Antworten auf Threads | +| `{prefix}forum_likes` | Likes auf Threads und Posts | +| `{prefix}forum_tags` | Tag-Bibliothek | +| `{prefix}forum_thread_tags` | VerknĂŒpfung Thread ↔ Tags | +| `{prefix}forum_messages` | Privatnachrichten | +| `{prefix}forum_reactions` | Emoji-Reaktionen auf Posts | +| `{prefix}forum_reports` | Gemeldete BeitrĂ€ge | +| `{prefix}forum_notifications` | In-App-Benachrichtigungen | +| `{prefix}forum_remember_tokens` | Remember-Me-Tokens | + +--- + +## đŸ’Ÿ Export & Import + +### Export +1. WP-Admin → Business Forum → **Export / Import** +2. GewĂŒnschte Bereiche anwĂ€hlen (alle standardmĂ€ĂŸig aktiviert) +3. **Als JSON exportieren** klicken +4. Die Datei wird sofort heruntergeladen (`wbf-backup-DATUM.json`) + +### Import +1. WP-Admin → Business Forum → **Export / Import** +2. Backup-Datei auswĂ€hlen (`.json`) +3. Überschreiben-Optionen nach Bedarf aktivieren +4. **Importieren** klicken + +> ⚠ **Hinweis:** Der Import von Nutzern enthĂ€lt Passwort-Hashes und funktioniert fĂŒr Migrationen zwischen WordPress-Sites. Superadmin-Status wird beim Import nie ĂŒbertragen — nur der WP-Administrator erhĂ€lt automatisch Superadmin-Rechte. + +### Überschreiben-Optionen + +| Option | Effekt | +|---|---| +| Kategorien ĂŒberschreiben | Löscht alle bestehenden Kategorien vor dem Import | +| Benutzer aktualisieren | Aktualisiert vorhandene Accounts (gleicher Username) | +| Threads & Posts ĂŒberschreiben | Löscht alle Threads, Posts, Likes und Reaktionen | +| Privatnachrichten ĂŒberschreiben | Löscht alle DMs vor dem Import | +| Meldungen ĂŒberschreiben | Löscht alle Meldungen vor dem Import | + +--- + +## ❓ FAQ + +**Brauchen Forum-Nutzer einen WordPress-Account?** +Nein. Das Forum hat ein komplett eigenstĂ€ndiges Login-System. Forum-Nutzer können sich direkt im Frontend registrieren ohne Zugang zum WordPress-Backend. + +**Wie werde ich Superadmin?** +Registriere dich im Forum mit derselben E-Mail-Adresse wie dein WordPress-Administratorkonto. Das Plugin erkennt dies automatisch. Falls du bereits ein Forum-Konto mit einer anderen E-Mail hast, kannst du dieses entweder im Setup-Wizard hochstufen oder direkt in der Datenbank das `role`-Feld auf `superadmin` setzen. + +**Kann ich mehrere Superadmins haben?** +Nein. Der Superadmin-Status ist fest an das WordPress-Administratorkonto gebunden. Du kannst jedoch mehrere Nutzer auf die Rolle `Admin` (Level 80) setzen — diese haben nahezu dieselben Rechte. + +**Funktioniert das Plugin mit Caching-Plugins?** +Ja, grundsĂ€tzlich. Der Logout-Button nutzt einen direkten Server-Link (`?wbf_do_logout=1`) statt AJAX und ist daher Caching-sicher. Falls du Probleme mit veralteten Nonces hast, deaktiviere das Caching fĂŒr die Forum-Seite in deinem Caching-Plugin. + +**Wie passe ich das Design an?** +Das Plugin enthĂ€lt ein vollstĂ€ndiges Dark-Theme (`forum-style.css`) passend zum "Minecraft Modern Theme"-Stil. FĂŒr eigene Anpassungen fĂŒge dein CSS in der WordPress-Customizer oder einer Custom-CSS-Datei hinzu und verwende die CSS-Custom-Properties des Plugins (z.B. `--c-primary`, `--c-surface`). + +**Welche E-Mail-Konfiguration wird benötigt?** +Das Plugin nutzt `wp_mail()` — denselben Mechanismus wie WordPress selbst. Wenn dein WordPress bereits E-Mails senden kann (z.B. fĂŒr Passwort-ZurĂŒcksetzen), funktionieren auch die Forum-Benachrichtigungen. FĂŒr zuverlĂ€ssige E-Mail-Zustellung empfiehlt sich ein SMTP-Plugin wie WP Mail SMTP. + +**Wie lösche ich alle Forum-Daten?** +Deaktiviere und lösche das Plugin. Die Datenbanktabellen werden dabei **nicht** automatisch gelöscht (WordPress-Standard). Um die Tabellen zu entfernen, fĂŒhre in phpMyAdmin oder WP-CLI folgende Abfragen aus: +```sql +DROP TABLE IF EXISTS + wp_forum_users, wp_forum_categories, wp_forum_threads, wp_forum_posts, + wp_forum_likes, wp_forum_tags, wp_forum_thread_tags, wp_forum_messages, + wp_forum_reactions, wp_forum_reports, wp_forum_notifications, wp_forum_remember_tokens; +``` + +--- + +*Entwickelt mit ❀ fĂŒr die WordPress-Community* \ No newline at end of file