RadioCMS HUB

v2.3.1 Aktuell

05.07.2026
Download
  • Enthält alle Verbesserungen aus 2.3.0: Sendeplan (einmalige Sendungen erscheinen erst in ihrer Woche), die Footer-Links zu Impressum und Datenschutz, die Backup-Verwaltung mit Mehrfachauswahl und der Spamschutz für die Formulare Kontakt und Bewerbung.
  • Zusätzlich liegt die Lizenzdatei jetzt in der aktuellen Fassung bei (PolyForm Perimeter License).

v2.3.0

05.07.2026
Download
  • Sendeplan: Einmalige Sendungen erscheinen jetzt erst in der Woche, in der sie wirklich laufen, statt schon Wochen im Voraus. Das Datum (Einmalig am ...) bleibt sichtbar.
  • Footer: Die Links zu Impressum und Datenschutz führen wieder zuverlässig auf die richtige Seite, auch auf älteren Installationen.
  • Backup-Verwaltung: Mehrere Backups lassen sich jetzt auf einmal auswählen (Alle markieren) und gemeinsam löschen.
  • Spamschutz: Die Formulare für Kontakt und Bewerbung sind jetzt gegen automatischen Spam geschützt, ganz ohne Captcha oder externen Dienst.

v2.2.20

16.06.2026
Download
  • Sendeplan und Newsletter. Abgelaufene einmalige Sendungen (Spontan-Sendungen mit Datum) verschwinden jetzt automatisch aus dem wöchentlichen Sendeplan-Newsletter und werden einen Tag nach ihrem Datum von der Auto-Aufräum-Routine deaktiviert. Wenn an einem Tag mehrere aktive Sendungen denselben Zeitblock belegen, zeigt der Newsletter nur die zuletzt angelegte Sendung pro Slot. Damit gehen keine alten oder doppelten Sendungen mehr an deine Hörer raus. Kumulativ enthält alle Fixes ab 2.2.19.1 bis 2.2.19.7.

v2.2.19.7

12.06.2026
Download
  • Hotfix.
  • Klassik-Header: Sidebars scrollen jetzt mit der Seite mit (position:absolute) statt eigenen Scrollbalken zu haben. Alle Widgets sind immer komplett sichtbar, der normale Page-Scroll bewegt sie mit. Im Modern-Layout (Standard) bleibt das fixed-Verhalten unveraendert.
  • Kumulativ enthaelt alle Fixes aus 2.2.19.1 bis 2.2.19.6.

v2.2.19.6

12.06.2026
Download
  • Hotfix.
  • Klassisch-Header: Sidebars docken jetzt korrekt an die UNTER-Kante der Navi an (vorher nur an die Navi-Hoehe gerechnet -> Sidebars klemmten weiterhin teils ueber den Widgets).
  • CSS-Fallback erhoeht auf logo*1.6+280, JS korrigiert beim DOM-Ready + nach 250 ms / 1000 ms (deckt Font-Reloads ab).
  • Kumulativ enthaelt alle Fixes aus 2.2.19.1 bis 2.2.19.5.

v2.2.19.5

12.06.2026
Download
  • Hotfix.
  • Klassisch-Header: Sidebar-Widgets links und rechts (per fixed-Position) starten jetzt erst unterhalb vom Hero-Block, vorher klemmten sie im Hero und wurden teilweise von der Navi ueberdeckt. Beim Scrollen rutschen sie nach oben mit, dann docken sie sauber unter der Sticky-Navi an.
  • Kumulativ enthaelt alle Fixes aus 2.2.19.1 bis 2.2.19.4.

v2.2.19.4

12.06.2026
Download
  • Hotfix.
  • Klassisch-Header: Navi bleibt jetzt beim Scrollen oben kleben (sticky-top). Vorher floss sie mit dem Hero-Block weg.
  • Neu: zweite optionale Zeile unter dem Slogan. Einstellungen -> Allgemein -> Sub-Slogan DE/EN. Wird nur im Klassisch-Layout angezeigt, im Modern-Layout ignoriert.
  • Kumulativ enthaelt alle Fixes aus 2.2.19.1 bis 2.2.19.3.

v2.2.19.3

12.06.2026
Download
  • Hotfix.
  • Neu: Header-Layout umstellbar in den Einstellungen.
  • Modern (Standard): Logo links neben der Navi (Plesk-Stil, wie 2.2.19.2).
  • Klassisch: Logo zentriert oben in groesserer Darstellung, Slogan + Sub-Slogan darunter, dann Navbar (typischer Webseiten-Look, wie auf vielen Sender-Seiten gewohnt). Beim Klassisch-Layout wird die Navbar nicht mehr fixed-top, sondern fliesst.
  • Kumulativ enthaelt alle Fixes aus 2.2.19.1 und 2.2.19.2.

v2.2.19.2

12.06.2026
Download
  • Hotfix-Release.
  • Neu:
  • Sender-Logo-Groesse umstellbar in 5 Stufen (Klein 48 px, Mittel 64 px, Gross 80 px, XL 100 px, Mega 120 px). Default Mittel statt fester 42 px. Der Header passt sich automatisch an, auf Mobil wird leicht kleiner skaliert.
  • Plus alle Fixes aus 2.2.19.1:
  • Sender-Logo wird im Header tatsaechlich gerendert.
  • Sendung-bearbeiten: Umlauten-Fix, dunkler DJ-Hinweis.
  • Custom-Widget-Editor: Inhalt-Feld hat min-height 340 px.

v2.2.19.1

12.06.2026
Download
  • Hotfix-Release.
  • Fixes:
  • Sender-Logo wird im Header tatsaechlich gerendert (war im 2.2.19-Build vergessen).
  • Sendung-bearbeiten: Surrogat-Umlaute durch echte Umlaute ersetzt; deaktiviertes DJ-Feld bekommt jetzt Dark-Mode-Style statt hellem Default.
  • Custom-Widget-Editor: Inhalt-Feld hat jetzt min-height 340 px (war auf manchen Browsern als eine Zeile sichtbar).

v2.2.19

12.06.2026
Download
  • Neu: Sender-Logo im Header. Unter Einstellungen -> Allgemein kannst du jetzt ein Logo hochladen (PNG, JPG, GIF, WebP, SVG, max 2 MB). Wenn gesetzt, erscheint das Logo statt des Broadcast-Icons + Sendernamen im Header. Plus saubere Hero-Logik: wenn du den Hero-Titel in den Einstellungen leer laesst und speicherst, bleibt er im Frontend wirklich leer (nicht mehr Fallback auf "Dein Lieblings-"). Sentinel-Marker statt null-Default verhindert den Frontend-Abbruch von 2.2.18.

v2.2.18.1

12.06.2026
Download
  • Wichtiges Notfall-Update: 2.2.18 hatte einen Fehler im Hero-Bereich der Startseite der bei bestimmten Konfigurationen das Frontend abgebrochen hat (News, Footer, Player fehlten). 2.2.18.1 stellt das Verhalten von 2.2.17 wieder her. Bitte umgehend updaten. Die geplante Hero-Verbesserung (leerer Titel bleibt leer + Sender-Logo) kommt sauber in 2.2.19.

v2.2.18

12.06.2026
Download
  • Korrektur im Hero-Bereich der Startseite: wenn der Admin den Hero-Titel in den Einstellungen leer lässt, bleibt er jetzt wirklich leer im Frontend statt auf den Standard-Text "Dein Lieblings-" zurückzufallen. Damit kann der Sendername alleine in der Hero stehen. Kein DB-Update nötig, reine Code-Korrektur in index.php.

v2.2.17

10.06.2026
Download
  • 2.2.17 (2026-06-10) - Text-Korrektur. Echte Umlaute in den Hero-Karten auf der Startseite: "Nächste Live-Sendung" statt "Naechste" und "in den nächsten 14 Tagen" statt "naechsten". Plus Widget-Name im Page-Builder "Nächste Live-Sendung". Kumulativ: enthält 2.2.16 SHOUTcast-v2-Fallback plus alle Änderungen seit 2.2.0.

v2.2.16

10.06.2026
Download
  • 2.2.16 (2026-06-10) - SHOUTcast-v2 Kompatibilität - Now-Playing für SHOUTcast-v2-Streams: zusätzlicher Fallback-Pfad /stats?sid=N (klassisches SHOUTcast 2, DGNCast) als Ergänzung zum bisherigen /statistics?sid=N (DNAS 2.6+). Sender ohne Titel im Player sehen ihn jetzt automatisch. Reiner Code-Patch, keine DB-Änderungen.

v2.2.15.1

09.06.2026
Download
  • 2.2.15.1 (2026-06-09) - Sicherheits-Update
  • Neuer Tab "Sicherheit" unter Einstellungen: Passwort-Richtlinie einstellbar (Mindestlänge 6-32, Großbuchstabe / Zahl / Sonderzeichen jeweils einzeln verpflichtbar). Defaults: 8 Zeichen, Zahl + Sonderzeichen Pflicht, Großbuchstabe optional - kann jeder Sender selbst hochziehen.
  • Policy greift an allen Stellen wo Passwörter gesetzt werden: Listener-Registrierung, Passwort-Reset, Passwort-Änderung im Hörer-Profil und beim Anlegen / Ändern von Admin-Konten im Backend.
  • Live-Hint unter dem Passwort-Feld zieht die aktiven Regeln automatisch (z.B. "Erforderlich: mindestens 8 Zeichen, 1 Zahl, 1 Sonderzeichen").
  • Bestehende Passwörter bleiben gültig - die neue Regel greift erst beim nächsten Setzen.
  • Kumulativ: enthält alle Änderungen seit 2.2.0.

v2.2.14

07.06.2026
Download
  • 2.2.14 (2026-06-07) Hotfix
  • PHP-Parse-Error in admin/custom-widgets.php Zeile 395: JavaScript-Snippet enthielt einen PHP-Open-Tag-Substring in Single-Quote-Strings, strikte PHP-FPM-Versionen (Plesk) interpretierten ihn als Mode-Switch und brachen die Datei mit Parse-Error ab. Fix: Tag im JS-Source aufgesplittet damit der Lexer nichts findet. Kumulative 2.2.13-Migration fuer custom_widgets-Spalten bleibt enthalten.

v2.2.13

07.06.2026
Download
  • 2.2.13 (2026-06-07) Hotfix
  • Nachgezogen aus v1.7.4.3: custom_widgets.show_title und custom_widgets.header_style waren in den kumulativen Migrationen seit 2.2.9 versehentlich nicht enthalten.
  • Folge: beim Bearbeiten eines Custom-Widgets schlug das UPDATE-Statement still mit "Unknown column" fehl, der Editor zeigte Erfolg aber speicherte nichts.
  • Jetzt idempotent ergaenzt - beim naechsten Updater-Lauf werden die Spalten angelegt.

v2.2.12

07.06.2026
Download
  • 2.2.12 (2026-06-07)
  • Auf der Entwickler-Seite (Admin → Entwickler & API): "Starter-Template"-Button laedt jetzt direkt das Template-ZIP (~7 KB) statt der ganzen Core-Distribution.
  • Plugin-Entwickler-Doku auf dem Hub mit echten Umlauten und ohne Em-Dashes.
  • Kumulatives Update-Diff enthaelt alle Aenderungen seit 2.2.0 (50 Files).
  • Keine DB-Aenderungen.

v2.2.11

07.06.2026
Download
  • 2.2.11 (2026-06-07)
  • Sidebar-Eintrag "API-Dokumentation" umbenannt zu "Entwickler & API" - klarer fuer Plugin-Entwickler.
  • Auf der Entwickler-Seite (admin/api-docs.php) jetzt prominent oben ein Block mit Direktlink zur Plugin-Entwickler-Doku auf dem Hub und zum mitgelieferten Starter-Template.
  • Kumulatives Update-Diff enthaelt alle Aenderungen seit 2.2.0 (50 Files, 218 KB).
  • Keine DB-Aenderungen.

v2.2.10

07.06.2026
Download
  • 2.2.10 (2026-06-07)
  • Plugin-Entwickler-Doku komplett ueberarbeitet (Hub /hub/docs/plugin-developer/): alle aktuellen Hooks, Custom-Listener-Fields-API (Core 2.2.8), API-Tabelle, Anti-Pattern-Liste, Marketplace-Submission-Anleitung.
  • Plugin-Starter-Template (docs/starters/plugin-template/) auf aktuellen Stand: plugin.json mit Marketplace-Feldern, index.php mit Sidebar-Link und allen Hook-Beispielen, migrate.php Idempotenz-Pattern, NEUE admin/index.php als vollstaendiges Pflicht-Pattern (admin-header.php + admin-footer.php, korrektes APP_ROOT mit dirname(__DIR__, 3), CSRF, data-confirm).
  • Kumulativ: enthaelt alle Aenderungen aus 2.2.0 bis 2.2.9.
  • Keine DB-Aenderungen noetig.

v2.2.9

05.06.2026
Download
  • 2.2.9 (2026-06-05)
  • CSS-Fix: Der "Bild auswaehlen"-Button im Hoerer-Profil wurde durch das globale Form-Padding aufgeblasen und je nach Browser kaum lesbar. Jetzt eigener Style via ::file-selector-button passend zum Dark-Theme.
  • Kumulativ: enthaelt alle Aenderungen aus 2.2.0 bis 2.2.8.
  • Keine DB-Aenderungen noetig.

v2.2.8

05.06.2026
Download
  • 2.2.8: Hörer-Custom-Felder. Unter Admin → Hörer-Felder lassen sich jetzt eigene Eingabefelder für das Registrierungs- und Profil-Formular anlegen (z.B. Geburtstag, Vor- und Nachname, Telefon). Plugins können sich an einzelne Felder hängen und die Werte weiterverarbeiten - z.B. übernimmt der Birthday-Wisher automatisch den Geburtstag. Die ausgefüllten Werte sind im Admin → Hörer-Accounts pro Hörer als Klapp-Bereich sichtbar und editierbar. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.7

05.06.2026
Download
  • 2.2.7: Cache-Bug bei eingeloggten Admins behoben. Frontend-Seiten werden jetzt auch für angemeldete Admins/DJs als no-store ausgeliefert, sodass beim F5 nicht mehr zwischen anonymem und eingeloggtem Cache gewechselt wird (Wechselanzeige Footer-Widget vs On-Air-Now). Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.6

