PHPackages                             schachbulle/contao-fernschach-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. schachbulle/contao-fernschach-bundle

ActiveContao-bundle[Utility &amp; Helpers](/categories/utility)

schachbulle/contao-fernschach-bundle
====================================

Verwaltet den Fernschachbetrieb mit Meldeformularen für Einzel- und Mannschaftsturniere, Titeln, Titelnormen und Kontoauszügen.

2.0.0(2w ago)0165LGPL-3.0-or-laterPHPPHP ^7.4 || ^8.0

Since Feb 24Pushed 1w ago1 watchersCompare

[ Source](https://github.com/Samson1964/contao-fernschach-bundle)[ Packagist](https://packagist.org/packages/schachbulle/contao-fernschach-bundle)[ Docs](https://github.com/Samson1964/contao-fernschach-bundle)[ RSS](/packages/schachbulle-contao-fernschach-bundle/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (49)Versions (151)Used By (0)

Fernschach-Verwaltung
=====================

[](#fernschach-verwaltung)

Contao-Erweiterung für den Fernschachbetrieb eines Verbandes: Mitglieder- und Spielerverwaltung, Turniere mit Online-Anmeldung und -Bewerbung, drei getrennte Beitrags- und Nenngeldkonten je Spieler, Titel und Titelnormen, Serienmails sowie der Import der ICCF-Wertungslisten.

Entwickelt für und im Einsatz beim [Deutschen Fernschachbund (BdF)](https://www.bdf-fernschachbund.de/).

---

Inhalt
------

[](#inhalt)

- [Voraussetzungen](#voraussetzungen)
- [Installation](#installation)
- [Ersteinrichtung](#ersteinrichtung)
- [Einstellungen](#einstellungen)
- [Backend-Module](#backend-module)
- [Frontend-Module](#frontend-module)
- [Inhaltselement](#inhaltselement)
- [Rechteverwaltung](#rechteverwaltung)
- [Cronjobs](#cronjobs)
- [Import und Export](#import-und-export)
- [Serienmails](#serienmails)
- [Beitrittsformular](#beitrittsformular)
- [Datenbanktabellen](#datenbanktabellen)
- [Umstieg von 1.9.x auf 2.0.0](#umstieg-von-19x-auf-200)
- [Entwicklung](#entwicklung)
- [Weiterführende Dokumentation](#weiterf%C3%BChrende-dokumentation)
- [Lizenz](#lizenz)

---

Voraussetzungen
---------------

[](#voraussetzungen)

BausteinVersionPHP7.4 oder 8.xContao4.13 LTS oder 5.xMitinstalliert werden:

- `schachbulle/contao-helper-bundle` — gemeinsame Hilfsfunktionen und der Formularbaukasten der Meldeformulare
- `menatwork/contao-multicolumnwizard-bundle` — mehrspaltige Eingabefelder (Mitgliedschaften, Normen, Reset-Buchungen)
- `contao/newsletter-bundle` — Grundlage der Serienmail-Funktion
- `phpoffice/phpspreadsheet` — Excel-Ausgabe von Spieler- und Statistikdaten

Installation
------------

[](#installation)

Über den **Contao Manager**: nach `schachbulle/contao-fernschach-bundle` suchen und installieren.

Auf der Kommandozeile:

```
composer require schachbulle/contao-fernschach-bundle
```

Anschließend die Datenbank aktualisieren — im Contao Manager unter „System-Wartung → Datenbank aktualisieren“ oder auf der Kommandozeile:

```
vendor/bin/contao-console contao:migrate
```

Ersteinrichtung
---------------

[](#ersteinrichtung)

1. **Datenbank aktualisieren** (siehe oben). Dabei entstehen 17 eigene Tabellen sowie zusätzliche Felder in `tl_member`, `tl_user`, `tl_user_group`, `tl_module`, `tl_content` und `tl_newsletter_recipients`.
2. **Einstellungen pflegen** unter *System → Einstellungen → Fernschach-Verwaltung*. Ohne Absenderangaben verschickt die Erweiterung keine brauchbaren E-Mails.
3. **Rechte vergeben** in den Benutzergruppen (siehe [Rechteverwaltung](#rechteverwaltung)). Ohne Rechte sind die Schaltflächen in den Listen ausgegraut.
4. **Frontend-Module anlegen**, sofern Turnieranmeldung oder Kontoauszug im Frontend angeboten werden sollen.

Einstellungen
-------------

[](#einstellungen)

Alle Einstellungen stehen unter *System → Einstellungen* in der Legende **Fernschach-Verwaltung**.

EinstellungBedeutungBeitrittsformularContao-Formular, dessen Absendungen automatisch einen Spielerdatensatz anlegen (siehe [Beitrittsformular](#beitrittsformular))Globalen Reset-Buchungsdatensatz aktivierenSchaltet die verbandsweiten Saldo-Resets ein. Ist die Option aus, werden vorhandene Reset-Buchungen beim Aufruf der Buchungen eines Spielers gelöschtReset-BuchungsdatensätzeBeliebig viele Resets mit Nummer, Datum, Saldo und den betroffenen Konten (Haupt-, Beitrags-, Nenngeldkonto). Sie gelten für **alle** SpielerStandard-MitgliedergruppeFrontend-Mitgliedergruppe für Konten ohne BdF-Mitgliedschaft. Leer lassen, wenn nicht gewünschtBdF-MitgliedergruppeFrontend-Mitgliedergruppe für Konten mit BdF-Mitgliedschaft. Der Cronjob *Mitgliederprüfung* trägt sie automatisch ein und ausSerienmail-VerteilerNewsletter-Archiv, dessen Empfängerliste für Serienmails benutzt wirdE-Mail-Absender / E-Mail-AdresseAbsender aller automatisch verschickten E-MailsName / E-Mail-Adresse TurnierdirektorEmpfänger der MannschaftsmeldungenHinweis KontoauszugText, der im Frontend statt des Kontoauszugs erscheint, wenn der angemeldete Benutzer kein BdF-Mitglied istTurnieranmeldungPrüfoptionen für Anmeldungen — **noch nicht implementiert**Backend-Module
--------------

[](#backend-module)

Alle Module liegen im eigenen Backend-Bereich **Fernschach-Verwaltung**, der an erster Stelle der Navigation eingefügt wird.

### Spieler

[](#spieler)

Die zentrale Personendatenbank: Stammdaten, zwei Anschriften, Kontaktdaten, BdF- und ICCF-Mitgliedsnummer, Mitgliedschaftszeiträume, Spielberechtigungen, Qualifikationen, Ehrungen, Titelnormen und SEPA-Mandate.

Untertabellen zu jedem Spieler:

- **Hauptkonto**, **Beitragskonto**, **Nenngeldkonto** — drei getrennte Buchungskonten mit Soll/Haben, Kategorie, Verwendungszweck und laufendem Saldo
- **Titel** — verliehene Titel mit Datum
- **E-Mails** — an den Spieler verschickte Nachrichten samt Versandstatus
- **E-Mail-Vorlagen** — wiederverwendbare Textbausteine für den Mailversand

Zusätzliche Schaltflächen in der Kopfzeile:

SchaltflächeWirkungExcel-ExportAusgewählte Spieler als Excel-Datei ausgebenSpieler importierenSpieler aus einer CSV-Datei anlegen oder ergänzenBuchungen importierenKontobuchungen aus einer CSV-Datei einlesenBuchungen verschiebenBuchungen zwischen den drei Konten aller Spieler sortierenSerienmail-Empfänger setzenEmpfängerliste des gewählten Newsletter-Archivs aus den Spielerdaten aufbauen### Turniere

[](#turniere)

Turnierkategorien und Turniere in einer Baumstruktur. Je Turnier: Kennziffer, Klassenzuordnung, Melde- und Startdatum, Nenngeld, Teilnehmerhöchstzahl, Meldungen je Spieler/Mannschaftsleiter, Beschränkungen nach Geschlecht und Alter, Turnierleitung sowie die Schalter für Online-Anmeldung und Bewerbung.

Der Baum ist bewusst flach: Unter einer **Kategorie** stehen weitere Kategorien und Turniere, unter einem **Turnier** nur noch **Turniergruppen**, unter einer Gruppe nichts mehr. Die Auswahlliste bietet nur die an der jeweiligen Stelle erlaubten Arten an; wird ein Datensatz durch Kopieren oder Verschieben an eine unzulässige Stelle gebracht, weist das Speichern die Art zurück.

Untertabellen: **Meldungen**, **Bewerbungen**, die **Teilnehmerliste** und — bei Mannschaftsturnieren — die **Mannschaften** mit ihrer Aufstellung.

Bei einem Mannschaftsturnier ist die Schaltfläche *Anmeldungen bearbeiten*abgeblendet: Dort meldet nicht der einzelne Spieler, sondern der Mannschaftsleiter eine Mannschaft. Liegt in den Anmeldungen eines Mannschaftsturniers noch Altbestand aus der Zeit vor den Mannschaftstabellen, bleibt sie anklickbar und nennt im Titel die Zahl der Einträge.

Die Schaltfläche **Turnierstatistik** wertet Turniere, Meldungen und Bewerbungen nach Tag, Monat und Jahr sowie nach Turniertyp aus.

#### Löschen von Meldungen und Bewerbungen

[](#löschen-von-meldungen-und-bewerbungen)

Eine Anmeldung hinterlässt eine Nenngeld-Sollbuchung auf dem Konto des Spielers. Wird die Anmeldung gelöscht, verschwindet die Buchung mit — sonst bliebe eine Forderung für ein Turnier stehen, zu dem niemand mehr gemeldet ist. Die Sicherheitsabfrage vor dem Löschen weist darauf hin; über den Papierkorb lässt sich eine Buchung **nicht** zurückholen, sie steht aber mit Betrag und Verwendungszweck im Systemprotokoll.

Eindeutig ist die Zuordnung nur, wenn die Buchung in `meldungId` die Nummer der Meldung trägt. Buchungen ohne diese Verknüpfung — die der Mannschaftsmeldungen und alle älteren Datensätze — werden **nicht** von selbst gelöscht: Meldet ein Mannschaftsleiter zwei Mannschaften zum selben Turnier, gehören beide Buchungen zu verschiedenen Meldungen. Stattdessen erscheint nach dem Löschen ein Hinweis, der die nach Spieler und Turnier passenden Buchungen benennt und sie auf Wunsch entfernt.

### Konten

[](#konten)

Freier Kontenrahmen mit Buchungen — als **Entwicklungsversion** gekennzeichnet und noch nicht für den Wirkbetrieb gedacht. Die Schaltfläche *Standardkonten anlegen* erzeugt einen einfachen Kontenrahmen, solange noch keine Konten vorhanden sind.

### ICCF-Rating

[](#iccf-rating)

Wertungslisten, ICCF-Spieler und deren Wertungszahlen. Eine Liste wird als CSV-Datei hochgeladen und anschließend blockweise eingelesen; eine Fortschrittsanzeige hält den Vorgang nach (siehe [Import und Export](#import-und-export)).

### Mitgliederstatistik

[](#mitgliederstatistik)

Altersstrukturen definieren und die Mitgliederzahlen zu einem Stichtag nach Altersgruppe und Geschlecht als Excel-Datei ausgeben.

### Dokumentation

[](#dokumentation)

Zeigt die Kurzdokumentation der Erweiterung im Backend an.

Frontend-Module
---------------

[](#frontend-module)

ModulZweckMeldeformular Spieler-TurnieranmeldungAnmeldung des angemeldeten Mitglieds zu einem TurnierMeldeformular MannschaftsanmeldungMeldung einer kompletten Mannschaft durch den MannschaftsführerListe der TitelträgerAlle Spieler mit einem bestimmten TitelTitel und Normen ausgebenTitel und Normen eines wählbaren ZeitraumsGlückwunschliste Titel und NormenWie oben, zusätzlich auf eine Höchstzahl begrenztKontoauszug BdF-MitgliedBuchungen und Kontostand des angemeldeten Mitglieds### Meldeformular Spieler-Turnieranmeldung

[](#meldeformular-spieler-turnieranmeldung)

EinstellungBedeutungFormular an Mitglied bindenNur verifizierte BdF-Mitglieder dürfen das Formular sehenTurnierkategorieOberste Kategorie, aus der Turniere angeboten werden. Ohne Auswahl gelten alle KategorienEinleitungstextText über der TurnierauswahlBewerbungsformularSpeichert die Eingabe als Bewerbung statt als AnmeldungRadio-Buttons bei TurnierauswahlTurnierauswahl als Radio-Buttons statt als AuswahllisteAngeboten werden nur Turniere, die veröffentlicht sind, deren übergeordnete Kategorien ebenfalls veröffentlicht sind, deren Meldeschluss noch nicht verstrichen ist und deren Beschränkungen (Klasse, Geschlecht, Alter, Teilnehmerhöchstzahl) zum Spieler passen.

**Beitrag und Nenngeld.** Ohne SEPA-Vereinbarung für den Beitrag muss das Beitragskonto ausgeglichen sein — sonst erscheint statt der Turnierauswahl ein Hinweis mit dem Kontostand. Beim Nenngeld entscheidet je Turnier, ob eine SEPA-Vereinbarung vorliegt oder das Guthaben das Nenngeld deckt; verglichen wird auf den Cent genau.

**Damit ein Turnier überhaupt erscheint**, muss eine übergeordnete Turnierkategorie das Feld *In Turnieranmeldung anzeigen* gesetzt haben — sie liefert die Gruppenüberschrift der Auswahl. Fehlt sie, taucht das Turnier ohne weitere Meldung nicht auf.

**Aufbau.** Über der Turnierauswahl stehen die eigenen Daten mit den Kontoständen, die offenen Qualifikationen und die letzten Meldungen. Die Turniere sind nach Kategorie gruppiert, in der Auswahlliste als `optgroup`, bei eingeschalteten Radio-Buttons als Abschnitt mit Überschrift. Seit Version 2.7.0 bringt das Formular sein Aussehen selbst mit (`fernschach_formular.css`, dieselbe Datei wie beim Mannschaftsformular); vom Theme wird nichts übernommen. Ein JavaScript braucht es nicht.

Nach dem Absenden entstehen die Meldung, die Nenngeld-Sollbuchung und je eine E-Mail an die Turnierleitung und an den Spieler. Anschließend erscheint eine **Bestätigungsseite** mit den letzten Meldungen des Spielers; ein erneutes Absenden durch Aktualisieren der Seite ist damit ausgeschlossen.

### Meldeformular Mannschaftsanmeldung

[](#meldeformular-mannschaftsanmeldung)

EinstellungBedeutungFormular an Mitglied bindenNur verifizierte BdF-Mitglieder dürfen das Formular sehenDer angemeldete Benutzer ist zugleich der Mannschaftsführer; seine Daten stehen über dem Formular und werden nicht abgefragt. Angeboten werden veröffentlichte Turniere vom Typ **Mannschaftsturnier** mit aktiver Online-Anmeldung, deren Meldeschluss noch nicht verstrichen ist.

**Zahl der Bretter.** Wie viele Spieler zu melden sind, steht am Turnier im Feld **Bretter**. Sobald ein Turnier gewählt ist, entstehen genau so viele Eingabefelder — vier Bretter bei einem Vierermannschaftsturnier, sechs bei einem Sechsermannschaftsturnier. Ohne Angabe am Turnier bleibt es bei vier. Wechselt der Benutzer das Turnier, bleiben bereits eingetragene Spieler erhalten, soweit das neue Turnier genügend Bretter hat.

**Spielerauswahl.** Ab dem zweiten Zeichen schlägt das Formular passende Mitglieder vor; gesucht wird gleichzeitig in Nachname, Vorname, BdF-Mitgliedsnummer und ICCF-ID. Mehrere durch Leerzeichen getrennte Wörter müssen alle zutreffen, sodass sich mit `Muster Anna` gezielt eine Person finden lässt. Die Liste ist auf 15 Einträge begrenzt und lässt sich mit den Pfeiltasten bedienen. Vorgeschlagen werden nur Spieler, die zum heutigen Tag Mitglied sind und deren Beitragskonto ausgeglichen ist (bzw. die ein SEPA-Mandat für den Beitrag hinterlegt haben).

Die Vorschläge liefert die Route `/fernschach/spieler-suche`. Sie gibt nur angemeldeten Frontend-Mitgliedern Auskunft und antwortet sonst mit HTTP 403 — die Mitgliederliste ist kein öffentliches Verzeichnis.

**Prüfung.** Vor dem Abschicken wird geprüft, ob Turnier, Vereinsname, Mannschaftsbezeichnung und alle Bretter ausgefüllt sind und ob ein Spieler doppelt aufgestellt wurde. Dieselbe Prüfung läuft anschließend noch einmal auf dem Server, ergänzt um die Frage, ob die gemeldeten Spieler überhaupt meldefähige BdF-Mitglieder sind. Fehlerhafte Felder werden rot markiert; die bereits gemachten Eingaben bleiben erhalten.

**Mehrere Mannschaften.** Ein Mannschaftsleiter darf für dasselbe Turnier so viele Mannschaften melden, wie er möchte. Ein Turnier verschwindet nach einer Meldung also nicht aus der Auswahl; das Feld *Meldungen je Spieler* wirkt hier nicht.

**Beitrag.** Melden darf nur, wer den Beitrag geregelt hat: SEPA-Vereinbarung für den Beitrag oder ein Beitragskonto, das nicht im Minus steht. Das gilt für den Mannschaftsleiter — sonst ist das Formular gesperrt — **und für jeden aufgestellten Spieler**; ein Brett mit einem Spieler im Minus wird abgewiesen und die Meldung nicht gespeichert.

**Nenngeld.** Das Nenngeld der Mannschaft geht zulasten des Mannschaftsleiters. Angeboten wird ein Turnier deshalb nur, wenn er es aufbringen kann — entweder mit einer **SEPA-Vereinbarung für das Nenngeld** (dann wird abgebucht, der Kontostand ist gleichgültig) oder mit einem **Guthaben auf dem Nenngeldkonto, das das Nenngeld deckt**. Da das Nenngeld je Turnier verschieden ist, wird das für jedes Turnier einzeln entschieden; verglichen wird auf den Cent genau.

Fehlt beides, nennt das Formular die betroffenen Turniere mit ihrem Nenngeld und den aktuellen Kontostand, statt einfach nichts anzubieten. Unmittelbar vor der Buchung wird noch einmal geprüft — zwischen Aufbau und Absenden des Formulars kann sich der Kontostand geändert haben.

**Was gespeichert wird.** Die Mannschaft landet in `tl_fernschach_turniere_mannschaften`, ihre Aufstellung Brett für Brett in `tl_fernschach_turniere_mannschaften_spieler`. Der Mannschaftsleiter bekommt die Nenngeld-Sollbuchung, jeder aufgestellte Spieler einen Nenngeld-Datensatz über **0 €** — der belastet nichts und hält nur fest, dass er zu diesem Turnier gemeldet ist. Im Backend führt die Schaltfläche **Mannschaften bearbeiten** am Turnier dorthin.

**Bestätigung.** Nach dem Speichern leitet das Modul auf sich selbst um (`send=1`) und zeigt eine Bestätigungsseite, auf der Turnier, Nenngeld, Verein, Mannschaft, Mannschaftsführer, die vollständige Aufstellung und die Bemerkungen noch einmal aufgeführt sind. Das Aktualisieren der Seite kann die Meldung damit nicht wiederholen. Parallel gehen zwei E-Mails heraus: an den Mannschaftsführer und an den Turnierdirektor aus den Einstellungen.

**Gestaltung.** Seit Version 2.2.0 bringt das Formular sein eigenes Aussehen und Verhalten mit (`fernschach_formular.css` und `mannschaftsmeldung.js` unter `bundles/contaofernschach/`); vom Theme wird nichts mehr übernommen. Die Farben und Abstände stehen als CSS-Variablen unter `.fernschach-formular` und lassen sich im Theme überschreiben, ohne die Regeln selbst anzufassen:

```
.fernschach-formular {
	--fs-farbe: #a0122b;
	--fs-radius: 0;
}
```

Ohne JavaScript zeigt das Formular keine Bretteingaben. Der Server weist eine solche Meldung ab, sodass keine unvollständige Aufstellung entstehen kann.

### Mehrfachmeldungen

[](#mehrfachmeldungen)

Am Turnier steht im Feld **Meldungen je Spieler**, wie oft sich derselbe Spieler für dieses Turnier melden darf. Die Voreinstellung ist **1**, der Wert 0 hebt die Begrenzung auf. Anmeldungen und Bewerbungen werden getrennt gezählt.

Ist die Zahl erreicht, taucht das Turnier im Meldeformular gar nicht mehr auf. Zusätzlich prüft das Speichern noch einmal — sonst ließe sich die Sperre über den Zurück-Knopf oder einen zweiten Browsertab umgehen. Eine abgewiesene Meldung wird im Systemprotokoll vermerkt.

**Für Mannschaftsturniere gilt das Feld nicht.** Ein Mannschaftsleiter darf beliebig viele Mannschaften seines Vereins melden („Musterstadt I", „Musterstadt II", …); ein bereits gemeldetes Turnier bleibt in der Auswahl stehen. Da es dort keine Sperre gibt, wird jede Mannschaftsmeldung im Systemprotokoll vermerkt — nur daran lässt sich eine versehentliche Doppelmeldung nachträglich erkennen.

### Kontoauszug BdF-Mitglied

[](#kontoauszug-bdf-mitglied)

EinstellungBedeutungBuchungen Minimum / MaximumWie viele Buchungen mindestens und höchstens erscheinen (0 = alle)Ab DatumFrühestes Buchungsdatum, das angezeigt werden darfKontostand anzeigenBlendet den Saldo einResetbuchung PflichtZeigt Kontostand und Auszug nur, wenn es eine Resetbuchung ab dem 01.04.2023 gibtKonten auswählenWelche der drei Konten erscheinen — Reihenfolge per Drag &amp; DropHauptkonto ausblendenBlendet das Hauptkonto aus, wenn dessen Saldo 0 ist### Titel und Normen

[](#titel-und-normen)

Beide Normen-Module haben eine Auswahl **Zeitraum** (letzter Monat bis unbegrenzt); die Glückwunschliste zusätzlich eine **maximale Anzahl**. Das Modul *Liste der Titelträger* erwartet die Auswahl eines Titels.

Inhaltselement
--------------

[](#inhaltselement)

**Zusagen zu Einladungsturnieren** (`fernschachverwaltung_zusagen`) gibt die Teilnehmer aus, die einem Einladungsturnier zugesagt haben. Ohne Auswahl eines Turniers erscheinen alle aktiven, noch nicht gestarteten Einladungsturniere.

Rechteverwaltung
----------------

[](#rechteverwaltung)

Die Erweiterung meldet zwei eigene Rechtegruppen an, die in Benutzern und Benutzergruppen gepflegt werden.

**Spieler-Rechte** (`fernschach_spieler`): Anlegen, Importieren, Exportieren, Mehrfachbearbeitung, Bearbeiten, Kopieren, Löschen, Buchungen anzeigen, Veröffentlichen-Status setzen, Infobox anzeigen, Fertig-Status setzen.

**Buchungen-Rechte** (`fernschach_konto`): Importieren, Anlegen, Bearbeiten, Löschen, Kopieren, Veröffentlichen-Status setzen, Infobox anzeigen, Fertig-Status setzen, Mehrfachbearbeitung.

Zusätzlich gibt es die Rechte **Meldungen** (Anlegen, Löschen) und das Feld **Signatur**, das im Serienmailversand unter den Text gesetzt wird.

Cronjobs
--------

[](#cronjobs)

Alle Aufträge hängen am Contao-Cron und laufen ohne weitere Einrichtung, sobald der Contao-Cron eingerichtet ist.

AuftragTaktAufgabeMitgliedschaftsprüfungstündlichSetzt am Spieler das Feld „Mitglied“ passend zu seinen MitgliedschaftszeiträumenMitgliederprüfungstündlichGleicht Frontend-Mitglieder mit Spielerdatensätzen ab und pflegt die BdF-MitgliedergruppeNenngeldprüfungstündlichSucht Nenngeldkonten mit negativem SaldoMitgliedschaftsendetäglichBeendet zum Vortag ausgelaufene MitgliedschaftenStreichungtäglichHält Streichungsdatum und Mitgliedschaftsende widerspruchsfreiDie Intervalle einiger Prüfungen lassen sich über die Voreinstellungen `fernschach_intervall_memberbridgeCheck` und `fernschach_intervall_membershipsCheck`steuern.

Import und Export
-----------------

[](#import-und-export)

### Spieler importieren

[](#spieler-importieren)

CSV-Datei mit Kopfzeile, Felder durch **senkrechte Striche** (`|`) getrennt. Die Namen in der Kopfzeile bestimmen die Zuordnung, unter anderem `mitgliednr`, `mitgliednr_int`, `nachname`, `vorname`, `geburtstag`, `strasse`, `plz`, `ort`, `email1`. Bereits vorhandene Spieler werden anhand der Mitgliedsnummer ergänzt statt doppelt angelegt. Der Vorgang wird nach `var/logs/fernschach-verwaltung.log`mitgeschrieben.

### Buchungen importieren

[](#buchungen-importieren)

CSV-Datei mit Kopfzeile, Felder durch **Semikolon** getrennt. Buchungen werden dem Spieler über seine Mitgliedsnummer zugeordnet; unbekannte Mitgliedsnummern legen einen neuen Spieler an. Anschließend empfiehlt sich *Buchungen verschieben*, damit Beitrags- und Nenngeldbuchungen in den richtigen Konten landen.

### Spieler exportieren

[](#spieler-exportieren)

Excel-Datei der in der Liste gefilterten Spieler. Auf Wunsch enthält sie einen aus Geburtsdatum und Mitgliedsnummer gebildeten Kenncode zu einem Stichtag.

Die letzte Spalte **Interner Bereich** zeigt, ob dem Spieler ein Frontend-Mitgliedskonto zugeordnet ist: *Ja*, *Ja (gesperrt)* bei einem deaktivierten Konto oder *Nein*. Ohne Konto kann sich der Spieler nicht anmelden und weder Turniermeldungen abgeben noch seinen Kontoauszug einsehen.

### ICCF-Wertungsliste importieren

[](#iccf-wertungsliste-importieren)

Im Modul *ICCF-Rating* eine Wertungsliste anlegen, deren Zeile aufrufen und *CSV importieren* wählen. Erwartet wird eine semikolongetrennte Datei mit den Spalten

```
ICCF-ID;Land;Titel;Name (Nachname, Vorname);Partien;Wertung;Abweichung;Kennzeichen

```

Die Datei wird nach `system/tmp` hochgeladen; anschließend liest die Route `/contao/fernschach/iccf-import` sie in Blöcken zu 500 Zeilen ein und die Fortschrittsanzeige zeigt den Stand. Alle bisherigen Wertungen der Liste werden vorher auf „nicht veröffentlicht“ gesetzt, sodass nach dem Import nur der Inhalt der neuen Datei aktiv ist. Bekannte Spieler werden nur aktualisiert, wenn die Liste jünger ist als ihr letzter Stand; jede Änderung wird im internen Feld des Spielers protokolliert.

Serienmails
-----------

[](#serienmails)

E-Mails an Spieler entstehen in der Untertabelle **E-Mails** eines Spielers oder über den Serienmailversand. In Betreff, Text und Signatur dürfen Platzhalter der Form `##name##` sowie Contao-Insert-Tags stehen. Zur Verfügung stehen unter anderem:

PlatzhalterInhalt`##content##`Der eingegebene Nachrichtentext`##signatur##`Die Signatur des Backend-Benutzers`##spieler_nachname##`, `##spieler_vorname##`Name des Spielers`##spieler_titel##`, `##spieler_anrede##`, `##spieler_briefanrede##`Anrede und Titel`##spieler_geschlecht##`Geschlecht`##spieler_geburtstag##`, `##spieler_geburtsort##`Geburtsdaten`##spieler_verstorben##`, `##spieler_sterbetag##`, `##spieler_sterbeort##`SterbedatenDie Vorschaufunktion im Bearbeitungsformular zeigt die fertige Nachricht mit aufgelösten Platzhaltern.

Über *Serienmail-Empfänger setzen* wird die Empfängerliste des in den Einstellungen gewählten Newsletter-Archivs aus den Spielerdaten aufgebaut. Ein `parseTemplate`-Hook ergänzt beim Newsletterversand die spielerbezogenen Platzhalter.

Beitrittsformular
-----------------

[](#beitrittsformular)

Wird in den Einstellungen ein Contao-Formular als Beitrittsformular hinterlegt, legt jede Absendung dieses Formulars automatisch einen veröffentlichten Spielerdatensatz an. Ausgewertet werden die Formularfelder `nachname`, `vorname`, `strasse`, `plz`, `ort`, `telefon`, `email` und `mitgliedsnummer`. Alle weiteren bekannten Felder — `geburtstag`, `staat`, `bdf_mitglied`, `fernschach_erfolge`, `nahschach_erfolge`, `elo`, `dwz`, `beitrittsmonat`, `beitrittszustimmung` — sammelt die Erweiterung als Fließtext im Feld *Informationen zum Beitritt*. Der Vorgang wird im Systemprotokoll vermerkt.

Datenbanktabellen
-----------------

[](#datenbanktabellen)

TabelleInhalt`tl_fernschach_spieler`Spieler- und Mitgliederstammdaten`tl_fernschach_spieler_konto`Hauptkonto`tl_fernschach_spieler_konto_beitrag`Beitragskonto`tl_fernschach_spieler_konto_nenngeld`Nenngeldkonto`tl_fernschach_spieler_titel`Verliehene Titel`tl_fernschach_spieler_mails`Verschickte E-Mails`tl_fernschach_spieler_mailtemplates`E-Mail-Vorlagen`tl_fernschach_turniere`Turnierkategorien und Turniere`tl_fernschach_turniere_meldungen`Anmeldungen`tl_fernschach_turniere_bewerbungen`Bewerbungen`tl_fernschach_turniere_spieler`Teilnehmerzuordnung`tl_fernschach_turniere_mannschaften`Gemeldete Mannschaften`tl_fernschach_turniere_mannschaften_spieler`Aufstellung je Mannschaft, ein Satz pro Brett`tl_fernschach_konten`Kontenrahmen (Entwicklungsversion)`tl_fernschach_konten_buchungen`Buchungen des Kontenrahmens`tl_fernschach_mitgliederstatistik`Altersstrukturen`tl_fernschach_iccf_ratinglists`ICCF-Wertungslisten`tl_fernschach_iccf_players`ICCF-Spieler`tl_fernschach_iccf_ratings`ICCF-WertungszahlenUmstieg von 1.9.x auf 2.0.0
---------------------------

[](#umstieg-von-19x-auf-200)

Version 2.0.0 läuft unter Contao 4.13 **und** Contao 5 sowie unter PHP 8. An der Datenbank ändert sich nichts, an zwei Stellen aber am Verhalten:

- **codefog/contao-haste entfällt.** Die Erweiterung braucht Haste nicht mehr. Wird Haste von keiner anderen Erweiterung benutzt, kann es entfernt werden.
- **Der ICCF-Import läuft über eine Route.** Die direkt aufrufbare Datei `bundles/contaofernschach/Import_ICCF_Rating.php` ist entfallen; an ihre Stelle tritt `/contao/fernschach/iccf-import`. Nach dem Update ist ein Cache-Neuaufbau nötig, damit die Route bekannt wird:

    ```
    vendor/bin/contao-console cache:clear
    vendor/bin/contao-console cache:warmup
    ```
- **Das Auswahlfeld für das Notification Center ist entfallen.** Es war ohne Funktion — das Meldeformular verschickt seine E-Mails selbst.
- **Die Importprotokolle liegen jetzt unter `var/logs/`.** Sie hießen und heißen `fernschach-verwaltung.log`, `fernschachverwaltung.log` und `fernschachverwaltung_buchungen.log`; nur der Weg dorthin ist ein anderer, weil die Contao-Funktion `log_message()` entfallen ist.

Der vollständige Änderungsstand steht in der [CHANGELOG.md](CHANGELOG.md).

Entwicklung
-----------

[](#entwicklung)

Die Erweiterung bringt kein eigenes `vendor/`-Verzeichnis mit. Die Unit-Tests laufen mit einem separat installierten PHPUnit 9; die Contao-Klassen kommen über die Umgebungsvariable `CONTAO_AUTOLOAD` aus einer beliebigen Contao-Installation:

```
CONTAO_AUTOLOAD=/pfad/zur/contao-installation/vendor/autoload.php vendor/bin/phpunit
```

Ohne `CONTAO_AUTOLOAD` überspringen sich die Tests, die Contao brauchen, statt mit einem Fehler abzubrechen.

Weiterführende Dokumentation
----------------------------

[](#weiterführende-dokumentation)

- [Überblick](docs/README.md)
- [Turnierarten](docs/TURNIERARTEN.md)
- [Anmeldungen zu Einzelturnieren](docs/TURNIERANMELDUNGEN_EINZEL.md)
- [Anmeldungen zu Mannschaftsturnieren](docs/TURNIERANMELDUNGEN_MANNSCHAFT.md)
- [Meldungen zuweisen](docs/MELDUNGEN_ZUWEISEN.md)
- [Wartungsarbeiten](docs/WARTUNG.md)

Lizenz
------

[](#lizenz)

LGPL-3.0-or-later — siehe [LICENSE](LICENSE).

**Frank Hoppe**

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance97

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Recently: every ~28 days

Total

150

Last Release

18d ago

Major Versions

0.21.11 → 1.0.02025-05-04

1.9.6 → 2.0.02026-08-02

PHP version history (3 changes)0.0.1PHP ^5.6 || ^7.0

0.15.0PHP ^5.6 || ^7 || ^8

2.0.0PHP ^7.4 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/53ee29e676dd83ca6683e27788cc7143a46d2bc1e10945ae37730bd4fec0c29c?d=identicon)[Samson1964](/maintainers/Samson1964)

---

Top Contributors

[![Samson1964](https://avatars.githubusercontent.com/u/4542730?v=4)](https://github.com/Samson1964 "Samson1964 (158 commits)")

---

Tags

contaoschachturnierfernschachbdf

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/schachbulle-contao-fernschach-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/schachbulle-contao-fernschach-bundle/health.svg)](https://phpackages.com/packages/schachbulle-contao-fernschach-bundle)
```

###  Alternatives

[metamodels/core

MetaModels core

10156.6k68](/packages/metamodels-core)[markocupic/calendar-event-booking-bundle

Contao Calendar Event Booking Bundle

125.3k1](/packages/markocupic-calendar-event-booking-bundle)[codefog/contao-news_categories

News Categories bundle for Contao Open Source CMS

3290.3k6](/packages/codefog-contao-news-categories)[terminal42/contao-node

Node bundle for Contao Open Source CMS

3078.1k6](/packages/terminal42-contao-node)[terminal42/contao-leads

Leads extension for Contao Open Source CMS; Store and manage form data with ease!

35181.9k12](/packages/terminal42-contao-leads)[heimrichhannot/contao-pwa-bundle

A bundle to provide progressive web app support for contao.

101.2k](/packages/heimrichhannot-contao-pwa-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
