Aqua Planer Entwicklung
Versionsübersicht & Änderungsverlauf
Hier findest du alle dokumentierten Erweiterungen, Verbesserungen und Fehlerbehebungen
des Aqua Planers.
Aktuelle Version
v2026.07.14
Veröffentlicht am 26.07.2026
Aufgeräumte Modul- und Dateistruktur
- Wasserwechsel-Funktionen wurden vollständig unter `waterchange/` zusammengeführt.
- Wasserwerte-Funktionen wurden unter `water-values/` zusammengeführt.
- Der bisher großgeschriebene Ordner `Filter/` wurde auf die einheitliche Schreibweise `filter/` umgestellt.
- Die Design-Umschaltung liegt nun als interne Aktion unter `actions/`.
- Öffentliche Informationsseiten wurden unter `public/seo/` einsortiert, behalten aber ihre bisherigen, bereits indexierten URLs.
- Veraltete Root-Weiterleitungen für Dashboard und SMTP-Test wurden durch zentrale Kompatibilitätsregeln ersetzt.
- Technische Anleitungen und ältere Update-Dateilisten wurden unter `docs/` geordnet.
Sichere Kompatibilität
- Alte Wasserwechsel-, Wasserwerte-, Filter-, Dashboard-, Testmail- und Design-URLs bleiben über `.htaccess` funktionsfähig.
- Bestehende POST-Formulare verlieren bei einer alten Adresse keine Formulardaten, weil die Kompatibilität serverintern erfolgt.
- Sämtliche internen Links und Rücksprünge verwenden die neue Modulstruktur.
- Die bereits bei Google bekannten SEO-Adressen bleiben unverändert.
Aufräumen im Adminbereich
- Neue Seite „Admin → Dateistruktur“ zeigt alle noch vorhandenen alten Dateien und die zugehörigen neuen Ziele.
- Alte Dateien werden erst entfernt, nachdem die jeweilige neue Zieldatei vorhanden ist.
- Die Bereinigung ist ausschließlich als Administrator, per POST und mit CSRF-Schutz möglich.
- Aquarium-Bilder, lokale Konfigurationen, Datenbankinhalte und unbekannte Dateien werden nicht gelöscht.
- Ein rotes Admin-Ausrufezeichen bleibt sichtbar, solange die einmalige Dateibereinigung aussteht.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Korrektur der ersten Admin-Datenbankübernahme
- Die Bestandsprüfung verwendet nicht mehr `information_schema`, weil vorhandene Tabellen auf einzelnen Hosting-Konfigurationen dadurch fälschlich als fehlend erkannt wurden.
- Die Grundtabellen werden nun direkt über die aktive Aqua-Planer-Datenbank geprüft.
- Fehlende Tabellen für den Designmodus und die Forum-Benachrichtigungen werden beim erneuten Ausführen automatisch und sicher ergänzt.
- Bereits vorhandene Benutzer erhalten dabei weiterhin die empfohlenen Forum-Benachrichtigungseinstellungen.
- Eine zuvor fehlgeschlagene Übernahme aus Version 2026.07.12 kann direkt im Adminbereich erneut ausgeführt werden; phpMyAdmin ist dafür nicht erforderlich.
- Erfolgreich ausgeführte Installationen der ersten Prüffassung werden über eine freigegebene alte Prüfsumme weiterhin korrekt als installiert erkannt.
Darstellung im Adminbereich
- Der Hinweis „Datenbank-Update verfügbar“ besitzt jetzt eine deutlich gestaltete Schaltfläche statt eines einfachen unterstrichenen Textlinks.
- Die Schaltfläche ist auch im grauen Design und auf kleinen Bildschirmen gut sichtbar.
Update-Paket
- Für dieses Korrekturupdate ist kein manueller SQL-Import erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Datenbank-Updates direkt im Adminbereich
- Ausstehende Datenbankänderungen werden Administratoren künftig direkt in der Hauptnavigation mit einem roten Ausrufezeichen angezeigt.
- Auf der Admin-Startseite erscheint bei Bedarf ein deutlicher Hinweis „Datenbank-Update verfügbar“.
- Neue Seite „Admin → Datenbank-Updates“ mit Beschreibung, Status, Ausführungsdauer und Fehlermeldungen jeder Migration.
- Ausstehende Migrationen können einzeln oder gesammelt direkt über den Adminbereich ausgeführt werden; phpMyAdmin ist für zukünftige Aqua-Planer-Migrationen nicht mehr erforderlich.
- Die Ausführung ist ausschließlich für angemeldete Administratoren, per POST-Anfrage und mit CSRF-Schutz möglich.
Sichere und nachvollziehbare Ausführung
- Die neue Tabelle `app_migrations` speichert Kennung, Version, Prüfsumme, Status, ausführenden Administrator, Laufzeit und eventuelle Fehlermeldungen.
- Erfolgreiche Migrationen werden nicht erneut ausgeführt, auch wenn die zugehörige Datei auf dem Server erhalten bleibt.
- Eine Datenbanksperre verhindert, dass zwei Administratoren gleichzeitig dieselbe Migration starten.
- Nachträglich veränderte, bereits ausgeführte Migrationsdateien werden erkannt und aus Sicherheitsgründen blockiert.
- Direkter Webzugriff auf `app/migrations` ist gesperrt.
- Das erste verfügbare Update prüft und übernimmt den bereits installierten Datenbankstand bis Version 2026.07.11.
Update-Paket
- Für dieses Update ist kein manueller SQL-Import erforderlich.
- Beim ersten Aufruf durch einen Administrator wird ausschließlich die technische Protokolltabelle `app_migrations` automatisch angelegt.
- Anschließend wird die einmalige Übernahme des bisherigen Datenbankstands über „Admin → Datenbank-Updates“ bestätigt.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Forum-Abonnements und E-Mail-Benachrichtigungen
- Benutzer können öffentliche Forumthemen direkt auf der Themenseite abonnieren und das Abonnement dort wieder beenden.
- Beim Erstellen eines neuen Themas und beim Schreiben einer Antwort erscheint eine individuell änderbare Benachrichtigungs-Checkbox.
- Die Vorauswahl richtet sich nach der persönlichen Einstellung im Benutzerkonto und ist standardmäßig aktiviert.
- Eigene Beiträge lösen keine E-Mail an den Verfasser aus.
- Pro Abonnent wird nur eine E-Mail versendet, bis das betreffende Thema erneut besucht wurde; weitere Antworten erzeugen in dieser Zeit keine zusätzlichen Nachrichten.
- Die Benachrichtigung enthält Thema, antwortenden Benutzer, einen kurzen Textausschnitt, einen direkten Link zum neuen Beitrag und einen sicheren Link zum Beenden des Abonnements.
- Ein fehlgeschlagener E-Mail-Versand blockiert niemals die Veröffentlichung der Antwort und wird im Server-Fehlerprotokoll sowie in einem technischen Benachrichtigungsprotokoll vermerkt.
Einstellungen im Benutzerkonto
- Unter „Konto → Forum-Benachrichtigungen“ können Forum-E-Mails grundsätzlich ein- oder ausgeschaltet werden.
- Die automatische Vorauswahl für eigene Themen und beantwortete Themen kann getrennt gesteuert werden.
- Alle abonnierten Themen werden mit letzter Aktivität aufgelistet und können einzeln oder vollständig abbestellt werden.
Datenbank und Sicherheit
- Neue Tabellen `forum_user_preferences`, `forum_subscriptions` und `forum_notification_log` speichern Voreinstellungen, Themenabonnements und Versandstatus.
- Bestehende Benutzer erhalten beim Import die empfohlenen Standardwerte „E-Mail aktiv“ und „automatisch abonnieren“.
- Abonnements verwenden eindeutige, zufällige Abmeldetokens; der E-Mail-Link zeigt zunächst eine Bestätigungsseite und verändert bei einem normalen Seitenaufruf noch keine Daten.
- Alle Änderungen innerhalb der Website erfolgen per POST mit CSRF-Schutz.
- Die Abmeldeseite ist für Suchmaschinen auf `noindex, nofollow` gesetzt.
Update-Paket
- Für dieses Update ist die SQL-Migration `sql/2026.07.11-forum-benachrichtigungen.sql` erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Dunklerer grauer Designmodus
- Der grau-dunkle Designmodus wurde eine gut sichtbare Stufe dunkler abgestimmt, ohne zu einem schwarzen Nachtmodus zu werden.
- Seitenhintergrund, Karten, Formulare, Listen und innere Flächen verwenden nun kräftigere Grauwerte mit weiterhin gut lesbarem Kontrast.
- Farbige Schaltflächen, Statusmeldungen, Warnungen und Forum-Kategorieüberschriften behalten ihre Farben.
- Die Vorschau im Benutzerkonto wurde an den neuen Grauton angepasst.
Schlankere Hauptnavigation
- Der Menüpunkt „Aquarium anlegen“ wurde aus der Hauptnavigation entfernt.
- Neue Aquarien können weiterhin direkt über das Dashboard angelegt werden.
- Auch im Wartungsmodus wird kein unnötiger Platzhalter für diesen Menüpunkt mehr angezeigt.
Kompaktere Forumübersicht
- Kategorieüberschriften wurden in Höhe, Schriftgröße und Innenabstand verkleinert.
- Unterforumzeilen verwenden kleinere Symbole, geringere Abstände und kompaktere Statistik- und Aktivitätsbereiche.
- Die Darstellung bleibt auf Tablets und Smartphones responsiv und gut bedienbar.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Korrektur des Designumschalters
- Der Designumschalter wird für jeden angemeldeten Benutzer immer sichtbar in der Hauptnavigation ausgegeben und nicht mehr durch eine vorgeschaltete Tabellenprüfung ausgeblendet.
- Im Benutzerkonto wurde zusätzlich ein deutlich sichtbarer Bereich „Darstellung“ mit direkter Auswahl zwischen hellem und grauem Design ergänzt.
- Die Tabellenabfragen verwenden nun ausdrücklich den konfigurierten Datenbanknamen.
- Session und Cookie dienen als robuster Fallback, während die vorhandene Tabelle weiterhin für die geräteübergreifende Speicherung verwendet wird.
- Der Umschalter kann jetzt auch einen konkreten Zielmodus setzen, statt ausschließlich zwischen beiden Zuständen umzuschalten.
Kompakte Ticketfilter
- Die bisher weiterhin groß wirkende Filterkarte wurde durch eine flache Filterleiste ersetzt.
- Überschrift, Suche, Status, Kategorie und Aktionen stehen auf großen Bildschirmen in einer einzigen kompakten Zeile.
- Eingabefelder und Schaltflächen wurden niedriger und platzsparender gestaltet.
- Auf kleinen Bildschirmen bleibt die Bedienung durch kontrolliertes Umbrechen erhalten.
Update-Paket
- Für dieses Korrekturupdate ist keine weitere SQL-Migration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Persönlicher Designmodus
- Für angemeldete Benutzer wurde ein Umschalter zwischen dem bisherigen hellen Design und einem grau-dunklen, bewusst nicht schwarzen Design ergänzt.
- Der Umschalter befindet sich direkt in der Hauptnavigation und zeigt abhängig vom aktuellen Zustand „Graues Design“ beziehungsweise „Helles Design“ an.
- Die gewählte Darstellung wird benutzerspezifisch in der Datenbank gespeichert und gilt dadurch nach erneutem Login sowie auf anderen Geräten weiter.
- Farbige Schaltflächen, Statusmeldungen, Forum-Kategorieüberschriften und Warnhinweise behalten ihre bisherigen Farben.
- Karten, Formulare, Listen, Forumbeiträge, Dashboard-Module, Galerieelemente und weitere helle Flächen wurden für den grauen Modus abgestimmt.
- Vor dem Import der SQL-Datei bleibt die Website ohne Fehler im hellen Design; der Umschalter wird erst bei vorhandener Einstellungstabelle angezeigt.
- Der Wechsel erfolgt ausschließlich per POST, mit CSRF-Schutz und einer geprüften internen Rücksprungadresse.
Kompaktere Support-Ticketfilter
- Der bisher großflächige Filterbereich wurde zu einer flachen, platzsparenden Filterleiste umgebaut.
- Suche, Status, Kategorie und Aktionen stehen auf großen Bildschirmen in einer gemeinsamen Zeile.
- Auf Tablets und Smartphones ordnen sich die Felder automatisch in zwei beziehungsweise eine Spalte ein.
- Auswahltexte wurden lesbarer formuliert, beispielsweise „In Bearbeitung“ statt „in_bearbeitung“.
- Bei aktiven Filtern ist zusätzlich ein kompakter Schnelllink zum vollständigen Löschen der Filter sichtbar.
Datenbank und Systemprüfung
- Neue Tabelle `user_theme_preferences` speichert ausschließlich die Designwahl eines Benutzers.
- Die Tabelle verwendet `utf8mb4_unicode_ci` und wird über einen Fremdschlüssel mit `users.id` verbunden.
- Die Admin-Datenbankprüfung kontrolliert jetzt zusätzlich diese neue Beziehung.
Update-Paket
- Die SQL-Datei `sql/2026.07.8-designmodus.sql` muss einmal importiert werden.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Support-Ticket-Übersicht
- Die vier großflächigen Statistik-Karten wurden durch kompakte Statusfelder ersetzt.
- Gesamtzahl, offene, in Bearbeitung befindliche und erledigte Tickets werden nun platzsparend in der Form „Status: Anzahl“ dargestellt.
- Die Anzahl wird zur schnelleren Erfassung als kleines farblich passendes Kennzeichen angezeigt.
- Auf kleinen Bildschirmen brechen die Statusfelder automatisch in zwei beziehungsweise eine Spalte um.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Support-Tickets
- In der Admin-Ticketliste einen direkten Button „Ticket löschen“ neben „Ticket ansehen“ ergänzt.
- Der Löschbutton ist zusätzlich in der Detailansicht eines Tickets verfügbar.
- Vor dem dauerhaften Löschen erscheint eine deutliche Sicherheitsabfrage.
- Tickets können ausschließlich von Administratoren, per POST-Anfrage und mit gültigem CSRF-Token gelöscht werden.
- Nach dem Löschen bleibt ein zuvor gesetzter Such-, Status- oder Kategoriefilter erhalten.
- Bereits gelöschte oder ungültige Ticket-IDs werden kontrolliert behandelt und führen nicht zu einem Datenbankfehler.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Suchmaschinen und Sitemap
- Dynamische Forum-Sitemap unter `/forum/sitemap.xml` ergänzt.
- Öffentliche Unterforen und Themen werden automatisch aus der Datenbank in die Sitemap aufgenommen.
- `lastmod` wird aus der letzten Änderung beziehungsweise der letzten Antwort ermittelt.
- Die `robots.txt` verweist jetzt sowohl auf die allgemeine Sitemap als auch auf die Forum-Sitemap.
- Forum-Adressen wurden aus der statischen Sitemap entfernt, damit es keine doppelte Pflege gibt.
- Im Forum-Adminbereich kann die aktuelle Forum-Sitemap direkt geöffnet und kontrolliert werden.
Strukturierte Daten
- Öffentliche Themen erhalten `DiscussionForumPosting`-Markup mit Autor, Veröffentlichungszeit, vollständigem Beitragstext, Antworten, Antwortzahl und Aufrufzahl.
- Mehrseitige Themen kennzeichnen die erste Themenseite als Hauptadresse und enthalten auf Folgeseiten nur die dort sichtbaren Antworten vollständig.
- Forum-Startseite, Unterforen, Themen und Regeln erhalten `BreadcrumbList`-Markup.
- Öffentliche Forumübersichten erhalten ergänzende `CollectionPage`-Daten.
- Allgemeine Open-Graph-Metadaten für Seitentitel, Beschreibung und kanonische URL ergänzt.
Sprechende Forum-Adressen
- Unterforen verwenden künftig Adressen wie `/forum/unterforum/wasserwerte/`.
- Themen verwenden künftig Adressen wie `/forum/thema/15/weisse-punkte-bei-neonsalmlern/`.
- Forum-Regeln sind künftig unter `/forum/regeln/` erreichbar.
- Das Formular für neue Themen verwendet `/forum/neues-thema/unterforum-slug/`.
- Alte PHP-Adressen bleiben erreichbar und werden dauerhaft auf die neue kanonische Adresse umgeleitet.
- Ungültige Seitenzahlen und `page=1` werden auf eine eindeutige kanonische Adresse normalisiert.
Indexierungssteuerung
- Login- und Registrierungsseiten werden mit `noindex, follow` gekennzeichnet.
- Schreib-, Verwaltungs- und nicht öffentliche Forumseiten bleiben von der Indexierung ausgeschlossen.
- Themenbeschreibungen werden automatisch aus dem ersten sichtbaren Beitrag erstellt und auf eine sinnvolle Länge gekürzt.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Verwaltung der Forum-Regeln
- Gespeicherte Regelversionen können im Adminbereich direkt bearbeitet werden.
- Inaktive Regelversionen können nach einer Sicherheitsabfrage dauerhaft gelöscht werden.
- Die aktive Regelversion ist gegen versehentliches Löschen geschützt; vor dem Löschen muss zuerst eine andere Fassung aktiviert werden.
- Beim Löschen einer inaktiven Version werden ausschließlich die zu genau dieser Fassung gehörenden alten Zustimmungen entfernt.
- Wird ein Regeltext bearbeitet, werden bisherige Zustimmungen zu dieser Fassung zurückgesetzt, damit niemand einer nachträglich veränderten Version irrtümlich als bereits zugestimmt gilt.
- Bei Bearbeitung der aktiven Fassung müssen alle Benutzer die geänderten Regeln vor ihrem nächsten Beitrag erneut akzeptieren.
- Die vorgeschlagene Standardbezeichnung im Formular lautet nun „Verhaltensregeln für das Aqua-Planer Forum“.
Sicherheit und Update-Paket
- Bearbeiten, Aktivieren und Löschen bleiben auf Administratoren beschränkt und sind mit CSRF-Schutz sowie Datenbanktransaktionen abgesichert.
- Für dieses Update ist keine Datenbankmigration erforderlich.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Forum-Schreibfunktionen
- Angemeldete und per E-Mail bestätigte Benutzer können nach Annahme der aktuellen Forum-Regeln neue Themen erstellen.
- Antworten können direkt unter einem offenen Thema verfasst und veröffentlicht werden.
- Der erste Beitrag eines neuen Themas und das Thema selbst werden gemeinsam in einer Datenbanktransaktion gespeichert.
- Neue Antworten aktualisieren automatisch die letzte Aktivität des Themas und leiten zum veröffentlichten Beitrag weiter.
- Unterforumseiten zeigen abhängig vom Kontostatus direkt „Neues Thema erstellen“, Login oder Regelannahme an.
- Die Forum-Startseite zeigt angemeldeten Benutzern, ob ihr Konto für das Schreiben freigeschaltet ist.
- Themenaufrufe werden pro Sitzung höchstens einmal innerhalb von 30 Minuten gezählt.
Forum-Regeln
- Aktive Forum-Regeln können direkt auf der öffentlichen Regelseite verbindlich akzeptiert werden.
- Zustimmungen werden mit Benutzer, Regelversion und Zeitpunkt in `forum_rule_acceptances` gespeichert.
- Wird im Adminbereich eine neue Regelversion aktiviert, ist vor dem nächsten Beitrag eine erneute Zustimmung genau zu dieser Version erforderlich.
- Bereits akzeptierte Regelstände bleiben zur späteren Nachvollziehbarkeit erhalten.
Sicherheit und Missbrauchsschutz
- Vor jeder Schreibaktion werden Anmeldung, Kontostatus, E-Mail-Bestätigung, aktuelle Regelannahme sowie Sperrstatus von Unterforum und Thema erneut serverseitig geprüft.
- Themen- und Antwortformulare sind mit CSRF-Schutz, Längenbegrenzungen, Honeypot und Mindest-Ausfüllzeit abgesichert.
- Ein Benutzer kann höchstens alle 60 Sekunden ein neues Thema und höchstens alle 20 Sekunden einen neuen Beitrag veröffentlichen.
- Direkter HTML-Code wird weiterhin vollständig maskiert und nicht ausgeführt.
- Gleichzeitige Schließungen eines Themas werden durch eine erneute Prüfung innerhalb der Datenbanktransaktion berücksichtigt.
Anmeldung und Bedienung
- Forum-Loginlinks übergeben ein geprüftes internes Rücksprungziel.
- Nach erfolgreicher Anmeldung kehrt der Benutzer zur ursprünglich aufgerufenen Forumseite zurück.
- Gäste können öffentliche Inhalte weiterhin ohne Anmeldung lesen, aber keine Themen oder Antworten erstellen.
Update-Paket
- Für dieses Update ist keine Datenbankmigration erforderlich; die bereits vorhandenen Forum-Tabellen werden verwendet.
- `app/config/config.php` und `app/config/mail.local.php` bleiben vom Update ausgeschlossen.
- ZIP-Datei und oberster Ordner tragen denselben Namen.
Forum-Bedienung
- Sichtbares Leerzeichen zwischen „Angemeldet als“ und dem Benutzernamen dauerhaft sichergestellt.
- Für angemeldete Administratoren einen direkten Button „Forum verwalten“ unterhalb des Benutzerhinweises ergänzt.
- Der Schnellzugriff führt direkt in die Forumverwaltung; von dort bleibt der vorhandene Rückweg zum öffentlichen Forum verfügbar.
- Darstellung des neuen Admin-Schnellzugriffs für Desktop und Mobilgeräte ergänzt.
Update-Paket
- Oberster Ordner im ZIP-Paket trägt ab dieser Version denselben Namen wie die ZIP-Datei.
- `app/config/config.php` und `app/config/mail.local.php` bleiben weiterhin vom Update ausgeschlossen.
- Für dieses Update ist keine Datenbankänderung erforderlich.
Versionierung
- Versionsschema von semantischen Sprüngen auf das übersichtliche Kalenderformat `JJJJ.MM.RELEASE` umgestellt.
- Frühere Versionen der Reihe `2.x` bleiben unverändert im Änderungsverlauf erhalten.
- Dokumentation der Versionspflege und Update-Dateinamen an das neue Schema angepasst.
Forum-Grundlage
- Öffentliche Forum-Startseite ohne Loginpflicht mit Kategorien, Unterforen, Themenzahlen, Beitragszahlen und letzter Aktivität umgesetzt.
- Öffentliche Unterforum- und Themenansichten mit Seitennavigation, Breadcrumbs und vorbereiteter Anzeige von Bearbeitungshinweisen ergänzt.
- Gemeinsame Anmeldung mit dem bestehenden Aqua-Planer-Benutzerkonto vorbereitet; eine zweite Registrierung ist nicht erforderlich.
- Öffentliche Forum-Regelseite mit versionierten Regelständen ergänzt.
- Forum-Link für nicht angemeldete Besucher in die Hauptnavigation aufgenommen.
Administration
- Eigenen Adminbereich unter `admin/forum/` ergänzt.
- Kategorien können erstellt, bearbeitet, sortiert, aktiviert, deaktiviert und sicher gelöscht werden.
- Unterforen können Kategorien zugeordnet, erstellt, bearbeitet, sortiert, gesperrt und sicher gelöscht werden.
- Versionierte Forum-Regeln können erstellt und gezielt als aktuelle Fassung veröffentlicht werden.
- Forum-Übersicht mit Anzahl der Kategorien, Unterforen, Themen und Beiträge ergänzt.
Datenbank
- Neue Tabellen für Kategorien, Unterforen, Themen, Beiträge, Regelversionen und Regelzustimmungen vorbereitet.
- Alle neuen Tabellen verwenden `utf8mb4_unicode_ci` und sind über Fremdschlüssel mit dem vorhandenen Benutzersystem verbunden.
- Migration `sql/2026.07.1-forum-grundstruktur.sql` und schreibgeschützte Kontrollabfrage ergänzt.
Sicherheit
- Schreibfunktionen für normale Benutzer bleiben in dieser ersten Forum-Version bewusst deaktiviert.
- Sämtliche Änderungen in der Forumverwaltung sind auf Administratoren beschränkt und mit CSRF-Schutz abgesichert.
- Kategorien mit Unterforen und Unterforen mit Themen können nicht versehentlich gelöscht werden.
- Beiträge werden bei der Ausgabe vollständig maskiert; direktes HTML wird nicht ausgeführt.
- Forumseiten zeigen vor dem SQL-Import einen kontrollierten Einrichtungsstatus statt eines Datenbankfehlers.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Suchmaschinen
- Individuelle Seitentitel, Beschreibungen, Canonical-URLs und Indexierungssteuerung für Forum, Unterforen, Themen und Regeln ergänzt.
- Forum-Inhalte sind für nicht angemeldete Besucher lesbar und damit grundsätzlich für Suchmaschinen erreichbar.
- Sprechende Slugs für Kategorien, Unterforen und Themen in der Datenbankstruktur vorbereitet.
Hinzugefügt
- Vollständige CO2-Historie mit Zusammenfassung, Durchschnittsintervall, Bearbeitung, Löschung und Seitennavigation ergänzt.
- Sichere zentrale Modulsteuerung über `aquarium/update-module-order.php` ergänzt.
- Vorbereitende Forum-Startseite unter `forum/index.php` mit direkter Nutzung des vorhandenen Benutzerkontos ergänzt.
Behoben
- Vier bisher leere PHP-Dateien mit funktionalen Weiterleitungen beziehungsweise einer echten Implementierung ersetzt.
- Fünf Rücksprung-Links auf die nicht vorhandene Datei `/aquarium.php` korrigiert.
- Fehlerhaften Forum-Link auf die nicht vorhandene Datei `forum/auto_login.php` korrigiert.
- Falschen Verweis auf `favicon-32.png` an den tatsächlich vorhandenen Dateinamen angepasst.
- Seitentitel und Suchmaschinensteuerung für Forum und CO2-Historie ergänzt.
Sicherheit
- Verschieben sowie Ein- und Ausklappen von Aquarium-Modulen von verändernden GET-Anfragen auf POST mit CSRF-Schutz umgestellt.
- Aquarium-Zugehörigkeit und erlaubte Modulschlüssel werden vor jeder Moduländerung geprüft.
- Alte GET-Endpunkte verändern keine Daten mehr und leiten nur noch zur Aquariumansicht zurück.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Technisch
- Navigation und statische interne Zielpfade automatisiert auf nicht vorhandene Dateien geprüft.
- Alle zuvor leeren PHP-Dateien enthalten jetzt ausführbaren, kontrollierten Code.
- Für dieses Update ist keine Datenbankänderung erforderlich.
Datenbank
- Sechs verwaiste Fütterungsdatensätze werden vor der Bereinigung vollständig in zwei separaten Sicherungstabellen archiviert.
- Neun Fremdschlüsselspalten an die vorhandenen `UNSIGNED`-Primärschlüssel von Benutzern und Aquarien angeglichen.
- 19 fehlende Fremdschlüssel für Bilder, Modulreihenfolge, Düngung, Fütterung, Beleuchtung und Support-Antworten ergänzt.
- Leere, nicht mehr verwendete Tabelle `aquarium_module_positions` entfernt.
- Beim Löschen eines Aquariums werden die zugehörigen Bilddateien nach erfolgreicher Datenbanktransaktion ebenfalls vom Server entfernt.
Hinzugefügt
- Migrationsskript `sql/2.2.4-fremdschluessel-migration.sql` ergänzt.
- Schreibgeschützte Anzeige der gesicherten Fütterungsdaten über `sql/2.2.4-sicherungsdaten-anzeigen.sql` ergänzt.
- Admin-Datenbankprüfung zeigt nach der Migration den vollständigen Abschlussstatus und vorhandene Migrationssicherungen an.
Sicherheit
- Ungültige Datensätze werden nicht ungesichert gelöscht. Die Originalzeilen bleiben in dauerhaften Sicherungstabellen erhalten.
- Neue Fremdschlüssel verhindern künftig verwaiste Datensätze und bereinigen abhängige Daten kontrolliert über `CASCADE` beziehungsweise `SET NULL`.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Technisch
- Alle SQL-Befehle verwenden vollständig qualifizierte Tabellenbezeichnungen für die Datenbank `db313112x3795045`.
- Die Migration benötigt keine vorbereiteten Anweisungen und verändert den Datenbankstandard nicht.
Behoben
- MySQL-Fehler `#1044` beim Tabellenimport behoben, wenn phpMyAdmin den Import im Kontext von `information_schema` ausführt.
- Abhängigkeit von `USE`, `ALTER DATABASE` und direkten Kontrollabfragen gegen `information_schema` entfernt.
- Alle 20 Tabellen werden jetzt mit vollständig qualifiziertem Datenbank- und Tabellennamen angesprochen.
Technisch
- Das neue Skript `sql/2.2.3-utf8mb4-tabellenmigration.sql` ändert ausschließlich die Tabellenkollationen.
- Der Datenbankstandard wird auf Shared-Hosting-Systemen mit eingeschränkten Rechten bewusst nicht verändert.
- Bereits erfolgreich umgestellte Tabellen dürfen erneut verarbeitet werden; fachliche Datensätze werden nicht gelöscht.
Sicherheit
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Behoben
- MySQL-Fehler `#1295` bei der utf8mb4-Migration behoben.
- Nicht unterstützte dynamische `PREPARE`-Anweisung aus der Migration entfernt.
- Datenbankstandard wird nun direkt und kompatibel für `db313112x3795045` geändert.
- Fehlerhafte Migrationsdatei aus Version 2.2.1 durch eine korrigierte Fassung ersetzt.
Hinzugefügt
- Wiederholbar ausführbares Reparaturskript `sql/2.2.2-utf8mb4-reparatur.sql` ergänzt.
- Abschlusskontrollen für Tabellenkollationen und Datenbankstandard ergänzt.
Sicherheit
- Die Migration löscht keine Tabellen oder fachlichen Datensätze.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Technisch
- Bereits erfolgreich konvertierte Tabellen können erneut verarbeitet werden, ohne Datensätze zu entfernen.
- Die Migration ist auf die in der bereitgestellten Sicherung verwendete MySQL-Datenbank `db313112x3795045` abgestimmt.
Geändert
- Standard-Zeichensatz der Datenbank auf `utf8mb4` umgestellt.
- Standard-Kollation der Datenbank auf `utf8mb4_unicode_ci` vereinheitlicht.
- 20 bestehende Tabellen von `utf8mb3_general_ci` auf `utf8mb4_unicode_ci` migriert.
- Sichere SQL-Migration mit anschließender Kontrollabfrage ergänzt.
- Dokumentierte Notfall-Rücksetzung für den unmittelbaren Fehlerfall ergänzt.
Sicherheit
- Direkten Webzugriff auf Dateien im Verzeichnis `sql` gesperrt.
- Migration verändert keine fachlichen Datensätze und löscht keine Tabellen oder Zeilen.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Technisch
- Die Anwendung nutzte für PDO-Verbindungen bereits `utf8mb4`; Datenbankverbindung und Tabellenstruktur sind nun einheitlich.
- Grundlage für internationale Zeichen, Emojis und das spätere Forum geschaffen.
- Fremdschlüssel und mögliche Altlasten bleiben bewusst einem separaten Migrationsschritt vorbehalten.
Hinzugefügt
- Schreibgeschützte Datenbankprüfung im Adminbereich ergänzt.
- Übersicht über Datenbankserver, Standard-Zeichensatz, Tabellen und Kollationen ergänzt.
- Live-Prüfung für fehlende Fremdschlüssel und unpassende Spaltentypen ergänzt.
- Live-Zählung verwaister Datensätze für alle geplanten neuen Beziehungen ergänzt.
- Prüfung der alten Tabelle `aquarium_module_positions` ergänzt.
- Zusätzliches SQL-Prüfskript für phpMyAdmin unter `sql/2.2.0-datenbank-pruefung.sql` ergänzt.
Sicherheit
- Die neue Datenbankprüfung ist ausschließlich für Administratoren erreichbar.
- Die Prüfung arbeitet nur lesend und verändert weder Struktur noch Datensätze.
- Die eigentliche Migration wird erst anhand der Ergebnisse erstellt, damit vorhandene Altlasten nicht unbemerkt gelöscht werden.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Technisch
- Neue Datenbankbeziehungen für Bilder, Modulreihenfolge, Düngung, Fütterung, Beleuchtung und Support-Antworten als Migrationsziel dokumentiert.
- Neue Funktionen werden gemäß semantischer Versionierung ab jetzt mit einer Nebenversion gekennzeichnet.
Hinzugefügt
- Echte SMTP-Testmail-Funktion direkt im Adminbereich ergänzt.
- Frei wählbare Empfängeradresse und Empfängername für Testmails ergänzt.
- Sichere Statusanzeige für SMTP-Host, Port, Verschlüsselung und Anmeldung ergänzt.
- Direkten Zugriff vom Admin-Dashboard auf SMTP-Test und Versionsübersicht ergänzt.
Behoben
- Bisherige Mail-Testseite verwendete noch PHP `mail()` statt der zentralen SMTP-Konfiguration.
- Alte Testmail-Adressen leiten nun auf die neue Admin-Testseite weiter.
Sicherheit
- Testmail-Versand ist ausschließlich für Administratoren und nur per POST mit CSRF-Schutz möglich.
- SMTP-Benutzername und Passwort werden auf der Testseite nicht ausgegeben.
- `app/config/config.php` und `app/config/mail.local.php` bleiben außerhalb des Update-Pakets.
Sicherheit
- Fest eingetragene SMTP-Zugangsdaten aus allen Mail-Klassen entfernt.
- Vertrauliche SMTP-Werte in die lokale Datei `app/config/mail.local.php` ausgelagert.
- Direkten Webzugriff auf den Konfigurationsordner über eine eigene `.htaccess` gesperrt.
- Technische Mailfehler werden nicht mehr im Browser ausgegeben, sondern nur noch protokolliert.
Technisch
- Gemeinsame SMTP-Konfiguration und PHPMailer-Erzeugung in `app/mail/SmtpMailerFactory.php` zentralisiert.
- Doppelte SMTP-Einstellungen aus Verifizierungs-, Erinnerungs- und Testmail entfernt.
- SMTP-Konfiguration wird beim Laden validiert und meldet fehlende oder ungültige Werte kontrolliert.
- Sichere Beispielkonfiguration und Dokumentation für neue Installationen ergänzt.
- `app/config/config.php` und ab dem nächsten Update auch `app/config/mail.local.php` bleiben außerhalb der Update-Pakete.
Behoben
- Fehlerhafte Include-Pfade auf der öffentlichen Aquarium-App-Seite und der Mail-Testseite korrigiert.
- Falschen Zurück-Link in der Wasserwerte-Ansicht korrigiert.
- Fehlerhafte, nicht vorhandene Login-Funktion beim Löschen von Wasserwerten ersetzt.
Sicherheit
- CSRF-Schutz für CO2-Einstellungen, CO2-Flaschenwechsel und deren Bearbeitung ergänzt.
- CO2-Wechsel und Wasserwert-Messungen können nicht mehr über einfache GET-Links gelöscht werden.
- Löschvorgänge auf POST-Anfragen mit gültigem CSRF-Token beschränkt.
- Mail-Testseiten auf angemeldete Administratoren und bestätigte POST-Anfragen beschränkt.
Technisch
- Doppelte Session-Starts auf öffentlichen Informationsseiten entfernt.
- Vorhandene PDO-Verbindung wird nun von db() wiederverwendet, statt eine zweite Verbindung zu öffnen.
- Produktive app/config/config.php bleibt bewusst außerhalb des Update-Pakets.
Hinzugefügt
- Zentrale Versions- und Changelog-Verwaltung eingeführt.
- Öffentliche Versionsübersicht unter changelog.php ergänzt.
- Aktuelle Versionsnummer im Footer der Homepage ergänzt.
- Automatische Auswertung der neuesten Version direkt aus dieser Changelog-Datei ergänzt.
Technisch
- Neue Hilfsdatei app/helpers/version.php zum sicheren Einlesen des Änderungsverlaufs angelegt.
- Die Versionsanzeige benötigt keine zusätzliche Datenbanktabelle.
- Dokumentation zum zukünftigen Hochzählen der Versionen in VERSIONIERUNG.md ergänzt.