04.06.2026
Download
  • 2.2.6: Wichtiger Plugin-Kompatibilitäts-Fix. Mehrere Plugins (u.a. Anniversary-Tracker, Quote-of-the-Day) hatten ihre Footer-Anzeige nie eingehängt, weil sie eine im Core nicht existierende Funktion aufriefen. Der Core stellt diese Funktion jetzt als Wrapper bereit, damit alle Plugins ihren Footer-Hook korrekt registrieren und anzeigen. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.5

04.06.2026
Download
  • 2.2.5: Plugin-Manager Selbstheilung. Plugins, die ueber den Marketplace installiert wurden, aber bisher in der Plugin-Liste nicht zu sehen waren (kein Datenbank-Eintrag), erscheinen jetzt automatisch und können aktiviert werden. Beim Aktivieren wird außerdem die Plugin-Migration sofort ausgeführt, damit Berechtigungen und Menü-Eintraege ohne Verzögerung erscheinen. Zusätzlich Umlaut-Korrekturen in Plugin-Verwaltung und Marketplace (Hörer-Kategorie, Geschäft-Kategorie, Lizenzschlüssel-Text). Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.4

04.06.2026
Download
  • 2.2.4: Zwei kleine Korrekturen. (1) Im Page-Builder Pro bei Vorlagen anwenden konnte das Zielseite-Auswahlmenü nicht richtig geöffnet werden, weil ein Bestätigungs-Dialog den Klick abfing. Jetzt öffnet das Menü normal, und der Dialog erscheint nur noch beim Klick auf Anwenden. (2) Frontend-Footer feuert jetzt zusätzlich einen Alias-Hook, damit Plugins, die historisch an diesem Hook hingen (Anniversary-Tracker, Quote-of-the-Day), wieder im Footer angezeigt werden. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.3

04.06.2026
Download
  • 2.2.3: Widget-Editor pflegt jetzt Inhalte je Widget. Jedes platzierte Widget bekommt einen kleinen Zahnrad-Knopf, ein Klick öffnet einen Dialog mit allen Eingabefeldern des Widgets (Texte, Farben, Listen-Einträge wie z.B. die Punkte der Feature-Liste, Slides im Hero-Slider, Mitglieder bei Team-Karten). Beim Speichern wird die Vorschau sofort neu geladen. Vorher zeigten die Widgets nur die fest verdrahteten Defaults. Dazu kleinere Umlaut-Korrekturen in Plugin-Verwaltung und Marketplace. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.2

04.06.2026
Download
  • 2.2.2: Verbesserte Plugin-Verwaltung und Marketplace. Die Plugin-Seite gruppiert Plugins jetzt in einklappbare Kategorien (Sendebetrieb, Hörer und Community, Marketing, Design, Monetarisierung, Statistik, Tools), mit kompakten Zeilen und einer Statuszeile oben (Aktiv, Inaktiv, Lizenz nötig, Updates). Damit bleibt auch bei vielen aktiven Plugins die Übersicht erhalten. Auch der Marketplace sortiert die Angebote nach Kategorien. Frontend: behebt das Problem, dass die Startseite nach dem Login fälschlich ausgeloggt aus dem Browser-Cache kam (Folge: Treueprogramm-Widget fehlte). Profil-Seite: saubere Darstellung von Avatar und E-Mail-Feld. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.1

04.06.2026
Download
  • 2.2.1: Kleine Korrektur in den Hörer-Accounts. In der Spalte Letzter Login wurde bei Konten, die zu DJ oder Admin hochgestuft wurden, fälschlich nie angezeigt, weil sich diese Konten im Admin-Bereich anmelden und nicht über das Frontend. Jetzt wird auch der Login im Admin-Bereich berücksichtigt und mit einem kleinen Hinweis (DJ, Admin oder Backend) gekennzeichnet. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.2.0

01.06.2026
Download
  • 2.2.0: Zwei Verbesserungen. (1) Optionale automatische Sortierung der Admin-Seitenleiste: unter Navigation, Sidebar-Modus auf Automatisch umschalten, dann ordnet das System jedes Plugin nach Themengruppe in einen eigenen aufklappbaren Block (übersichtlich bei vielen Plugins), alles eingeklappt. Der Standard bleibt Klassisch, deine bisherige Sortierung wird nicht verändert. (2) Newsletter-Versand robuster gemacht: der automatische Newsletter wird jetzt im selben Durchlauf verschickt statt erst beim nächsten Lauf, und der Versand läuft zusätzlich über den allgemeinen Plugin-Cron mit. So genügt ein eingerichteter Cron, und Newsletter bleiben nicht mehr in der Warteschlange hängen. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.1.2

31.05.2026
Download
  • 2.1.2: Rechte-Aenderungen wirken jetzt sofort. Wenn ein Admin einer Rolle ein Recht entzieht oder gibt, greift das ab sofort fuer alle angemeldeten Nutzer, ohne dass sie sich neu anmelden muessen (vorher blieb ein entzogenes Recht bis zum naechsten Login aktiv). Enthaelt kumulativ alle Aenderungen seit 2.0.9.3.

v2.1.1

31.05.2026
Download
  • 2.1.1: Sicherheits- und Rechte-Fixes. Plugin-Verwaltungsseiten pruefen jetzt zuverlaessig das noetige Recht (ein Moderator oder DJ ohne Einstellungs-Recht kommt nicht mehr per Direktaufruf in fremde Plugin-Einstellungen). Neue Sendeplan-Rechte: "Nur eigene Sendung bearbeiten/anlegen" und "Nur eigene Sendung loeschen" - damit kann ein DJ auf die eigene Sendung beschraenkt werden, waehrend Admin, Sendeleitung und Superadmin weiterhin alle Sendungen verwalten. Die neuen Rechte werden nur angelegt, die Zuordnung nimmt der Admin in Rollen und Rechte selbst vor. Enthaelt kumulativ alle Aenderungen seit 2.0.9.3.

v2.1.0

31.05.2026
Download
  • 2.1.0: Bessere Lesbarkeit der Hinweis- und Fehlermeldungen (heller Text auf farbigem Grund, Frontend und Admin). Neuer Schalter im DJ-Bereich: jeder DJ entscheidet selbst, ob seine Sendungen aufgenommen werden (Show-Replay), plus Admin-Schalter im DJ-Profil. Echte Umlaute auf den Registrierungs-, Login- und Profilseiten. Enthält kumulativ alle Änderungen seit 2.0.9.3.

v2.0.9.5

31.05.2026
Download
  • Darstellung im Admin-Bereich verbessert: Tabellen und Texte auf Plugin-Seiten sind im dunklen Design jetzt gut lesbar, und das Kalender-Symbol in Datumsfeldern ist sichtbar. Im Marktplatz steht bei bereits installierten Plugins jetzt "Installiert" statt eines Installieren-Buttons. Navigation: die Standard-Links (Cron-Jobs, Website ansehen) lassen sich jetzt auch in Plugin-Ordner einsortieren, ohne zu verschwinden. Dazu Umlaut-Korrekturen in der Seitenleiste.

v2.0.9.4

31.05.2026
Download
  • Navigation: Die Menüpunkte Cron-Jobs und Website ansehen lassen sich jetzt im Navigations-Manager frei sortieren und in eigene Gruppen verschieben. Zuvor waren diese beiden Standard-Links dort nicht aufgeführt.

v2.0.9.3

30.05.2026
Download
  • Sicherheits-Update (Stored-XSS-Härtung): News-Artikel und Seiten-Bausteine (Text- und Raw-HTML-Baustein) werden jetzt serverseitig von eingeschleustem aktivem Code (Script-Tags, Event-Handler, javascript:-Links) gesäubert. Formatierung, Bilder und eingebettete Videos (z.B. YouTube) bleiben voll erhalten. Keine Funktionsänderung für normale Inhalte.

v2.0.9.2

30.05.2026
Download
  • Security-Hardening nach Audit: Listener-Login regeneriert jetzt die Session-ID gegen Session-Fixation. Listener-Logout leert auch SESSION-Variablen die andere Plugins lesen. install.php loescht sich selbst nach erfolgreichem Setup. cron/backup nutzt MYSQL_PWD-Env statt Passwort im Argument. Custom-Widget Code-Ausfuehrung braucht jetzt zusaetzlich ein DEFINE in der Config (Schutz vor Setting-Override). Partner-Banner-Upload akzeptiert nur Bilder mit erkanntem MIME (kein SVG mehr), Filename ist Random. Migration legt .htaccess in 19 Upload-Verzeichnissen an die PHP-Webshell-Uploads blocken.

v2.0.9.1

29.05.2026
Download
  • Hotfix: register.php, login.php, forgot-password.php und reset-password.php geben bei abgelaufener Session keinen harten CSRF-Fehler-Stop mehr, sondern regenerieren den Token und zeigen einen freundlichen Banner. User kann das Formular einfach erneut abschicken.

v2.0.9

28.05.2026
Download
  • Cumulative Hotfix nach Tester-Welle.
  • Behoben:
  • DJ und Member konnten sich teilweise nicht ausloggen wenn parallel beide Logins aktiv waren. adminLogout() killt jetzt sauber den Session-Cookie und ruft listener_logout() mit auf.
  • Frisch eingetragene Sendungen tauchten unter "nächste Sendung" nicht auf wenn sie keinem DJ zugewiesen waren. LEFT JOIN statt INNER JOIN holt sie jetzt mit.
  • Plugin-Links (Chat-Pro, Forum, ...) lassen sich jetzt im Navigation-Manager im "Neuer Eintrag"-Modal mit einem Klick als Quick-Add übernehmen. Vorher musste man Label und URL manuell tippen.
  • Mobile-Burger-Menü schließt sich nach einem Link-Klick automatisch. Vorher blieb es offen über der Zielseite stehen und wirkte als ob der Klick keine Reaktion hatte.
  • Player im Frontend zeigte bei einem Live-DJ nur noch den DJ-Namen und unterdrückte den aktuellen Track-Titel. Jetzt steht da "DJ-Name - Track-Titel", solange der Stream Metadata liefert. Wenn nicht, fällt es auf den DJ-Namen zurück.

v2.0.8

28.05.2026
Download
  • Logout-Cache-Fix: Nach Abmelden zeigte der Browser bei Browser-Zurück die gecachte eingeloggte Seite. Cache-Control: no-store auf allen Admin-Seiten und Logout-Redirects behebt das.

v2.0.7

27.05.2026
Download
  • Neu:
  • Frontend-Navigation: Plugin-Links (Chat-Pro, Forum, ...) sind jetzt im Navigation-Manager genauso steuerbar wie alle anderen Links. Verschieben, in Dropdown ziehen, umbenennen oder ausblenden. Sobald der Navigation-Manager aktiv ist, läuft der alte Plugin-Filter NICHT mehr automatisch im Header. Beim Update werden alle aktuell registrierten Plugin-Items einmalig in die navigation_items-Tabelle übernommen, sofern der Manager bereits initialisiert ist. Wenn nicht: einmal Admin > Navigation > Header > "Reset auf Default" klicken, dann sind alle Defaults plus Plugin-Links drin.
  • Behoben:
  • Listener-Registrierung prüft jetzt auch users.email und djs.email vor der Anlage. Bisher konnte ein registrierter DJ/Admin sich nochmal als Listener mit derselben Email anlegen (drei Accounts pro Person). Jetzt klare Meldung "Diese Email gehört bereits zu einem DJ-Account auf dieser Seite". Gleicher Check auch für den Nickname gegen users.name und djs.name.
  • djs.email bekommt einen UNIQUE-Index (defensive). Vorhandene DJ-Email-Duplikate werden auf den jüngsten Eintrag eingedampft. NULL-Werte bleiben erlaubt (DJs ohne Email).

v2.0.6.14

27.05.2026
Download
  • Behoben:
  • Live-Sendung wurde im Frontend nicht erkannt wenn sie über Mitternacht läuft (z.B. "Rock Nacht Sa 21:00-00:00"). getCurrentShow() hat solche Sendungen nie als aktiv gemeldet, der Player blieb auf Auto-DJ. Behoben für Sendungen die bis genau 00:00 laufen UND für Sendungen die über Mitternacht in den nächsten Tag wrappen (z.B. Sa 22:00 bis So 02:00).
  • Listener konnten sich mehrfach mit derselben Email registrieren wenn die listeners-Tabelle aus einer alten Version ohne UNIQUE-Index angelegt war. Migration legt UNIQUE-Indizes auf Email und Nickname idempotent nach (bestehende Duplikate werden auf den jüngsten Eintrag eingedampft). Zusätzlich fängt der Register-Code jetzt Duplicate-Key-Fehler ab und zeigt eine saubere deutsche Meldung.

v2.0.6.13

25.05.2026
Download
  • Core 2.0.6.13 (CSS-Fix, kumulativ):
  • Dropdown-Submenu in der Frontend-Navi war bei Mouseover unlesbar (weiße Schrift auf hellem Bootstrap-Default-Hover-Background). Eigene Styles fuer .dropdown-menu + .dropdown-item:hover in Frontend-CSS: dunkler Background + Akzent-Farbe + Hover-Background mit Primary-Glow.
  • Plus alle Fixes seit 2.0.6.3 kumulativ.

v2.0.6.12

25.05.2026
Download
  • Core 2.0.6.12 (Security + Logout-Fix, kumulativ):
  • Zentraler Permission-Check pro Plugin-Page in admin/plugin.php. Liest die Permission aus dem registrierten Sidebar-Link und blockiert direkten URL-Aufruf wenn der User die Permission nicht hat. Vorher konnte ein DJ mit nur manage_chat per /admin/plugin.php?p=chat-pro&page=settings direkt in die Settings rein.
  • Logout-Bug: User wurde nach Logout im Frontend weiter als eingeloggt angezeigt. Listener-Logout cleart jetzt zusaetzlich: Cookie mit allen Path-Varianten + Logout-Marker in Session damit listener_current() im selben Request null liefert + chat_online Eintrag falls vorhanden.
  • Plus alle Fixes seit 2.0.6.3 kumulativ (Listener-Schema-Selfheal, Hoerer-Accounts + Cron Admin-Pages, Backups/Update/Listener auch fuer admin-Rolle, weisse Frontend-Alerts, Favicon-Upload, iOS-Sidebar 100dvh, P24-Sidebar-Skip-Fix).

v2.0.6.11

25.05.2026
Download
  • Core 2.0.6.11 (kritischer P24-Fix wieder, kumulativ): Plugin-Sidebar-Links waren bei Installs mit DB-Autogroups komplett unsichtbar. PHP rendert jetzt immer alle Plugin-Links flach, JS sortiert sie nachtraeglich in DB-Override-Gruppen ein. Plus alle Fixes seit 2.0.6.3 kumulativ (Listener-Schema-Selfheal, Hoerer-Accounts + Cron Admin-Pages, Promote-zu-DJ, Backups/Update/Listener-Page auch fuer admin-Rolle, weisse Frontend-Alerts, Favicon-Upload, iOS-Mobile-Sidebar 100dvh).

v2.0.6.10

25.05.2026
Download
  • Core 2.0.6.10 (kumulativer Hotfix-Pack, alle Fixes seit 2.0.6.3):
  • Listener-System: Memberbereich-Save-Bug behoben (Schema-Selfheal v2, akzeptiert alte und neue Spaltennamen, Daten-Migration vom status-ENUM auf Boolean-Flags), Avatar-Upload mit detaillierten Fehlern.
  • Auth-Bridge: Session-listener_id wird sauber gesetzt - Forum/Chat-Pro/Membership-Pro erkennen eingeloggte User jetzt zuverlaessig.
  • Sidebar: neue Pages Hoerer-Accounts (Listener-Verwaltung) und Cron-Jobs (Plugin-Cron-Uebersicht mit manuellem Triggern). Promote-Buttons in der Hoerer-Liste machen Listener mit einem Klick zum DJ oder Admin.
  • Permissions: Backups, System-Update und Hoerer-Accounts auch fuer admin-Rolle erreichbar (vorher nur superadmin, normale Admins wurden aufs Dashboard zurueckgeworfen).
  • Benutzer-Liste: Aktions-Buttons mit Beschriftung statt nur Icon.
  • Frontend: Erfolgs-/Fehler-Boxen auf Register/Login/Profil/Forgot-Password mit weisser Schrift statt dunkelgruen-auf-hellgruen.
  • Favicon-Upload in Einstellungen -> Allgemein.
  • Navigation-Manager: Cron-Jobs + Website ansehen sind jetzt verschiebbar.
  • Mobile: iOS-Sidebar nutzt 100dvh statt 100vh - Adressleiste hat sonst den untersten Link verdeckt.
  • Membership Pro Plugin: Sidebar-Label Mitglieder umbenannt zu Mitglieder (Premium) zur Abgrenzung von Frontend-Registrierungen.

v2.0.6.9

25.05.2026
Download
  • Core 2.0.6.9 (Sidebar-Permission-Hotfix):\nTester-Bug: Backups, System-Update und Hoerer-Accounts waren nur fuer superadmin sichtbar. Admin sah die Links nicht. Jetzt admin+superadmin. Page-seitige Permission-Checks bleiben unveraendert.

v2.0.6.8

25.05.2026
Download
  • Core 2.0.6.8 (Mobile-Sidebar + Frontend-Alert-Fix, kumulativ):\n- Tester-Bug: System-Update-Link am Handy nicht sichtbar (iOS-Toolbar hat ihn verdeckt) - Sidebar nutzt jetzt 100dvh statt 100vh, plus Bottom-Padding und smooth-Scroll. Plus data-nav-key=update fuer Nav-Manager.\n- Plus 2.0.6.7: Erfolgs-/Fehler-Boxen auf Frontend mit weißer Schrift.

v2.0.6.7

25.05.2026
Download
  • Core 2.0.6.7 (UI-Hotfix Frontend-Alerts):
  • Erfolgs-/Fehler-/Warnungs-Boxen auf register.php, login.php, profile.php, forgot-password.php und reset-password.php hatten dunkelgrünen Text auf hellgrünem Hintergrund - kaum lesbar. Jetzt: weißer Text auf kräftigerem Farbhintergrund (grün/rot/gelb), font-weight 500.
  • Plus Umlaute: später, Hörer-Account (statt spaeter, Hoerer).

v2.0.6.6

25.05.2026
Download
  • Core 2.0.6.6 (UX-Hotfix):
  • Sidebar-Label Mitglieder umbenannt zu Hörer-Accounts (mit Hörer-Icon) damit klar wird das sind Frontend-Registrierungen, keine Premium-Mitglieder. Premium findest du weiter unter Membership Pro -> Mitglieder (Premium).
  • Cron-Jobs und Website ansehen sind jetzt im Navigation-Manager verschiebbar.
  • Benutzer-Liste: Aktions-Buttons mit Beschriftung statt nur Icon. Stift-Symbol war nicht klar als Bearbeiten erkennbar.
  • Echte Umlaute in allen UI-Strings.

v2.0.6.5

25.05.2026
Download
  • Core 2.0.6.5 (Hotfix nach 2.0.6.4):
  • Bugfix: registrierte Mitglieder wurden in der Mitglieder-Liste nicht angezeigt obwohl in der listeners-Tabelle. Ursache: Schema-Selfheal hat bei aelteren Installationen (1.7.1-Schema mit username/avatar_path/verified/status-ENUM/last_login_at) nur teilweise durchgegriffen, weil ein einziger fehlgeschlagener ALTER alle nachfolgenden Aenderungen mitgerissen hat. Selfheal macht jetzt jeden ALTER einzeln in try/catch.
  • Neu: Daten-Migration vom alten status-ENUM (pending/active/banned/deleted) auf is_verified/is_approved/is_banned. status=active gibt is_verified=1, is_approved=1.
  • Neu: bei vorhandener username-Spalte (alte 1.7.1-Installation) wird display_name automatisch aus username befuellt falls leer.
  • Neu: Backwards-Compat fuer Listener mit NULL-Werten in is_verified/is_approved/is_banned (Default auf 1 bzw. 0).
  • Neu: Diagnose-Block in admin/listeners.php zeigt jetzt SQL-Errors + Spaltennamen wenn Liste leer ist obwohl Eintraege erwartet werden - kein silent-fail mehr.

v2.0.6.4

25.05.2026
Download
  • Core 2.0.6.4 (Sammelhotfix nach Tester-Tester-Bugcheck):\n- Bugfix: Member-Bereich speicherte nichts (Profil, Avatar, Bio, Newsletter) - neuer Schema-Selfheal in includes/listener_auth.php legt fehlende Spalten automatisch nach (bio, newsletter_opt_in, avatar_url, is_verified, is_approved, is_banned, last_login). Akzeptiert auch alte Spaltennamen wie verified, avatar_path, status, last_login_at und benennt sie um. Avatar-Upload zeigt jetzt konkrete Fehlermeldungen statt silent-fail.\n- Bugfix: Frisch registrierte Mitglieder konnten nicht im Forum schreiben und wurden nicht als Member erkannt. Ursache: $_SESSION[listener_id] wurde nirgends gesetzt, alle Plugins (Forum, Chat, Membership) lasen aber genau das. Jetzt setzt listener_auth.php die Session-Bridge bei Login + listener_current() + raeumt bei Logout sauber auf.\n- Neu: Admin-Sidebar -> Mitglieder. War vorher als "Registrierungen" beschriftet, klang wie eine reine Loesch-Seite. Aktiviert die volle Listener-Verwaltung (Filter, Aktiv/Wartet/Gesperrt, Freigeben, Sperren, Loeschen).\n- Neu: Promote-Buttons in der Mitglieder-Liste - registrierte Listener koennen mit einem Klick zum DJ oder Admin gemacht werden (legt User-Account mit gleichem Passwort an, bei DJ zusaetzlich einen Eintrag in djs-Tabelle mit Auto-Slug + Avatar als Foto).\n- Neu: Admin-Sidebar -> Cron-Jobs. Liste aller registrierten Plugin-Cron-Hooks mit letzter Lauf-Zeit, naechstem faelligen Lauf, manuellem Triggern pro Hook + "Alle faelligen jetzt laufen lassen" + "Alle erzwungen". Plus Crontab-Vorschlag mit eingesetztem BASE_PATH zum direkten Kopieren.\n- Neu: Favicon-Upload in Einstellungen -> Allgemein. PNG/ICO/JPG/GIF/WebP bis 512 KB, Vorschau, Entfernen-Checkbox. Wird automatisch in /assets/favicons/ abgelegt und im Frontend + Admin als <link rel="icon"> mit korrektem MIME-Type ausgegeben (Inline-SVG-Fallback wenn keins hochgeladen).

v2.0.6.3

25.05.2026
Download
  • v2.0.6.3 Hotfix: Plugin-Updater erkennt Permission-Probleme aktiv, versucht chmod(0775) als Workaround. Bei kritischen Fehlern Auto-Rollback aus Backup + Mail an Support. Kein halb-installiertes Plugin mehr.

v2.0.6.2

24.05.2026
Download
  • Core 2.0.6.2 - Sammelhotfix der 2.0.6-Reihe
  • FIXES (kumulativ enthalten):
  • 2.0.6: Permission-Vererbung fuer Add-on Plugins. Bei Custom-Rollen wurden Chat-Add-on Sidebar-Links (Chatbots, Live-Quiz, Voice + AI) nicht angezeigt obwohl Lizenz aktiv war. Migration verteilt automatisch alle Chat-Add-on Permissions an Rollen die schon 'manage_chat' haben - kein manuelles SQL noetig.
  • 2.0.6.1: Plugin-Sub-Links bei aktiver DB-autogroup waren komplett unsichtbar. Ursache: admin-header.php skippte die Plugin-Links per continue, der JS-Override-Block hatte aber keine DOM-Elemente zum Verschieben in die Gruppe. Fix: Plugin-Links werden jetzt immer als <a>-Tags gerendert. Defensiv: sichtbar > unsichtbar.
  • 2.0.6.2: Hoererzahl-Chart im Admin-Dashboard wurde nicht gerendert obwohl Chart.js sauber geladen war. Ursache: alter Race-Condition-Fix nutzte window.addEventListener('load', ...) das nicht mehr triggert wenn der load-Event bereits gefeuert hat bevor das Inline-Script den Listener registriert (BFCache, late Inline-Parsing). Neuer Loader: DOMContentLoaded + Polling-Fallback (max 6 Sek). Robust gegen BFCache und Browser-Eigenheiten.

v2.0.6.1

24.05.2026
Download
  • Core 2.0.6.1 (Hotfix) - Admin-Sidebar Plugin-Link Skip-Bug behoben.\n- Behoben: Plugin-Sub-Links (z.B. Chat-Add-ons chat-chatbot, chat-live-quiz, chat-voice-ai) waren bei manchen Kunden im Admin unsichtbar, obwohl die Plugins korrekt installiert, lizenziert und alle Permissions vergeben waren. Ursache: admin-header.php skippte die Plugin-Links bei aktiver DB-autogroup, der JS-Override-Block hatte aber keine DOM-Elemente zum Verschieben in die Gruppe.\n- Fix: Plugin-Links werden jetzt immer als <a>-Tags gerendert. Wenn das Plugin eine DB-autogroup hat, wird nur die Auto-Wrapper-Gruppe ausgelassen und der JS-Override verschiebt die Links per parent_key in die DB-Gruppe. Defensiv: sollte der Override aus irgendeinem Grund nicht greifen, bleiben die Links wenigstens flach sichtbar statt komplett unsichtbar.

v2.0.6

24.05.2026
Download
  • Core 2.0.6 (Hotfix) - Permission-Vererbung fuer Add-on Plugins.
  • Behoben: bei Custom-Rollen wurden Chat-Add-on Sidebar-Links (Chatbots, Live-Quiz, Voice + AI) nicht angezeigt, obwohl die Plugins korrekt installiert + lizenziert waren. Ursache: die Plugin-Permissions wurden nur an 'admin' und 'superadmin' vergeben, nicht an Custom-Rollen.
  • Migration verteilt automatisch alle Chat-Add-on Permissions an Rollen die schon 'manage_chat' haben - kein manuelles SQL noetig.
  • Generisches Pattern auch fuer zukuenftige Add-on Plugins (Charts, Page-Builder, Theme-Builder Familien).

v2.0.5

24.05.2026
Download
  • Core 2.0.5 - Admin-Navigation: Auto-Plugin-Gruppen werden im Manager sichtbar (Auto-Migration), neue Gruppen koennen direkt als Untergruppe einer bestehenden Gruppe angelegt werden.

v2.0.4

22.05.2026
Download
  • v2.0.4 (Hotfix)
  • News-Detailseite: Artikel-Inhalt wurde nicht angezeigt wenn bestimmte Plugins (z.B. Chat-Pro) aktiv waren. Behoben.
  • News-Admin: Veroeffentlichungsdatum wird jetzt korrekt gesetzt wenn ein Artikel veroeffentlicht wird.
  • Stabilitaet: Typ-Fehler bei fehlendem Datum verhinderte das komplette Laden der Seite. Behoben.
  • Enthaelt alle Aenderungen aus v2.0.0 bis v2.0.3.

v2.0.3

22.05.2026
Download
  • v2.0.3 (kumulativ über v2.0.0 bis v2.0.2)
  • Song-Wünsche von der Radiowebseite werden automatisch in die Chat-Pro-Wunschbox übertragen wenn das Chat-Pro-Plugin aktiv ist
  • Enthält alle Verbesserungen aus v2.0.0 bis v2.0.2: Theme-System, verschachtelbare Admin-Navigation, automatische Plugin-Gruppierung in der Sidebar und Sidebar-Suchfeld

v2.0.2

21.05.2026
Download
  • Kumulatives v2.0-Update (enthaelt v2.0.0, v2.0.1 und v2.0.2).
  • Theme-System (aus v2.0.0):
  • 3 zusaetzliche Core-Themes: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
  • Plugin-Hook radiocms_register_theme() fuer Marketplace-Theme-Plugins.
  • radiocms_get_theme_css_url() Helper mit Override-Support.
  • Verschachtelte Admin-Navigation (aus v2.0.1):
  • Im Navigation-Manager lassen sich Admin-Sidebar-Gruppen in Gruppen verschachteln.
  • Die Admin-Sidebar rendert verschachtelte Gruppen als aufklappbare Untergruppen.
  • Aufgeraeumte Admin-Sidebar (neu in v2.0.2):
  • Plugins mit mehreren Admin-Seiten werden automatisch zu einem aufklappbaren Block zusammengefasst. Das gilt fuer jedes Plugin, ohne dass das Plugin etwas tun muss. Je mehr Plugins installiert sind, desto uebersichtlicher bleibt die Navigation.
  • Neues Suchfeld oben in der Admin-Sidebar: filtert Menuepunkte und Gruppen live beim Tippen.
  • Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro etc.) sind separate Marketplace-Downloads und nicht Teil dieses Core-Updates.

v2.0.1

21.05.2026
Download
  • Kumulatives v2.0-Update (enthaelt v2.0.0 plus v2.0.1).
  • Theme-System (aus v2.0.0):
  • 3 zusaetzliche Core-Themes: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
  • Plugin-Hook radiocms_register_theme() fuer Marketplace-Theme-Plugins.
  • radiocms_get_theme_css_url() Helper mit Override-Support.
  • Verschachtelte Admin-Navigation (neu in v2.0.1):
  • Im Navigation-Manager lassen sich Admin-Sidebar-Gruppen jetzt in Gruppen verschachteln, per Drag-and-Drop (Gruppe in Gruppe).
  • Die Admin-Sidebar rendert verschachtelte Gruppen als aufklappbare Untergruppen; die aktive Seite klappt ihre komplette Gruppen-Kette automatisch auf.
  • Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro etc.) sind separate Marketplace-Downloads und nicht Teil dieses Core-Updates.

v1.9.0

19.05.2026
Download
  • v1.9.0 Major-Release
  • Begleitet die v1.9-Plugin-Welle: Forum & Community, Multi-Language Pro, DJ-Drops-Generator, AI-Music-Recommendations.
  • Core-seitig keine breaking Changes. Cumulative seit v1.7.5 mit allen Bugfixes + Defensive-Hotfix fuer Rollen-Permissions. Plugins der v1.9-Welle erwarten requires_cms=1.8.0 minimum, laufen also auch unter 1.8.0 weiter - der Bump auf 1.9.0 markiert die Major-Stufe der neuen Plugin-Welle.

v1.8.0

17.05.2026
Download
  • Major-Release v1.8.0 mit dem v1.8-Plugin-Set (Backup Pro Cloud, Event-Calendar Pro, DJ-Pool-Manager). Cumulativ enthalten: alle Fixes aus v1.7.6 bis v1.7.9.9.4 (News-Lösch-Button, Plugin-Sidebar-Fix für DJ, Rechte-ansehen, Werbe-Spot-Tabs, Wunschbox-Spinner, Slider-Bild-Anpassung etc.). Migration ist idempotent.

v1.7.9.9.4

16.05.2026
Download
  • 2 Bug-Fixes: (1) Wunschbox Spinner-Symbol im Absenden-Button war dauerhaft sichtbar (kein default-hide, kein Submit-Handler). Spinner jetzt versteckt per inline display:none, JS-Handler blendet ihn beim Submit ein + disabled Button. (2) DJ sah in roles.php nur den Hinweis Du hast keine Berechtigung Rechte zu bearbeiten ohne die tatsaechlichen Permissions. Jetzt werden alle Permissions read-only (disabled Checkboxen) angezeigt, gruppiert nach Gruppe.

v1.7.9.9.3

16.05.2026
Download
  • Bug-Fix roles.php: DJ ohne view_roles wurde beim Klick auf seinen eigenen Rolle-Tab in roles.php zum Dashboard redirected, weil der interne Tab-Link role=ID nutzt aber mein Check nur role=NAME erlaubte. Jetzt beide akzeptiert (Name und ID), eigene Rolle ist read-only sichtbar.

v1.7.9.9.2

16.05.2026
Download
  • 3 UX-Fixes: (1) Rolle-Anzeige bei eigenem Profil als statisches Label + Hidden-Input (disabled-Dropdown war je nach Theme unsichtbar). (2) Bekannte Standard-Labels gemappt statt ucwords-Ausgabe (dj -> DJ / Moderator statt Dj). (3) Rechte ansehen Link öffnet im gleichen Tab (target=_blank raus).

v1.7.9.9.1

16.05.2026
Download
  • 2 Bug-Fixes: (1) Rechte ansehen Link bei users-edit.php fuehrte für DJs zu Dashboard-Redirect, weil roles.php view_roles-Permission verlangt. Jetzt darf jeder eingeloggte User die EIGENE Rolle in roles.php anschauen (read-only). (2) Rolle-Dropdown in users-edit.php zeigte nichts an. Roles-Query noch defensiver gemacht (catch Throwable + 3 Stufen Fallback + sichere Defaults). Plus alles aus v1.7.9.9.

v1.7.9.9

16.05.2026
Download
  • KRITISCHER Bug-Fix Sidebar: Plugin-Sidebar-Links waren faelschlich im view_settings-Wrapper, daher für DJ-Rolle unsichtbar (DJ hat kein view_settings). Block in admin-header.php rausgezogen. Plus Revert v1.7.9.8: Rechte-ansehen-Link in users-edit.php wieder für alle (DJ darf eigene Rechte ansehen, nur nicht ändern). Plus defensive roles-Query für aeltere Schema-Varianten.

v1.7.9.8

16.05.2026
Download
  • UI-Hotfix: in admin/users-edit.php wird der Link Rechte ansehen jetzt nur für User mit view_roles-Permission angezeigt (vorher für alle, fuehrte für DJs zu 403 beim Klick auf den eigenen Profil-Edit). Plus alles aus v1.7.9.7.

v1.7.9.7

16.05.2026
Download
  • Permission-Migration: delete_news wird allen admin + superadmin Rollen retro zugewiesen, damit der in v1.7.9.6 ergaenzte News-Lösch-Button auch bei Bestands-Admins sichtbar wird. Plus admin/news.php aus v1.7.9.6 cumulativ enthalten.

v1.7.9.6

16.05.2026
Download
  • Bug-Fix: News-Artikel konnten nicht gelöscht werden (Lösch-Funktion fehlte komplett). Trash-Button + Lösch-Handler ergaenzt, mit Bestaetigungs-Dialog und Bild-Cleanup. Plus alle kumulativen Änderungen seit v1.7.5.

v1.7.9.5

15.05.2026
Download
  • Fix PHP-Eval-Toggle im Custom-Widgets-Editor: der Button zum Aktivieren/Deaktivieren der PHP-Ausführung in eigenen Widgets war für ALLE User unsichtbar, auch für Superadmins. Ursache: der Code pruefte mit function_exists("isSuperAdmin"), aber diese Funktion existierte nirgendwo im Code. Resultat: Toggle wurde nie gerendert, nur der Hinweistext "Nur Superadmin kann PHP-Eval umschalten". Fix: Pruefung auf $_SESSION["admin_role"]==="superadmin" umgestellt, wie das auch der bestehende requireSuperAdmin()-Helper in includes/auth.php macht.
  • Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1, v1.7.9.2, v1.7.9.3 und v1.7.9.4.

v1.7.9.4

15.05.2026
Download
  • KRITISCHER Hotfix: das Plugin-Cron-System (radiocms_run_cron_hooks) hat seit Einfuehrung in v1.2.0 nie funktioniert. Ursache: die Funktion benutzte md5(serialize($callback)) als Setting-Key, aber Plugin-Crons sind immer Closures und PHP erlaubt das Serialisieren von Closures nicht. Resultat: bereits beim allerersten Hook im Loop flog eine Exception, der ganze Cron-Loop brach ab, ALLE Plugin-Crons wurden übersprungen.
  • Konsequenz auf jedem Install bisher: Show-Replay-Auto-Aufnahme lief nie, Show-Replay-Cleanup loeschte nie alte Aufnahmen, Charts-Pro-Rollover lief nie, Newsletter-Pro-Schedules liefen nie, Sponsoren-Reminder liefen nie, Stats-Pro-Cleanup lief nie, Werbespot-Tick lief nie etc. Alle Plugin-Crons die als Closure registriert wurden, waren still kaputt.
  • Fix: callback-Hash droppen, plugin_id als Setting-Key nutzen (ist eh schon eindeutig pro Hook). Plus per-Hook try/catch um die DB-Queries, sodass ein einzelner crashendter Hook nicht alle nachfolgenden mit-killt.
  • Voraussetzung damit die Plugin-Crons jetzt wirklich laufen: ein externer Cron muss /cron/plugin-hooks.php regelmaessig aufrufen (z.B. via System-Crontab oder Plesk-Scheduled-Task auf curl -s https://DEINE-DOMAIN/cron/plugin-hooks.php). Vor diesem Hotfix lief das eh nicht, daher hat das vorher niemand gemerkt.
  • Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1, v1.7.9.2 und v1.7.9.3.

v1.7.9.3

15.05.2026
Download
  • Fix Live-DJ-Anzeige auf der Startseite: wenn ein DJ live geht, wird die im Sendeplan eingetragene Sendung in der Hero-Karte jetzt wirklich ausgeblendet. Der 1.7.6-Fix war strukturell richtig, aber jQuery.hide() wurde von der Bootstrap-Klasse d-flex (display:flex !important) ueberstimmt, sodass Live-DJ und Sendung trotzdem gleichzeitig untereinander angezeigt wurden. Neue Helper-Funktion in main.js setzt display:none mit !important via DOM-API, gewinnt damit zuverlaessig gegen jede CSS-Klassen-Regel.
  • Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1 und v1.7.9.2.

v1.7.9.2

15.05.2026
Download
  • Fix Eigene Seiten mit HTML: der Page-Editor in Admin -> Seiten nutzt jetzt eine reine HTML-Textarea (Monospace) mit Vorschau-Button. Vorher hat der WYSIWYG-Editor (Quill) HTML wie <iframe>, <table> oder <div class="..."> als Text escaped statt 1:1 zu speichern, dadurch wurde im Frontend der HTML-Code sichtbar statt gerendert. Bestehende Pages mit escaped HTML werden beim Update einmalig automatisch decodiert.
  • Fix Plugin-Installer (Nachbesserung 1.7.9.1): die Install-URL-Whitelist akzeptiert jetzt den kompletten /radiocms/hub/-Prefix. Die echte Hub-Install-URL für Plugins ist /radiocms/hub/api/license/version.php?slug=..., was die 1.7.9.1-Whitelist nicht erwischt hatte. Slider Free und andere Free-Plugins lassen sich jetzt wirklich installieren.
  • Fix Admin-Navigation (Nachbesserung 1.7.9.1): der Sidebar-Menupunkt "Listener" heißt jetzt wirklich "Registrierungen". Der 1.7.9.1-Fix war an der falschen Stelle (Daten-Array statt Render-Template), das Label kam aus admin/includes/admin-header.php das jetzt direkt korrigiert ist.
  • Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9 und v1.7.9.1.

v1.7.9.1

15.05.2026
Download
  • Fix Plugin-Installer: Plugin-Installation vom Hub funktioniert wieder. Vorher schlug es bei manchen Plugins (z.B. Slider Free) mit "Install-URL kommt nicht vom offiziellen Hub" fehl, weil die URL-Whitelist nur den alten Download-Pfad kannte.
  • Admin-Navigation: Der Sidebar-Menupunkt "Listener" heißt jetzt "Registrierungen", das beschreibt die Seite (Liste der registrierten Listener-Accounts) genauer.
  • Enthält cumulative alle Änderungen aus v1.7.9 (preconnect-Resource-Hints, loading="lazy" auf Below-the-Fold-Bildern, migrate.php-Fix permissions-Schema).

v1.7.9

14.05.2026
Download
  • Performance: Schnellerer Verbindungsaufbau zu externen Diensten (Bootstrap-CDN, Google Fonts) durch preconnect-Hinweise im Seitenkopf. Die Seite faengt früher an zu rendern.
  • Performance: Bilder unterhalb des sichtbaren Bereichs (DJ-Karten, Team-Fotos, Sendeplan-Banner, Podcast-Cover) werden erst beim Scrollen geladen. Schnellerer Erstaufbau, weniger Datenverbrauch.
  • Fix: Das Update-Protokoll zeigt keine "Unknown column"-Meldung mehr beim Anlegen der DJ-Berechtigungen, das Datenbank-Schema wird jetzt korrekt erkannt.
  • Enthält cumulative alle Änderungen aus v1.7.6 und v1.7.8 (Sendeplan-Anzeige robuster, Sonntag-Bug behoben, Live-DJ-Vorrang auf der Startseite, Genre-Feld im Sendeplan, Barrierefreiheit).

v1.7.8

14.05.2026
Download
  • Barrierefreiheit: Sichtbarer Tastatur-Fokus auf allen Links, Buttons und Formularfeldern. Tastatur- und Screenreader-Nutzer sehen jetzt klar, wo sie sich gerade befinden.
  • Barrierefreiheit: Unterstuetzung für die Systemeinstellung "Bewegung reduzieren". Animationen und Bewegungseffekte werden für Nutzer mit dieser Einstellung praktisch abgeschaltet.
  • Barrierefreiheit: Das Newsletter-Eingabefeld im Footer hat jetzt eine korrekte Beschriftung für Screenreader.
  • Enthält cumulative alle Änderungen aus v1.7.6 (Sendeplan-Anzeige robuster, Sonntag-Bug in der Now-Playing-Anzeige, Live-DJ hat Vorrang auf der Startseite, Genre-Feld im Sendeplan).

v1.7.6

14.05.2026
Download
  • Fix: Sendeplan-Anzeige robuster. Eine reaktivierte oder unvollstaendig konfigurierte Sendung verschwand aus dem Sendeplan und der Now-Playing-Anzeige. Jetzt wird nur eine vollstaendige Einmal-Sendung datumsgebunden gefiltert, alles andere zaehlt als wöchentlich.
  • Fix: Now-Playing zeigte Sonntags-Sendungen nicht mehr an. Die Wochentag-Berechnung war verschoben und wurde korrigiert.
  • Fix: Die Startseite zeigte einen Live-DJ und die geplante Sendung gleichzeitig untereinander. Ein Live-DJ hat jetzt Vorrang und blendet die geplante Sendung in der Uebersicht aus.
  • Feature: Genre-Feld pro Sendung im Sendeplan. In der Sendungs-Bearbeitung waehlbar (mit Freitext-Eingabe), Anzeige im Sendeplan-Frontend und in der Sendeplan-Uebersicht im Admin.

v1.7.5.4

13.05.2026
Download
  • v1.7.5.4 Update:
  • Feature: 'Aktuelle Sendungen'-Section unter dem Hero-Bereich mit zwei Karten:
  • Zur Zeit On-Air: DJ-Photo + Moderator + Sendung + Zeit-Range (von-bis)
  • Naechste Live-Sendung: DJ-Photo + Moderator + Sendung + Start-Datum + Zeit-Range
  • Bei kein-DJ-live wird Auto-DJ angezeigt. Abschaltbar in Settings.
  • Feature: Chat-DB-Wartung mit:
  • Hard-Delete-Option (Setting): Nachrichten sofort entfernen statt Soft-Delete
  • Auto-Cleanup-Cron (täglich): Nachrichten aelter als 90 Tage komplett löschen + Soft-Deletes nach 7 Tagen aufraeumen (beides konfigurierbar)
  • Admin-Filter 'Geloeschte ausblenden' in Chat-Admin
  • Wartungs-Section mit DB-Stats (Total/Soft/Alt) + manuelle Cleanup-Buttons
  • Server-Zeit-Anzeige damit Sender Timezone-Probleme sieht
  • Settings (alle in Admin → Settings):
  • hero_show_shows_cards = 1
  • chat_hard_delete = 0 (default Soft-Delete)
  • chat_auto_cleanup_days = 90
  • chat_auto_cleanup_soft_days = 7
  • Files: admin/chat.php, admin/settings.php, cron/chat-cleanup.php, index.php

v1.7.5.3

13.05.2026
Download
  • v1.7.5.3 Hotfix:
  • Fix: Sendeplan-Live-Anzeige + Hero-Banner 'On Air Now' funktionierten falsch bei UTC-Servern (Hetzner-Standard). Sendungen wurden 2 Stunden versetzt als laufend angezeigt obwohl Zeit vorbei. Die 'Aktiv'-Beschriftung im Sendeplan war zudem missverstaendlich ('im Plan aktiviert' vs. 'läuft gerade').
  • Lösung:
  • Default-Zeitzone Europe/Berlin gesetzt (war vorher PHP-Server-Default = UTC)
  • Neues Setting 'Zeitzone' in Admin → Settings → Identitaet (20 vorgewaehlte Zonen)
  • Sendeplan-Admin zeigt jetzt:
  • LIVE-Badge (rot, pulsierend) wenn Sendung gerade läuft
  • 'Im Plan' wenn aktiviert aber läuft nicht jetzt
  • 'Pausiert' wenn deaktiviert
  • Plus Server-Zeit-Indicator oben mit Warnung bei UTC
  • Migration legt cms_timezone-Setting auf 'Europe/Berlin' an (kann im Admin geändert werden).
  • Files: config/config.php, admin/settings.php, admin/schedule.php

v1.7.5.2

13.05.2026
Download
  • v1.7.5.2 Hotfix + Feature :
  • BUG: Chat-System-Messages (DJ-live/DJ-ended) wurden als 'Gast' angezeigt + bei Löschen 'gelöscht von Gast'. Root-Cause: user_id und guest_name beim Insert leer. Fix: guest_name='System' beim Insert + Display-Logik aufgeloest (message_type='system' → 'System', deleted_by → Username).
  • FEATURE: Hero-Banner zeigt jetzt optional 'On Air Now: <Sendung>' und 'Next Show: <Sendung> · Morgen 14:00'. Bei kein-DJ-live mit Auto-DJ-Fallback an: zeigt 'Auto-DJ'-Badge. Konfigurierbar via 3 neue Settings im Admin → Settings → Identitaet (alle Default AN).
  • Settings:
  • hero_show_on_air = 1 (On-Air-Badge)
  • hero_show_next_show = 1 (Next-Show-Badge)
  • hero_autodj_fallback = 1 (Auto-DJ als Fallback)
  • Files: admin/dj-area.php, admin/chat.php, admin/settings.php, index.php

v1.7.5.1

13.05.2026
Download
  • v1.7.5.1 Hotfix :
  • Bug: 'Bei Song-Wuensche kann ich nicht löschen, obwohl Status setzen geht.'
  • Root-Cause: data-confirm Modal-Handler in admin-footer.php nutzte form.submit() programmatisch, dabei ging der Button-name+value verloren. Backend bekam kein $_POST['action'] und Delete-Action wurde nie getriggert. Betraf ALLE data-confirm Forms im CMS die <button name="action" value="..."> nutzen.
  • Fix (zweistufig):
  • 1. admin/includes/admin-footer.php: generischer JS-Fix - merkt sich den geklickten Submit-Button und hängt name+value als hidden-Input ans Form vor form.submit(). Funktioniert jetzt für ALLE data-confirm-Forms im ganzen CMS.
  • 2. admin/requests.php: Doppel-Sicherheit, action='delete' als hidden-Input statt button-value.
  • Keine Schema-Änderungen, kein Migration-Aufwand. Reiner File-Update-Hotfix.

v1.7.5

12.05.2026
Download
  • Cumulative-Hotfix von 9 Bugs aus Tester-Reports ():
  • Cookie-Banner: externe Inhalte (YouTube/Spotify/Maps/Vimeo/Soundcloud/Twitter/Facebook) werden jetzt ServerSeitig vor-blockiert. iframe-src wird durch data-src ersetzt damit der Browser die Embeds nicht auto-laedt bevor der User Consent gegeben hat. DSGVO-konform.
  • DJ-Recht eigene Sendung bearbeiten: neue Permission edit_own_schedule (Default-Zuweisung an DJ-Rolle). DJ kann jetzt Uhrzeit, Beschreibung, Banner seiner eigenen Sendung ändern. Den DJ-Eintrag selbst aendert nur Admin.
  • DJ-Recht Titel-Updater: neue Permission update_now_playing. DJ kann den manuellen Jetzt-läuft-Titel setzen wenn Admin den globalen Switch aktiviert hat. Granular zuweisbar pro DJ.
  • Wunschbox pro Sendung waehlbar: schedule.wishes_enabled Spalte. Pro Sendung im Sendeplan kann Wunschbox an/aus geschaltet werden.
  • Song-Wuensche löschen: DJ und Admin können Wuensche im /admin/requests.php jetzt einzeln und in Bulk löschen. Plus 'Alle Gespielten löschen' Button.
  • Benachrichtigungen 'Alle löschen': löscht jetzt wirklich. Auto-Mark-Read beim Seitenaufruf entfernt (war verwirrend).
  • Sendungs-Edit: pro Sendung Wunschbox an/aus Checkbox im Edit-Formular.
  • Hinweis: Charts-Pro v1.0.5 Hotfix separat im Marketplace (Vorhoeren-Bug + Multi-Pause-Icon-Bug).
  • Plus: Newsletter-Bot-Schutz
  • Honeypot-Feld (unsichtbares website Input, Bots füllen es aus, Menschen nicht)
  • Time-Trap (Form muss min 3 Sek seit Render alt sein, Bots submitten in <1s)
  • Rate-Limit per IP (Default 5 Anmeldungen/Stunde, file-basiert, kein DB-Aufwand)
  • MX-Record-Check (verhindert Bounces an tote Domains)
  • 2 neue Settings: newsletter_mx_check_enabled, newsletter_rate_limit_per_hour
  • Plus: Newsletter-Bot-Schutz (, Bounce-Mails durch Form-Spam-Bots)
  • Honeypot-Feld (unsichtbares 'website' Input, Bots füllen es aus, Menschen nicht)
  • Time-Trap (Form muss min 3 Sek seit Render alt sein, Bots submitten in <1s)
  • Rate-Limit per IP (Default 5 Anmeldungen/Stunde, file-basiert, kein DB-Aufwand)
  • MX-Record-Check (verhindert Bounces an tote Domains)
  • 2 neue Settings: newsletter_mx_check_enabled, newsletter_rate_limit_per_hour

v2.0.0

12.05.2026
Download
  • Major Release: Theme-System ausgebaut.
  • 3 zusaetzliche Core-Themes mitgeliefert: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
  • Plugin-Hook radiocms_register_theme() für Marketplace-Theme-Plugins (Basis für Theme-Marketplace v2.2).
  • radiocms_get_theme_css_url() Helper mit Override-Support.
  • Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro, Mobile-App-Builder, Page-Builder v2 etc.) sind separate Plugin-Downloads im Marketplace und nicht Teil dieses Core-Updates.
  • CSRF-Schutz flaechendeckend in allen Admin-POST-Forms ergaenzt, plus plugin-spezifische Audit-Findings gefixed (siehe MEMORY feature_bug_audit_fixes.md).
  • Plus: Theme-Loader prüft jetzt Marketplace-Themes-Registry (Audit-Fix).

v1.7.4.7

12.05.2026
Download
  • v1.7.4.7 (2026-05-12) – Feature-Hotfix
  • Cookie-Floating-Icon konfigurierbar (-Wunsch):
  • Eigenes Bild ODER Emoji ('🍪' Default)
  • Position: bottom-left / bottom-right / top-left / top-right
  • Pixel-Abstand zum Rand (Default 16, hoeher setzen wenn Footer-Player das Icon verdeckt)
  • Behebt 'Cookie-Icon verdeckt Play-Button im Footer-Player'.

v1.7.4.6

12.05.2026
Download
  • v1.7.4.6 (2026-05-12) – UX-Hotfix
  • Cookie-Settings: 'Plugin-Hook'-Info-Box war für Sender-Betreiber verwirrend. Jetzt verstaendlicher Text oben + technische window.RadioCMSConsent-Details in aufklappbarem 'Für Plugin-Entwickler'-Bereich versteckt. (-Frage 2026-05-12)

v1.7.4.5

12.05.2026
Download
  • v1.7.4.5 (2026-05-12) – Cumulative-Backfill
  • 7 Files die in v1.6.7 ausgeliefert aber im v1.7.1-Cumulative vergessen wurden:
  • admin/cookie-settings.php ('File not found' beim Cookie-Banner-Link)
  • admin/djs-edit.php
  • admin/modules.php
  • admin/sections.php
  • includes/cookie_consent.php
  • includes/header.php
  • includes/page_renderer.php
  • Wer von einer Version vor v1.6.7 direkt auf v1.7.x gesprungen ist, hatte diese Files nicht. Jetzt endlich kumulativ enthalten.

v1.7.4.4

12.05.2026
Download
  • v1.7.4.4 (2026-05-12) – Hotfix
  • Hoerer-Chart im Admin-Dashboard wurde nicht angezeigt (leere Box). Inline-Script rief 'new Chart(...)' auf bevor Chart.js (im Footer) geladen war → JS-Error. Jetzt wartet das Script via window.load bis Chart.js verfügbar ist. (2026-05-12)

v1.7.4.3

12.05.2026
Download
  • v1.7.4.3 (2026-05-12) – Cumulative Hotfix
  • Custom-Widget Title-Header (PhpFusion-Box-Style): neue Spalten show_title + header_style. Checkbox 'Name als Ueberschrift anzeigen' im Editor. Header-Styles: Box (Header-Leiste + Body), Simple (h3), None.
  • 9 zusaetzliche Datums-Shortcodes: {date_long} (Montag, 12. Mai 2026), {date_medium}, {time_full} (21:35 Uhr), {datetime}, {datetime_long}, {month_name}, {hour}, {minute}, {weekday_short}.
  • test-widgets Plugin v1.0.1: 'Aktuelle Uhrzeit'-Widget zeigt jetzt deutsches Datum statt Monday/May. 'Folge uns!' Tippfehler im Social-Widget gefixt.

v1.7.4.2

12.05.2026
Download
  • v1.7.4.2 (2026-05-12) – Cumulative Hotfix
  • Custom-Widgets-Editor: Quill (Rich-Text) raus, Monospace-Textarea rein. HTML wie <iframe>, <script>, <div> wird endlich 1:1 gespeichert und gerendert. Vorher escaped Quill jeden HTML-Tag zu Text.
  • Snippet-Vorlagen im Editor: YouTube, Iframe, Sponsor-Banner, Google-Maps, Now-Playing-Box, PHP-Snippet.
  • 19 Shortcodes: {site_title}, {now_playing}, {now_playing_artist}, {now_playing_track}, {listeners}, {current_show}, {current_dj}, {current_dj_avatar}, {next_show}, {next_show_at}, {date}, {time}, {year}, {day}, {weekday}, {listener_login_url}, {listener_register_url}, {stream_url}, {site_email} – werden vor dem Render durch dynamische Werte ersetzt.
  • PHP-Eval-Toggle (Setting custom_widgets_php_eval, Default AUS). Nur Superadmin kann ihn aktivieren. Wenn AN: <?php ... ?> in Custom-Widgets wird serverseitig ausgeführt.
  • Auto-Migration: bestehende Custom-Widgets mit Quill-escaped HTML werden einmalig unescaped (Smart-Check: nur wenn eindeutige HTML-Tags wie &lt;iframe, &lt;div etc. erkannt werden).
  • Behebt 'iframe wird als Code angezeigt statt gerendert'.

v1.7.4.1

12.05.2026
Download
  • v1.7.4.1 (2026-05-12) – Hotfix
  • Custom-Widgets wurden nicht im Frontend gerendert. Toast zeigte 'Gespeichert' beim Drag-Drop, DB-Save klappte auch, aber der Frontend-Renderer (includes/plugins.php radiocms_render_widget_position) ueberging Custom-Widgets weil sie nicht in der Plugin-Widget-Registry stehen.
  • Fix: Renderer erkennt jetzt 'custom-{id}'-Pattern und rendert via radiocms_custom_widget_html() aus der custom_widgets-Tabelle. (2026-05-12)

v1.7.4

12.05.2026
Download
  • v1.7.4 (2026-05-12) – Hotfix
  • Custom-Widgets sind jetzt multi-place: können mehrfach platziert werden (z.B. Sponsor-Box oben UND unten). Vorher waren sie nach erstem Platzieren 'dunkel hinterlegt' und nicht mehr dragbar.
  • Plugin-registrierte Widgets bleiben weiterhin single-use (Now-Playing-Widget will man ja nur einmal).
  • Visuelle Trennung: Custom-Widgets haben cyan Akzent + Badge 'in Verwendung' statt komplett ausgegraut. (2026-05-12)

v1.7.3

12.05.2026
Download
  • v1.7.3 (2026-05-12) – Hotfix
  • Custom-Widgets waren nicht im Widget-Editor sichtbar. Jetzt erscheinen sie in der "Verfuegbare Widgets"-Liste (Category: Custom) und können wie alle anderen Plugin-Widgets in Positionen gedragged werden. (2026-05-12)

v1.7.2

12.05.2026
Download
  • v1.7.2 (2026-05-12) – Hotfix
  • Custom-Widgets Speichern-Button war bei langem HTML-Inhalt nicht erreichbar (Quill-Editor expandierte sich endlos). Jetzt max-height 400px + interner Scroll. Plus zusaetzlicher Speichern-Button OBEN am Form + sticky Speichern-Button UNTEN, immer erreichbar. (2026-05-12)

v1.7.1

11.05.2026
Download
  • Cumulative-Hotfix v1.7.1 - -Sweep
  • WICHTIG: Dieses Update enthält ALLE Files seit v1.6.0, damit User die Versionen
  • übersprungen haben (z.B. direkt von 1.6.5 auf 1.7.0) keine fehlenden Files mehr haben.
  • BUG-FIXES:
  • Custom-Widgets-Seite: File not found behoben
  • Listeners-Seite: File not found behoben
  • Demo-Import-Seite: File not found behoben
  • Listener-Frontend-Pages (login register profile verify forgot-password reset-password logout): nachgeliefert
  • Listener-Helper includes/listener_auth.php: nachgeliefert
  • Lizenz-Aktivierung Race-Condition: Token wird direkt von activate zu install durchgereicht
  • (vorher: Bei sofortigem Re-Read aus settings-Tabelle kam manchmal noch ein leerer Wert
  • was zu Fehlermeldung Kein activation_token in den Settings fuehrte)
  • PLUS ALLE v1.7.0 FEATURES:
  • Admin-Navigation-Manager Drag-Drop-Bugfix
  • Bundles als eigene Sektion im Marketplace
  • Plugin-Löschen-Funktion mit Daten-Behalten-Option
  • Newsletter-Edit-Bug behoben
  • Pages mit in_footer=1 erscheinen im Footer
  • Schema-Migration (idempotent) sorgt für fehlende Tabellen:
  • custom_widgets, listeners, listener_sessions, page_layouts, admin_nav_items

v1.7.0

11.05.2026
Download
  • Core-Release v1.7.0 - Plugin-Manager-UX + neue Hobby-Plugins
  • CORE-VERBESSERUNGEN:
  • Admin-Navigation-Manager: Drag-Drop in Gruppen funktioniert jetzt korrekt mit visuellen Containern
  • Listener Custom-Widgets und Demo-Import sind jetzt im Manager verschiebbar
  • Marketplace: Bundles in eigener Sektion oben goldener Akzent statt zwischen Plugins versteckt
  • Plugin-Manager: NEUE Lösch-Funktion pro Plugin (Mehr-Optionen-Menue)
  • Option Daten behalten (empfohlen) - Plugin weg, Tabellen bleiben für Re-Install
  • Option Daten löschen - alles weg
  • Lizenz bleibt am Hub erhalten und wiederverwendbar
  • BUG-FIXES:
  • Newsletter-Kampagne editieren ging nicht (Form-id verloren Quill leer)
  • Seiten mit in_footer=1 wurden im Footer nicht angezeigt (Render-Logik fehlte)
  • Plugin-Sidebar-Links unter eigenen Gruppen wurden nicht korrekt gerouted
  • NEU IM MARKETPLACE (separat installierbar):
  • Slider Free (gratis) - Image-Slider bis 5 Bilder
  • Slider Pro (39 EUR) - Unbegrenzte Slides 4 Transitions Lightbox Video
  • Donation Pro (49 EUR) - Spenden mit Stripe-Checkout
  • Show-Replay (79 EUR) - Catch-up-Radio mit ffmpeg-Recording
  • Bundle Hobby-Pack (149 EUR) - Charts + Donation + Show-Replay spare 28 EUR
  • Charts Pro Update v1.0.2 - Daily-Refresh-Toggle + Charts-als-Newsletter-Button

v1.6.9.4

11.05.2026
Download
  • Bug-Fix: Newsletter-Kampagne editieren ging nicht (-Report)
  • Form hat jetzt expliziten action-Pfad und id als hidden field
  • Quill-Editor laedt vorhandenen Body sauber via dangerouslyPasteHTML
  • Bereits versendete Kampagnen werden geschuetzt
  • Bug-Fix: Seiten mit in_footer=1 werden jetzt im Footer angezeigt (-Report)
  • Vorher gabs den Toggle im Admin aber die Render-Logik fehlte
  • Impressum und Datenschutz bleiben hardcoded, eigene Pages kommen davor

v1.6.9.3

11.05.2026
Download
  • Cumulative Hotfix: djs-edit.php mit GIF-Fix wird jetzt im Update ausgeliefert (war vorher nur in v1.6.7 ZIP, )
  • Migrations idempotent für alle Schemata seit v1.6.0 (page_layouts, custom_widgets, listeners, listener_sessions, admin_nav_items-Spalten, chat_online-Spalten, cookie_banner defaults, listener-settings defaults)
  • Wer von einer alten Version direkt auf v1.6.9.3 springt, kriegt alle Tabellen + Spalten automatisch nachgezogen
  • Plus alle Files aus v1.6.7-v1.6.9.2 nochmal mitgeliefert (Listener-Pages, Mail-Fixes, SMTP-Test-Button)

v1.6.9.2

10.05.2026
Download
  • Critical Hotfix: 500-Error auf /login.php /register.php /profile.php behoben
  • Bug: die 7 neuen Listener-Pages (login, register, profile, verify, forgot-password, reset-password, logout) hatten den /includes/lang.php Include vergessen
  • Fatal: Call to undefined function t() in header.php beim Aufruf jeder Listener-Page
  • Fix: lang.php Include in allen 7 Listener-Pages nachgezogen

v1.6.9.1

10.05.2026
Download
  • Hotfix Hotfix Hotfix
  • BASE_PATH-Warning beseitigt: define()-Aufrufe in config.php werden bei Updates automatisch mit if(!defined()) geguarded, Warning beim doppelten Include verschwindet
  • SMTP-Test-Button zeigt jetzt konkrete Fehlermeldungen (Connection-Fehler, Auth-falsch, MAIL FROM abgewiesen, etc.) statt dem generischen 3-Punkte-Fallback
  • lastSmtpError() Helper-Funktion für Plugins die eigene Mail-Tests bauen wollen
  • Plus: Plesk-Hinweis bei AUTH-Fehler mit Gmail-Tipp (App-Password)

v1.6.9

10.05.2026
Download
  • Mini-Bump für Migration-Re-Run
  • Wer v1.6.8 vor dem Chat-Online-Fix installiert hat, kriegt jetzt automatisch die chat_online Schema-Migration
  • Online-Liste im Chat zeigt jetzt eingeloggte User und Gaeste korrekt an
  • Keine Code-Änderungen gegenueber v1.6.8, nur Version-Bump damit Updater Migration nochmal ausfuehrt

v1.6.8

10.05.2026
Download
  • Mail-Versand-Hotfix (Newsletter-Bestaetigungs-Mail kam nicht raus)
  • Auto-Domain-Detect: ohne SMTP-Config wird die Absender-Adresse automatisch auf 'noreply@deine-domain.de' gesetzt (Plesk akzeptiert das)
  • HTML-Mail-Support: Mails kommen jetzt als multipart/alternative (text + html) an, nicht mehr als roher HTML-Code
  • PHP mail()-Fallback robuster: Return-Path Header + -f Sender-Param für Plesk/Postfix
  • Neuer SMTP-Test-Button in Admin-Settings: schickt Test-Mail an deine Admin-Email, zeigt genaue Fehlermeldung wenn was klemmt
  • Plesk-Setup-Tipps in den SMTP-Settings als ausklappbare Hilfe
  • Chat-Bug-Fix: fehlende Spalten in chat_online nachgezogen (status, user_color, bubble_color), Online-Liste war leer wenn diese Spalten fehlten

v1.6.7

10.05.2026
Download
  • Plugin-Manager-Redesign (Karten-Grid, Kategorie-Pills, View-Toggle Karten/Liste)
  • Cookie-Banner-DSGVO-Trigger (Floating-Button unten links damit User Einstellungen jederzeit ändern können)
  • Custom-Widgets-Manager mit Quill-Editor (eigene HTML-Widgets für Section-Manager und Page-Builder)
  • Listener-Account-System: Register, Login, Profile, Verify, Forgot-Password (Vorbereitung für v2.0 Chat)
  • Admin-Settings für Listener-Registrierung mit Captcha (Honeypot, Math, hCaptcha, Turnstile, reCAPTCHA)
  • Email-Verifikation und optionale Admin-Freigabe für neue Listener-Accounts
  • Admin-Sidebar alphabetisch innerhalb der Sektionen sortiert
  • Aktuelle-Startseite-übernehmen Button in Section-Manager und Page-Builder Pro
  • DJ-Edit Bug-Fix: kein Phantom-Streampasswort-Generiert mehr beim normalen Speichern
  • DJ-Edit Bug-Fix: GIF-Upload klappt jetzt (robustere MIME-Detection plus 10 MB Limit für animierte GIFs)
  • page_layouts Log-Spam beseitigt (Static-Cache wenn Tabelle fehlt)
  • Cookie-Banner-Files mitgeliefert (File-not-found)
  • Dev-Doku-Link auf Hub-Page umgebogen (war /dev/ 404)

v1.6.6

10.05.2026
Download
  • UX-Hotfix: Master-Update-Button Alles auf einmal (Core + alle Plugins). Plugin-Update-Liste nur mit Updates plus Toggle. Admin-Navigation-Manager mit Dropdown-Gruppen für uebersichtliche Sidebar.

v1.6.5

10.05.2026
Download
  • UX-Fix: Marketplace- und Plugin-Liste haben jetzt klar lesbare Aktion-Buttons mit Text plus Farbe statt nur Icons. Anleitung-Button cyan, Demo-Button gruen, Lizenz-Status sichtbar als Badge.

v1.6.4

10.05.2026
Download
  • Feature: Bestaetigungs-Seite nach Stripe-Kauf mit Hinweis dass der Lizenz-Key per E-Mail kommt (auch in Spam prüfen) plus Button zur Lizenz-Aktivierung im CMS. Plus Marketplace holt Stripe-Publishable-Key dynamisch vom Hub statt hardcoded zu sein, damit Live- und Test-Mode automatisch korrekt funktionieren.

v1.6.3

10.05.2026
Download
  • Bug-Fix: Nach Stripe-Checkout wurde Browser auf kaputte URL umgeleitet (DNS-Fehler). return_url hatte doppelt https:// drin. Fix: nur BASE_URL verwenden. Plus: Webhook akzeptiert jetzt sowohl product_slug als auch radiocms_slug für Compat zwischen DGN-Chat und RadioCMS-Marketplace.

v1.6.2

10.05.2026
Download
  • Feature: Premium-Plugins direkt im Marketplace per Stripe Embedded Checkout kaufbar. Klick auf Kaufen-Button öffnet Modal mit eingebettetem Stripe-Checkout, kein Wechsel auf externe Seite. Test-Mode aktiv, Test-Karte 4242 4242 4242 4242. Webhook-Setup folgt als naechster Schritt.

v1.6.1

10.05.2026
Download
  • Bug-Fix: Plugin-Updates konnten nicht installiert werden, Fehler "Plugin-Slug, Version oder URL fehlt" trotz angezeigtem Update-Button. Ursache war ein Feldnamens-Mismatch in includes/updater.php zwischen mp_client_check_update und updater_check_plugin_updates. Plus die Fehlermeldung zeigt jetzt konkret welches Feld fehlt. Migration löscht stale Plugin-Update-Caches damit beim nächsten Update-Seiten-Aufruf frisch vom Hub geholt wird.

v1.6.0

10.05.2026
Download
  • Feature: Plugin-Manager und Marketplace komplett neu gestaltet (Filter-Pills, Kategorien, Live-Suche, kompakte Listen-Ansicht). Newsletter Pro integriert die Core-Newsletter-Seite jetzt als Sub-Tab statt eigenem Sidebar-Link. Admin-Sidebar im Navigation-Manager unter dem neuen 3. Tab Admin-Sidebar sortier- und sichtbarkeits-konfigurierbar.

v1.5.7

09.05.2026
Download
  • Feature: Massen-Plugin-Updates. Auf der System-Update-Seite gibt es jetzt einen "Alle X updaten"-Button der alle verfuegbaren Plugin-Updates in einem Rutsch installiert (Backup pro Plugin). Plus auf der Plugin-Manager-Seite oben einen Banner der zeigt wenn Plugin-Updates verfügbar sind. "Updates suchen" invalidiert jetzt auch die Plugin-Update-Caches.

v1.5.6

09.05.2026
Download
  • Bug-Fix: Premium-Plugins (z.B. Newsletter Pro, Stats Pro) konnten nach Lizenz-Aktivierung nicht automatisch heruntergeladen werden. Fehler "Kein activation_token in den Settings" trotz erfolgreicher Aktivierung. Ursache war ein Settings-Cache der den frisch gespeicherten Token erst beim nächsten Page-Load gesehen hat. Plugin-Settings werden jetzt direkt aus der DB gelesen, Cache umgangen.

v1.5.5

09.05.2026
Download
  • Feature: Zwei neue Premium-Plugins im Marketplace. Newsletter Pro (79 EUR Lifetime) mit Drip-Sequenzen, A/B-Testing für Subject-Lines, Schedule-Sends, Subscriber-Segmenten und Open/Click-Tracking. Stats Pro (49 EUR Lifetime) mit Geo-Charts, Genre-Trends, Device-Analyse, Zeit-Heatmap, Monatsvergleich und CSV-Export. Beide Plugins über den Marketplace installierbar mit Lizenzschluessel.

v1.5.4

09.05.2026
Download
  • Feature: Drei neue Sendungs-Widgets für Section-Manager und Page-Builder. „Aktuelle Sendung" mit Banner und Live-Indicator, „Naechste Live-Sendung" mit Datum und Cover, „Aktuelle plus Naechste" als 2-Spalten-Kombi (perfekt für Startseite). Alle ziehen automatisch aus dem Sendeplan

v1.5.3

09.05.2026
Download
  • Bug-Fix: Auto-Update-Toggle übernimmt jetzt sofort mit einem Klick (vorher musste 2x geklickt werden)
  • Bug-Fix: System-Update-Anzeige nach erfolgreichem Update sofort aktuell, das gerade installierte Update wird nicht mehr als „verfügbar" angezeigt

v1.5.2

09.05.2026
Download
  • Verbesserung: Auto-Update-Toggle auf der Plugin-Lizenz-Seite jetzt zuverlaessig sichtbar, sobald eine Lizenz mal aktiviert wurde
  • Kosmetisches Update: interne Code-Bereinigung in mehreren Admin-Dateien, keine funktionalen Änderungen

v1.5.1

09.05.2026
Download
  • Bug-Fix: Variable-Kollision $manifest zwischen plugin-license.php und admin-header.php. Auf der Plugin-Lizenz-Seite wurde der Plugin-Name nicht angezeigt („, Lizenz" statt „Page-Builder Pro, Lizenz"), Anleitung-Banner zeigte „Anleitung zu " ohne Name, Versionsnummer war „v0.0.0". admin-header.php nutzt jetzt eine eigene Variable $cmsUpdateManifest
  • Bug-Fix: Auto-Update-Toggle wirkte deshalb auch unsichtbar, ist aber tatsächlich da, sobald die License-Page korrekt rendert (sichtbar bei aktiver Lizenz im Aktionen-Block)
  • Technisch: cms_db_version auf 1.5.1

v1.5.0

09.05.2026
Download
  • Feature: Auto-Update Toggle für Premium-Plugins. Pro Plugin auf der Lizenz-Seite einschaltbar, neue Versionen werden täglich vom Hub geholt und automatisch installiert (license-verify-Cron). Defensive: pro Plugin try/catch, nur installierte Plugins, error-resilient
  • Feature: Backup-Uebersicht im Admin. Neuer Sidebar-Link „Backups" (nur Superadmin) zeigt alle Backups mit Datum, Größe, Anzahl Dateien, Typ. Download als ZIP, Löschen mit Bestätigung
  • Feature: Update-Health-Check. Nach jedem Update laufen Smoke-Tests (Kern-Files, PHP-Syntax, DB, Plugins-Verzeichnis, role_permissions). Bei Fehler erscheint ein Hinweis in der Step-Liste plus Rollback-Empfehlung. Schlaegt nicht falsch-positiv an wenn exec auf Shared-Hosting disabled ist
  • Feature: Cookie-Banner Auto-Block für externe Embeds. YouTube, Spotify, Soundcloud, Vimeo, Google Maps, Twitter/X, Facebook werden automatisch durch einen Klick-Wrapper ersetzt bis der User die Marketing-Kategorie akzeptiert. Sicher: nur https-URLs, sandbox-Attribute, MutationObserver für dynamisch eingefuegte iframes
  • Feature: Podcast-Modul Major-Erweiterung. RSS-Feed unter /podcasts-rss.php Apple-Podcasts und Spotify konform mit iTunes-Tags und Kategorie-Filter, Show-Notes per Quill-Editor, Kategorien-Verwaltung, Staffel/Episode-Nummerierung, Slug pro Episode, Detail-Page mit Player+Share, Embed-Code für externe Webseiten, Episode-Statistik mit Play-Tracking
  • Feature: Podcast-Frontend mit Kategorien-Filter, RSS-Link prominent, Episode-Detail-Page (Hero+Player+Show-Notes+Share), Embed-iframe-Modus per ?embed=1
  • Technisch: cms_db_version auf 1.5.0, permissions_revision incrementiert. Neue Tabellen podcast_categories und podcast_plays. podcasts-Tabelle erweitert um slug, category_id, season_number, episode_number, show_notes, play_count, published_at

v1.4.0

09.05.2026
Download
  • Feature: Cookie-Consent-Banner DSGVO-konform. Drei Buttons (Alle akzeptieren / Nur notwendige / Einstellungen), Modal mit Kategorien (Notwendig/Statistik/Marketing), Cookie-Liste pflegbar im Admin. Default AUS, manuell aktivieren in Admin -> Cookie-Banner. JS-API window.RadioCMSConsent.has('category') für Tracking-Plugins
  • Feature: Marketplace-Tab zeigt jetzt 📖-Icon (Anleitung) und ▶-Icon (Live-Demo) pro Plugin. Featured-Plugins kommen oben mit „Featured"-Badge
  • Feature: Plugin-Bundle „Charts + Page-Builder Bundle" 119 EUR (statt 138 EUR Einzelkauf). Im Marketplace-Tab als eigene lila Bundle-Karte mit „spare 19 EUR"-Hinweis
  • Feature: 6 Plugin-Anleitungen live unter https://dgnshop.com/radiocms/hub/docs/<slug>/. Premium: page-builder-pro, charts-pro. Free: section-manager, navigation-manager, voting, newsletter. Auf der License-Page kommt nach Aktivierung ein „Anleitung lesen"-Banner
  • Feature: Re-Verify-Cron cron/license-verify.php. Checkt einmal pro Tag (Throttle 20h) für jedes Premium-Plugin, ob die Lizenz beim Hub noch aktiv ist. Revoken faengt das ab
  • Feature: Chat-Default in Header-Navigation. Wenn Items existieren aber Chat fehlt, wird Chat-Item automatisch ergaenzt (sort_order 99). Kein „Chat-Link weg"-Problem mehr nach v1.3.0-Updates
  • Technisch: Pre-Deploy-Check-Skript _build/check-zip.py prüft Update-ZIPs vor Hub-Upload auf Forward-Slashes (Backslash-Bug-Vorbeugung), files/-Verzeichnis, migrate.php
  • Technisch: Hub-DB-Schema erweitert (marketplace_products.docs_url/demo_url/featured plus marketplace_bundles + bundle_products Tabellen). cms_db_version auf 1.4.0, permissions_revision incrementiert

v1.3.7

09.05.2026
Download
  • Bug-Fix: Chat-Senden warf db_error bei manchen Installs. Spalten user_color/bubble_color/font_size waren im Code, fehlten aber in der chat_messages-Tabelle (keine Migration vorher). v1.3.7 ergaenzt sie idempotent
  • Bug-Fix: send.php loggt jetzt die echte DB-Fehlermeldung ins error_log, damit kuenftige Schema-Probleme schneller diagnostizierbar sind
  • Hinweis: Chat-Link in der Hauptnavigation kann unter Admin -> Navigation -> Header-Tab manuell hinzugefügt werden (Typ Core, Target Chat). Nach v1.3.0 mit Navigation-Manager ist der Chat-Link nicht mehr hardcoded sondern frei platzierbar

v1.3.6

09.05.2026
Download
  • Bug-Fix: Sammel-Patch für v1.3.0-Files. Das urspruengliche v1.3.0-ZIP hatte Backslashes (PowerShell Compress-Archive) statt Forward-Slashes, dadurch wurden bei einigen Installs Dateien wie admin/navigation.php nicht extrahiert (Sidebar-Link „Navigation" fuehrte zu 404). v1.3.6 bringt alle 23 v1.3.0-Files mit Forward-Slash-ZIP plus alle Hotfix-Verbesserungen aus v1.3.1-v1.3.5
  • Bug-Fix: admin/navigation.php, includes/navigation.php, cron/schedule-cleanup.php und weitere v1.3.0-Files werden jetzt zuverlaessig installiert
  • Feature: Idempotente Migration läuft alle DB-Schritte aus v1.3.0 plus v1.3.5 nochmal durch (CREATE TABLE IF NOT EXISTS, INSERT IGNORE), heilt halb-installierte Updates
  • Technisch: cms_db_version auf 1.3.6, permissions_revision incrementiert

v1.3.5

09.05.2026
Download
  • Bug-Fix: Sidebar-Link „Navigation" fehlte bei einigen Installs (Permission `manage_navigation` war zwar in DB, aber nicht in role_permissions zugewiesen). Migration heilt das jetzt idempotent für alle Permissions an admin und superadmin
  • Bug-Fix: Pages-Modal (Impressum/Datenschutz/Custom-Pages) scrollt wieder zuverlaessig auf 1920x1080. Bootstrap modal-dialog-scrollable durch custom Flexbox-Layout mit !important ersetzt
  • Feature: Superadmin-Catch-All in can(). Superadmin darf immer alles, unabhaengig von role_permissions, damit kuenftige Permission-Migrations keine Sperren mehr erzeugen können
  • Technisch: permissions_revision incrementiert (alle aktiven Sessions reloaden Permissions). cms_db_version auf 1.3.5

v1.3.4

09.05.2026
Download
  • Bug-Fix: Auto-Install für Premium-Plugins ist jetzt zuverlaessig. Verbose Status-Meldungen pro Schritt (Token-Check, Hub-URL, ZIP-Download, Permissions, Extraction). Wenn auto fail, kommt ein Direkt-Link zum manuellen ZIP-Download
  • Feature: GET Auto-Install. Wenn die Lizenz schon mal aktiviert wurde aber das Plugin lokal fehlt, wird beim Aufruf von plugin-license.php das ZIP automatisch nachgeladen, ohne dass der User erneut auf „Aktivieren" klicken muss
  • Feature: install_only Action für Plugin-Re-Install ohne Lizenz-Aktivierung
  • Bug-Fix: Bei war die Lizenz aktiviert, Plugin aber nicht installiert. Jetzt heilt sich das nach v1.3.4 von selbst beim nächsten Aufruf der License-Page

v1.3.3

09.05.2026
Download
  • Bug-Fix: plugin-license.php Defensive-Fallback. Wenn der Hub mal nicht antwortet oder ein neuer Plugin-Slug noch nicht im Browse-Index ist, wird ein minimales Pseudo-Manifest aus dem Slug gebaut. Lizenz-Eintragen funktioniert immer
  • Bug-Fix (Hub-Side, separater Upload): browse.php sucht jetzt auch im slug-Feld der marketplace_products. „page-builder-pro" wird jetzt auch über den exakten Slug gefunden, nicht nur über Namens-Match
  • Technisch: cms_db_version auf 1.3.3, permissions_revision incrementiert

v1.3.2

09.05.2026
Download
  • Bug-Fix: Marketplace-Tab zeigte „Lizenz eintragen" auch für Plugins mit aktiver Lizenz (Charts-Pro), pruefte den lokalen Status nicht. Jetzt 4 klare Buttons: „Lizenz aktiv" (gruen), „Lizenz eintragen" (gelb), „Plugin laden + Lizenz" (lila, für noch nicht installierte Plugins), „Installieren" (blau, für Free)
  • Bug-Fix: Klick auf „Lizenz eintragen" tat nichts wenn das Plugin lokal nicht installiert war (plugin-license.php machte stillen Hard-Redirect). Jetzt Soft-Mode: Pseudo-Manifest vom Hub holen, Lizenz-Eingabe erlauben
  • Feature: Auto-Download nach Lizenz-Aktivierung. Wenn das Plugin noch nicht lokal liegt, zieht das CMS das ZIP per activation_token vom Hub und entpackt es nach /plugins/<slug>/. Ein Klick statt manuellem ZIP-Upload
  • Technisch: cms_db_version auf 1.3.2, permissions_revision incrementiert, demo_mode_enabled idempotent abgesichert

v1.3.1

09.05.2026
Download
  • Bug-Fix: Demo-Inhalte-Link wieder versteckt (Migration setzt demo_mode_enabled hart auf 0, war auf einigen Tester-Installs faelschlich aktiv)
  • Feature: Marketplace-Tab im Plugin-Manager (vorher „Community-Browser"), zeigt jetzt auch Premium-Plugins (Page-Builder-Pro, Charts-Pro) mit PRO-Badge und Preis
  • Feature: Premium-Plugins haben „Lizenz eintragen"-Button statt „Installieren", führt direkt zur Lizenz-Seite
  • Technisch: Hub /api/browse.php gibt jetzt Premium-Plugins aus marketplace_products mit aus (is_premium, requires_license, price_eur Flags)
  • Technisch: permissions_revision incrementiert (alle Sessions reloaden Permissions)

v1.2.1

09.05.2026
Download
  • Hotfix-Bundle aus Tester-Feedback-Runde 3.\nProfil-Edit auch ohne edit_users-Permission (eigenes Profil), Sidebar-Avatar verlinkt zum eigenen Profil.\nBenutzer-Löschen-Action im Admin (Self-Schutz + Letzter-Superadmin-Schutz).\nverifyCsrf akzeptiert GET-Token, Empty-Token-Bypass blockiert.\nSocial-Media-Links (Facebook, Instagram, Twitter, YouTube, TikTok, Discord) im Frontend-Footer gerendert.\nHoererchart-Query gefixt (ONLY_FULL_GROUP_BY-Inkonsistenz).\nPages-Edit-Modal mit Flexbox-Layout: Speichern-Button immer klickbar, Body scrollt automatisch.\nSendungen können gelöscht werden (delete_schedule Permission).\nNeue Wiederholungs-Option Einmalig (Spontan-Sendung, recurrence_weeks=0).\nStream-Server-Title-Reset bei Sendungsende (kein DJ-Titel mehr nach end_stream).\nDemo-Inhalte-Link nur sichtbar wenn demo_mode_enabled=1 (Schutz für Tester-Installs).

v1.3.0

09.05.2026
Download
  • Feature: Section-Manager (Free, Core) - Sektionen mit 1/2/3/4-Spalten-Layouts und Widgets aus dem CMS-Katalog auf Startseite und Custom-Pages
  • Feature: Navigation-Manager (Free, Core) - Header- und Footer-Menüs getrennt verwalten, Drag-and-Drop, Dropdowns mit 1 Ebene, Sichtbarkeit pro Login-Status
  • Feature: Page-Builder-Pro 1.0.1 (Plugin, 89 EUR Lifetime) - 5 polierte Templates, Editor-Fullscreen, List-Filter zeigt nur Custom/Builder-Pages, Save-Modal scrollt zuverlässig auf 1920x1080
  • Feature: Sendung „Einmalig" (recurrence_weeks=0) mit Anchor-Datum, day_of_week aus Anchor abgeleitet, im Sendeplan steht das konkrete Datum statt Wochentag
  • Feature: Cron-Task schedule-cleanup.php deaktiviert abgelaufene Einmal-Sendungen automatisch
  • Feature: HTML-Source-Mode in Pages-Editor pro Sprach-Tab, Quill lässt HTML durch (sanitized: kein script, kein on*=, kein javascript:)
  • Feature: Social-Icons als neuer Widget-Typ - greift auf Settings (social_facebook, social_instagram, social_youtube, social_tiktok, social_x, social_discord) zurück
  • Feature: Stream-Server-Title nach Sendungs-Ende automatisch auf „<Radio-Name> - AutoDJ" zurückgesetzt
  • Feature: Mein-Profil im Admin-Header (Avatar), eingeloggter User kann sein eigenes Profil bearbeiten (Rolle/Aktiv read-only für sich selbst)
  • Feature: User-Löschen mit Self-Protection (eigener Account nicht löschbar) und Last-Superadmin-Protection
  • Bug-Fix: Footer-Navigation rendert dynamisch, keine doppelten „News"-Einträge mehr
  • Bug-Fix: Sendungs-Banner verschwindet nach Sendungs-Ende vom Dashboard (Title-Reset auf Stream)
  • Bug-Fix: Chat-Widgets (Uhr, Social, Zitate) überlappen den Chat nicht mehr (display:none auf .radiocms-sidebar im Chat)
  • Bug-Fix: Chat-Toolbar Schriftfarbe-Icon ist jetzt Palette statt verwirrendem „B"
  • Bug-Fix: Chat-Senden robust - Gast-Token wird notfalls neu generiert, invalid_guest_token rotiert die Session, alle Server-Fehler bekommen einen Toast
  • Bug-Fix: Chat-Raumwechsel zeigt sofort System-Message und Toast, vorher wirkte es wie „nichts passiert" wenn der Raum leer war
  • Bug-Fix: Navigation-Reset im Footer-Tab zerstört nicht mehr das Header-Menü, beide Standorte haben jetzt eigene Defaults
  • Bug-Fix: Pages-Modal nutzt Flexbox-Layout, scrollt zuverlässig auf 1920x1080 beim Speichern
  • Bug-Fix: Admin-Buttons btn-admin-icon mit !important global vereinheitlicht (32x32, dunkler Hintergrund, dezente Border)
  • Bug-Fix: CSRF-Verify akzeptiert auch GET-Tokens, leere Tokens werden nie als gültig akzeptiert
  • Technisch: Neue Tabellen page_layouts und navigation_items (mit menu_location ENUM)
  • Technisch: Permissions manage_layouts und manage_navigation neu, permissions_revision incrementiert (alle aktiven Sessions reloaden Permissions)
  • Technisch: pages.page_type ENUM um „builder" erweitert für Page-Builder-Pro
  • Technisch: Browser-Cache-Bust per admin.css?v=<SITE_VERSION> in admin-header.php

v1.2.0

08.05.2026
Download
  • Plattform-Refactor: Plugin-System v2 (Sidebar-Hooks, Cron-Hooks, Auto-Migration, License-Gating, Plugin-Admin-Page-Dispatcher)
  • Plattform-Refactor: Marketplace-Lizenz-Client (HMAC-signed Calls gegen Hub-API mit 24h-Cache und 72h-Offline-Toleranz)
  • Feature: CMS-Update-Page zeigt jetzt Plugin-Updates parallel zu Core-Updates an, mit Lizenz-Status und Ein-Klick-Plugin-Update
  • Feature: Plugin-Lizenz-Settings-Page /admin/plugin-license.php für Lizenz-Eingabe und Status-Verifikation
  • Feature: Zentraler Cron cron/plugin-hooks.php für Plugin-Cron-Tasks (Plugins registrieren sich beim Boot)
  • Marketplace ist jetzt einsatzbereit. Erstes Premium-Plugin: Charts Pro (Top-100-Voting wie ddtop100.de). Bei Bedarf im Hub-Marketplace verfügbar.

v1.1.2

08.05.2026
Download
  • Feature: Hörproben pro Voting-Option (MP3, M4A, AAC, OGG, WAV bis 10 MB), Audio-Player im Frontend und in der Admin-Ergebnis-Tabelle
  • Feature: Beim Löschen eines Votings oder einer Option werden Audio- und Cover-Dateien automatisch mit entfernt
  • Migration: voting_options.audio_sample-Spalte plus assets/audio/voting-samples-Verzeichnis mit .htaccess-Schutz

v1.1.1

08.05.2026
Download
  • Feature: Voting-Modul (komplettes Abstimmungs-System mit eigenem Sidebar-Link, Cover-Bildern, IP/E-Mail/IP+E-Mail-Auth, Newsletter-Auto-Versand, Auto-Publish-Top-3 als News, Recurring-Templates, Live-Diagramm, CSV-Export, Footer-Widget)
  • Feature: Sendungs-Wiederholungen (jede Woche, alle 2 Wochen, alle 4 Wochen) mit Anker-Datum, Filter wirkt auf aktuelle/nächste Sendung plus Sendeplan-Übersicht
  • Feature: Stream-Title-Push an Stream-Server beim manuellen Now-Playing-Override (für Winamp, VLC, WMP), funktioniert mit SHOUTcast v1/v2 und Icecast2
  • Feature: Externe-Player-Icons (Winamp PLS, VLC M3U, Windows Media Player ASX) unter dem „Jetzt hören"-Button auf der Startseite
  • Bug-Fix: DJ-Rolle hatte Zugriff auf DJ-Bewerbungen, Podcasts trotz Rechte-Entzug. Jetzt eigene Permission `manage_applications`, `view_podcasts`, `edit_podcasts` korrekt geprüft
  • Bug-Fix: Hero-„Jetzt hören"-Button startete den Player nicht (synthetic click verlor User-Activation in Chrome/Safari)
  • Bug-Fix: Now-Playing-Titel wurde nicht aktualisiert (Browser-Cache + Reverse-Proxy-Cache durch fehlende no-cache-Header)

v1.0.10

08.05.2026
Download
  • Bug-Fix: Now-Playing-Titel wurde nicht aktualisiert auf der Radio-Seite (HTTP-Cache-Header fehlten in /api/status.php und /api/now-playing.php, Browser/Reverse-Proxies haben das gecached). Jetzt strikt no-cache plus Cache-Buster im Frontend-Polling.
  • Bug-Fix: Hero-„Jetzt hören"-Button auf Startseite startete den Player nicht. Ursache: synthetischer playBtn.click() vererbt User-Activation nicht zuverlässig in Chrome/Safari, audio.play() wurde mit NotAllowedError blockiert. Jetzt ruft der Hero-Button die togglePlayer-Funktion direkt im selben User-Gesture-Stack auf.

v1.1.0

08.05.2026
Download
  • Feature: Voting-Modul komplett neu (eigener Sidebar-Link „Voting")
  • Feature: Abstimmungen mit Einzel- oder Mehrfach-Auswahl, max-choices konfigurierbar
  • Feature: Drei Auth-Modi pro Voting: nur IP, E-Mail-Double-Opt-In, IP+E-Mail kombiniert
  • Feature: Optionen pro Voting mit Cover-Bild (max 3 MB), YouTube- und Spotify-Link, Beschreibung
  • Feature: Auto-Publish-Winner: bei Voting-Ende automatisch Top-3 als News-Artikel
  • Feature: Newsletter-Auto-Versand bei Voting-Start, nutzt SMTP/Resend/Brevo aus Newsletter-Modul
  • Feature: Recurring-Templates, nach Ende automatisch neues Voting für nächsten Monat (Optionen kopiert)
  • Feature: Live-Ergebnis-Diagramm (Chart.js) im Admin plus CSV-Export
  • Feature: Footer-Widget im Frontend zeigt aktives Voting als Teaser
  • Feature: Ergebnis-Sichtbarkeit konfigurierbar (immer / nach eigener Stimme / nach Voting-Ende)
  • Feature: Voting-Modul-Settings im Admin (Default-Werte, Anzeige-Texte mehrsprachig)
  • Feature: Permission „manage_voting" automatisch an admin und superadmin
  • Feature: Cron-Job cron/voting-tick.php für Voting-Finalisierung (Best-Effort-Fallback ohne Cron)

v1.0.9

08.05.2026
Download
  • Bug-Fix: „Radio hören"-Button auf Startseite ohne Funktion bei HTTPS-Site mit HTTP-Stream (Browser blockierte still wegen Mixed-Content), URL wird jetzt automatisch auf HTTPS umgeschrieben
  • Bug-Fix: Hörerstatistik blieb leer wenn kein Crontab für cron/stats.php eingerichtet war, jetzt sampled /api/status.php alle 5 Minuten selbst (idempotent via Lock-File), funktioniert auch auf Shared-Hosting ohne Cron
  • Verbesserung: Sichtbare Toast-Meldung wenn der Player nicht starten kann (Mixed-Content, Autoplay-Block, fehlender Codec) statt stiller Fehlschlag

v1.0.8

08.05.2026
Download
  • Bug-Fix: Newsletter-Sidebar-Link fehlte nach Update (Permissions wurden nur beim Login gecacht, jetzt Auto-Reload bei DB-Version-Mismatch)
  • Bug-Fix: „Jetzt hören"-Button schaltete Player auf Offline (Audio-Error-Event darf den Live-Status nicht überschreiben, der kommt aus dem Polling)
  • Bug-Fix: Hörerstatistik im Dashboard blieb leer bei SHOUTcast (cron/stats.php ignorierte stream_server_type, fragte hardcoded Icecast2 ab)
  • Bug-Fix: Footer-Text aus Admin-Einstellungen wurde im Frontend nicht angezeigt (Setting war Dead-Code, jetzt in Brand-Spalte gerendert)
  • Bug-Fix: Version wurde im Admin-Footer nicht angezeigt (neue Footer-Bar mit Versionsnummer + Update-Hinweis für Superadmins)
  • Feature: Newsletter-Anmeldung im Frontend-Footer (wenn newsletter_enabled aktiv), Double-Opt-In, DSGVO-Checkbox, CSRF-geschützt

v1.0.7

07.05.2026
Download
  • UX: Alle hässlichen Browser-Confirm-Popups durch Dark-Theme-Modal ersetzt (Update-Install, Plugin-Install, Newsletter-Versand, Lösch-Aktionen)
  • UX: Versionshistorie im System-Update jetzt korrekt nach SemVer absteigend sortiert (neueste oben)
  • UX: Versionshistorie zeigt jetzt alle Stichpunkte einer Version, vorher nur die ersten 8 mit „... 7 weitere"
  • Feature: Hub-Admin „CMS-Versionen" hat jetzt Edit-Funktion pro Version (Datum, Download-URL, Changelog korrigieren)
  • Technisch: Generischer data-confirm-Wrapper in admin-header.php, 13 Admin-Seiten umgestellt von onclick="return confirm()" auf data-confirm-Attribut

v1.0.6

06.05.2026
Download
  • Bug-Fix: Newsletter-Editor war kaum lesbar, Quill-Editor hatte keine Dark-Theme-Styles bekommen
  • Geändert: Quill-Styles zentral in admin.css gepflegt, alle Editoren (Pages und Newsletter) ziehen daraus, einheitliches Aussehen

v1.0.5

04.05.2026
Download
  • UX: Admin-Einstellungen jetzt mit Tabs (Allgemein, Stream, E-Mail SMTP, Funktionen plus Social) statt endloser Liste
  • UX: Newsletter-Einstellungen umgezogen nach Admin → Newsletter → Tab Einstellungen, Newsletter ist jetzt eigenes Modul in der Sidebar
  • UX: System-Update als Sidebar-Link für Superadmins (war vorher versteckt)
  • Feature: Hub-Admin erlaubt jetzt ZIP-Direktupload als Alternative zur Download-URL-Eingabe

v1.0.4

30.04.2026
Download
  • Bug-Fix: HTML-Entity-Doppel-Encoding bei SHOUTcast-Titeln, „C&J Street Mix" wurde als „C&amp;J" ausgegeben
  • Bug-Fix: Jetzt-hören-Button auf Startseite funktioniert jetzt zuverlässig (war eventbasiert hängengeblieben)
  • Geändert: Live-Badge dreifarbig, grün wenn DJ live, rot wenn AutoDJ läuft, grau wenn offline (vorher alles rot)

v1.0.3

26.04.2026
Download
  • Feature: Newsletter-System komplett neu mit Double-Opt-In, Quill-Editor und Subscriber-Liste
  • Feature: Versand-Engine mit drei Anbietern wählbar (SMTP, Resend, Brevo)
  • Feature: Auto-Newsletter „Sendeplan-Wochenrückblick" via Cron mit Toggle in Settings
  • Feature: Auto-Update-System (One-Click-Update vom Hub, Backup, Rollback, DB-Migration)
  • Feature: Versionshistorie und Backups direkt im Admin sichtbar
  • Bug-Fix: Demo-Login-Block jetzt host-gegated, nur auf radio.dgnshop.com sichtbar
  • Bug-Fix: Manuelles Now-Playing greift nur wenn Override-Feld wirklich befüllt ist

v1.0.2

22.04.2026
Download
  • Bug-Fix: MariaDB-Kompatibilität für Chat-Statistiken (ANY_VALUE durch MAX ersetzt)
  • Bug-Fix: SHOUTcast v1 Off-by-One im 7.html-Title-Parser, Track wurde nicht angezeigt
  • Bug-Fix: HTTPS-Stream-Stats über SSL-Tunnel (Plesk, Centova, Radio.co)
  • Bug-Fix: Player „Demo-Modus" entfernt, zeigt jetzt sauber „Stream offline"
  • Bug-Fix: Hardcodierte Demo-Banner aus Impressum und Datenschutz raus
  • Bug-Fix: DJ-Bereich passt Badge, Protokoll und Software-Tipps dynamisch an Server-Typ an
  • Bug-Fix: Tabellen-Kontrast im Team-Admin auf dunklem Theme verbessert
  • Bug-Fix: Permission-Audit, 6 Admin-Seiten hatten nur requireLogin() ohne can()-Check
  • Feature: Manuelles Now-Playing-Override für Hoster die Stats sperren
  • Feature: Sendungs-Banner pro Sendung (JPG, PNG, WebP, GIF bis 3 MB)
  • Feature: Pages-System für Impressum, Datenschutz und Custom-Seiten (Quill-Editor)
  • Feature: DJ aus registriertem Mitglied anlegen, Login-Account-Verknüpfung im Dropdown
  • Feature: Sendeplan minutengenau (HH:MM, z.B. 14:30 bis 16:45)
  • Feature: SHOUTcast v1 Single-Source-Hinweis, kein nutzloser persönlicher Mountpoint mehr

v1.0.0

17.04.2026
Download
  • Erste öffentliche Version der Community Edition (MIT-Lizenz)
  • Stream-Polling für SHOUTcast v1, SHOUTcast v2 und Icecast2
  • Admin-Bereich mit Sendeplan, DJs, Team, News, Chat
  • Frontend-Player mit Now-Playing-Anzeige
  • Mehrsprachiger DJ-Bereich mit Server-Typ-Erkennung
  • Plugin-System (Themes, Erweiterungen) mit Hub-Anbindung
  • Demo-Modus für radio.dgnshop.com

v2.2.21

30.11.-0001
Download
  • Sendeplan-Anzeige-Fix: einmalige Sendungen zeigen im Wochentag-Tab jetzt ihr Datum an (z.B. "Einmalig am 04.07."). Vorher war bei zwei einmaligen Sendungen auf demselben Wochentag (aber verschiedenen Terminen) nicht erkennbar welche Sendung an welchem Tag stattfindet - beide blieben im Tab sichtbar solange keine der beiden abgelaufen war, was wie ein Anzeigefehler wirkte.
RadioCMS-Installationen prüfen automatisch 1x pro Tag ob hier eine neuere Version liegt und zeigen ggf. ein Update-Banner im Admin.