Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
309 commits
Select commit Hold shift + click to select a range
3b90acd
fix(spieler): Anfrageparameter der Spielerstatistik pruefen
tombrain Oct 10, 2026
0ab6ed1
test: Addon spieler
tombrain Oct 10, 2026
6e599b1
changelog: 4.2.1 um Spielerstatistik ergaenzt
tombrain Oct 10, 2026
0684935
test: Snapshots der Statistikseite nach classlib-Fix aktualisiert
tombrain Oct 10, 2026
32f1e33
ci: Actions auf v5, Runner fest auf ubuntu-24.04
tombrain Oct 10, 2026
1ecf71b
fix(classlib): voelliger Gleichstand wie im Kern nach Teamnummer
tombrain Oct 10, 2026
262e2ff
fix(classlib): Handicap-Reihenfolge (HandS) in der Gesamttabelle
tombrain Oct 10, 2026
e365e2b
test: classlib und Kern muessen auf jedem Platz dasselbe Team zeigen
tombrain Oct 10, 2026
7ff27d9
changelog: 4.2.1 um Gleichstand und Handicap der classlib ergaenzt
tombrain Oct 10, 2026
ef0b348
fix(docker): Shell-Skripte immer mit LF auschecken
tombrain Oct 10, 2026
8dcb114
ci: Tests unter PHP 8.0, 8.3 und 8.4
tombrain Oct 10, 2026
94bf762
ci: Tests auch unter PHP 8.5
tombrain Oct 10, 2026
e9ec3f8
docker: Zip-Erweiterung, Mail-Faenger und Doku fuer den Web-Container
tombrain Oct 10, 2026
e210f48
docker: Uebersichtsseite der Addons mit zwei Beispielligen
tombrain Oct 10, 2026
3e0613d
fix: PHPMailer ueber Composer, Versandfehler als Meldung statt Abbruch
tombrain Oct 10, 2026
59efe03
fix(tipp): Links in Mails ohne REQUEST_SCHEME und ohne Anfrage-Parameter
tombrain Oct 10, 2026
b96d820
fix: "Liga per E-Mail" ohne PHP-Erweiterung zip mit Meldung statt Abb…
tombrain Oct 10, 2026
b7b3610
test: Mailversand
tombrain Oct 10, 2026
845ef7b
changelog: 4.2.1 um Mailversand, PHPMailer, Docker und PHP-Versionen …
tombrain Oct 10, 2026
a47f10b
fix(admin): Ergebnis-Editor nur fuer Spieltage, die es gibt
tombrain Oct 10, 2026
2094726
test: Snapshots nach der Mail-Umstellung aktualisiert
tombrain Oct 10, 2026
ef0fd4e
test: Countdown im Mini-Spielplan nicht minutengenau vergleichen
tombrain Oct 10, 2026
6b42b2a
fix: "Alle Ligen herunterladen" ohne zip mit Meldung, Zip im Ausgabeo…
tombrain Oct 10, 2026
7479ade
fix(spieler): Loeschen einer unbekannten Spalte aendert nichts
tombrain Oct 10, 2026
355d388
test: Download der Ligadateien, unbekannte Spalte der Spielerstatistik
tombrain Oct 10, 2026
88e2864
changelog: 4.2.1 um Download und Spielerstatistik ergaenzt
tombrain Oct 10, 2026
4b50af9
docs: PHP 8.5 als hoechste unterstuetzte Version
tombrain Oct 10, 2026
8c7d722
fix(security): Include-Dateien beenden sich bei Direktaufruf
tombrain Oct 10, 2026
df1389d
fix: Sprachauswahl ohne gesetzte Sprache in der Sitzung
tombrain Oct 10, 2026
20da5db
fix: Statistikdatei ohne Partien unbekannter Mannschaften
tombrain Oct 10, 2026
225c75a
changelog: 4.2.1 um Direktaufruf-Schutz, Sprachauswahl und Statistikd…
tombrain Oct 10, 2026
4ae4af5
fix(ticker): bei mehreren Ligen zeigt jede Liga nur ihre eigenen Spiele
tombrain Oct 10, 2026
14a01a2
fix(ticker): fehlende Liga in der Liste zeigt die Meldung statt fremd…
tombrain Oct 10, 2026
e4d45b7
fix(mini): Mini-Spielplan ohne Warnung, wenn zwei Teams nie aufeinand…
tombrain Oct 10, 2026
217b6e9
fix(classlib): findTeamName() liefert alle Treffer der unscharfen Suche
tombrain Oct 10, 2026
dc55b20
test: Ticker, Viewer und Mini-Spielplan ueber mehrere Ligen
tombrain Oct 10, 2026
2f01f38
docker: Demo-Seite mit einer und mit drei Ligen
tombrain Oct 10, 2026
aacf5a5
changelog: 4.2.1 um Ticker und Mini-Spielplan ueber mehrere Ligen erg…
tombrain Oct 10, 2026
3a5bd59
test: Zeilennummer im Snapshot der PDF-Optionen nachgezogen
tombrain Oct 10, 2026
b8c6087
fix: Zufallsspielplan verliert keine Mannschaft mehr
tombrain Oct 10, 2026
ad7c8ea
test: Zufallsspielplan ohne Ausnahme fuer den Shuffle-Fehler
tombrain Oct 10, 2026
6765c0f
fix(admin): PDF-Optionen nur mit installiertem PDF-Addon laden
tombrain Oct 10, 2026
9608fb5
chore: tote Reste des PDF-Addons und lmo-paintgraph.php entfernt
tombrain Oct 10, 2026
0c90a0c
changelog: 4.2.1 um PDF-Optionen und entfernte Reste ergaenzt
tombrain Oct 10, 2026
cb48246
Merge pull request #2 from tombrain/classlib-bugfixes
tombrain Oct 10, 2026
f345b70
docs: doppelten Inhalt der README entfernt
tombrain Oct 11, 2026
db51b3e
test: PHP-Dateien der Tests immer mit LF auschecken
tombrain Oct 11, 2026
dc5a317
chore(composer): nur noch eine composer.json, vendor/ im Hauptordner
tombrain Oct 11, 2026
cc8f159
feat(install): lmo-install richtet den LMO per Composer ein
tombrain Oct 11, 2026
20b25d3
feat(admin): Version und Update-Pruefung ueber Composer und Packagist
tombrain Oct 11, 2026
8090f11
changelog: Installation per Composer und Versionspruefung ueber Packa…
tombrain Oct 11, 2026
5f9f865
changelog: Version 4.3.0
tombrain Oct 11, 2026
15ff605
Merge pull request #3 from tombrain/composer-installation
tombrain Oct 11, 2026
e798045
fix: Update-Pruefung und lmo-install robuster
tombrain Oct 11, 2026
45f9ae6
chore: Funde der statischen Analyse im alten Code bereinigt
tombrain Oct 11, 2026
fc1e8b1
chore(phpstan): statische Analyse eingerichtet
tombrain Oct 11, 2026
fc03493
changelog: PHPStan und Korrekturen nach 4.3.0
tombrain Oct 11, 2026
aaaf70b
changelog: Version 4.3.1
tombrain Oct 11, 2026
4ba88b8
fix(classlib): Variablen sind auf jedem Weg gesetzt
tombrain Oct 11, 2026
ab63096
chore(phpstan): Classlib auf Stufe 1
tombrain Oct 11, 2026
15a0fe6
changelog: Classlib mit PHPStan Stufe 1
tombrain Oct 11, 2026
e9a1877
docs(classlib): Typangaben in den Kommentaren berichtigt
tombrain Oct 11, 2026
e5f7193
chore(phpstan): Classlib auf Stufe 2, Tests auf Stufe 5
tombrain Oct 11, 2026
0b5c4e1
changelog: Classlib Stufe 2, Tests Stufe 5
tombrain Oct 11, 2026
975640e
chore(phpstan): Classlib auf Stufe 3
tombrain Oct 11, 2026
60f0d1d
fix(classlib): unlesbares Spieltagsdatum bricht das Laden nicht mehr ab
tombrain Oct 11, 2026
06a7e27
chore(phpstan): Classlib auf Stufe 5
tombrain Oct 11, 2026
5353b48
changelog: Classlib Stufe 5, Spieltagsdatum
tombrain Oct 11, 2026
58784a2
changelog: Version 4.3.2
tombrain Oct 11, 2026
6bb1d1b
Merge pull request #5 from tombrain/phpstan-classlib
tombrain Oct 11, 2026
f054279
feat(liga): LigaDaten buendelt die Werte einer Ligadatei
tombrain Oct 11, 2026
c05a413
refactor(kreuztabelle): liest die Liga ueber LigaDaten
tombrain Oct 11, 2026
8419344
refactor(seiten): Tabelle, Ergebnisse und Spielplan lesen die Liga ue…
tombrain Oct 11, 2026
8306b69
changelog: LigaDaten
tombrain Oct 11, 2026
a6508da
refactor(liga): $ligaDaten gibt es ab init.php ueberall
tombrain Oct 11, 2026
d6d2020
refactor(liga): der gesamte LMO liest die Liga ueber $ligaDaten
tombrain Oct 11, 2026
2c6c286
changelog: LigaDaten im gesamten LMO
tombrain Oct 11, 2026
9e07390
docs(lmo): 62 alte Dateien nennen die Variablen, die sie erwarten
tombrain Oct 11, 2026
1fcf410
chore(phpstan): 33 alte Dateien auf Stufe 6, 31 auf Stufe 1
tombrain Oct 11, 2026
5cb4e40
changelog: Kopfkommentare und PHPStan-Stufen
tombrain Oct 11, 2026
81a5efe
Merge pull request #6 from tombrain/to_dataclass
tombrain Oct 11, 2026
be4b51a
refactor(liga): Vorgabewerte der Liga stehen in LigaDaten
tombrain Oct 11, 2026
035814a
changelog: Vorgabewerte in LigaDaten
tombrain Oct 11, 2026
b8d61f6
fix(lader): abgespeckte Lader ergaenzen fehlende Angaben wie der Haup…
tombrain Oct 11, 2026
fd3ff01
changelog: abgespeckte Lader
tombrain Oct 11, 2026
a107492
Merge pull request #7 from tombrain/ligadaten-vorgabewerte
tombrain Oct 11, 2026
98f8f7f
feat(liga): LigaDatei liest das Format der Ligadatei
tombrain Oct 11, 2026
b4eed27
fix(classlib): eckige Klammern in Werten beenden keinen Abschnitt mehr
tombrain Oct 11, 2026
f8e5bb6
changelog: LigaDatei, Klammern in der classlib
tombrain Oct 11, 2026
a3be7bb
refactor(liga): Tabelle fuer den Abschnitt [Options]
tombrain Oct 11, 2026
c66493b
changelog: Tabelle fuer [Options]
tombrain Oct 11, 2026
70ea462
refactor(liga): [Options] wird aus derselben Tabelle gespeichert
tombrain Oct 11, 2026
96ad7b2
changelog: [Options] lesen und speichern aus einer Tabelle
tombrain Oct 11, 2026
f077fc9
refactor(liga): Mannschaften lesen und speichern ueber LigaDaten
tombrain Oct 11, 2026
6494940
changelog: Mannschaften ueber LigaDaten
tombrain Oct 11, 2026
4e4efbd
refactor(liga): News, Spieltage und Partien liest LigaDaten
tombrain Oct 11, 2026
b93e7e8
changelog: Spieltage ueber LigaDaten
tombrain Oct 11, 2026
c86c1ca
refactor(liga): die ganze Ligadatei wird ueber LigaDaten gespeichert
tombrain Oct 11, 2026
028d745
changelog: Speichern ueber LigaDaten
tombrain Oct 11, 2026
42ddd2d
fix(lader): senkrechter Strich schneidet Werte nicht mehr ab; ein Abl…
tombrain Oct 11, 2026
0704343
changelog: senkrechter Strich, ein Ablauf fuer alle Lader
tombrain Oct 11, 2026
39a7eab
fix(liga): vor dem Laden alle Felder leeren; Handicap nur fuer Spieltage
tombrain Oct 11, 2026
a200956
changelog: Felder vor dem Laden leeren
tombrain Oct 11, 2026
ae1843d
feat(liga): Rohdaten der Ligadatei mit Laden und Speichern als Paar
tombrain Oct 11, 2026
7360885
changelog: Rohdaten der Ligadatei
tombrain Oct 11, 2026
8f4e501
refactor(liga): LigaDaten ist die Bruecke auf den Rohdaten
tombrain Oct 11, 2026
46bfc20
changelog: Bruecke auf den Rohdaten
tombrain Oct 11, 2026
f6136df
Merge pull request #8 from tombrain/liga-leser
tombrain Oct 11, 2026
431a5de
refactor(classlib): Ligadateien ueber die Rohdaten lesen und schreiben
tombrain Oct 11, 2026
316aba9
changelog: classlib ueber die Rohdaten
tombrain Oct 11, 2026
35ac50e
feat(liga): LigaDatei::liesAbschnitt liest einen einzelnen Abschnitt
tombrain Oct 11, 2026
1b9c873
refactor(listen): Ligalisten lesen [Options] ueber LigaDatei
tombrain Oct 11, 2026
43382bb
changelog: Ligalisten ueber LigaDatei
tombrain Oct 11, 2026
0ddf9f0
refactor(admin): Spielplanvorlage aus den Rohdaten uebernehmen
tombrain Oct 11, 2026
1dbfd2b
refactor(tipp): Tippuebersicht und Erinnerungsmail lesen Ligen ueber …
tombrain Oct 11, 2026
d4d5273
changelog: Spielplanvorlage und Tippspiel ueber die gemeinsamen Leser
tombrain Oct 11, 2026
516e3ef
refactor(liga): Spielplan eines Spieltags ueber LigaDaten::liesSpielplan
tombrain Oct 11, 2026
7dae21e
changelog: Spielplan eines Spieltags ueber die Bruecke
tombrain Oct 11, 2026
dd7d6fc
refactor(admin): Benutzerverwaltung liest Liganamen ueber LigaDatei
tombrain Oct 11, 2026
e3f1276
refactor(liga): Ligadateien immer komplett lesen
tombrain Oct 11, 2026
be7731c
changelog: Ligadateien immer komplett lesen
tombrain Oct 11, 2026
25013e5
refactor(tipp): Tippuebersicht und Erinnerungsmail greifen ueber die …
tombrain Oct 11, 2026
5a53fef
changelog: Tippspiel liest Spiele ueber die Rohdaten
tombrain Oct 11, 2026
3d09cfa
fix(docker): Web-Container bindet src/ ein
tombrain Oct 11, 2026
d57dfde
Merge pull request #9 from tombrain/classlib-rohdaten
tombrain Oct 11, 2026
1bef05f
feat(liga): Einstellungen mit Vorgabewerten und Zugriffsmethoden an d…
tombrain Oct 11, 2026
9305aa7
refactor(tipp): Tippspiel-Lader nutzen Einstellungen und Zugriffsmeth…
tombrain Oct 11, 2026
a0e908e
changelog: Einstellungen und Zugriffsmethoden
tombrain Oct 11, 2026
f927446
refactor(liga): Name zum Anzeigen an der Mannschaft (anzeigename)
tombrain Oct 11, 2026
5de3b26
test(tipp): Snapshots fuer den angemeldeten Tipper (Tippuebersicht, T…
tombrain Oct 11, 2026
8872bfc
test(tipp): Snapshot unabhaengig von Uhr und Dateizeit
tombrain Oct 11, 2026
a742ce0
fix(tipp): Spielbericht und Tipphinweis in der Tippabgabe einer Liga
tombrain Oct 11, 2026
2460ef7
changelog: Spielbericht in der Tippabgabe
tombrain Oct 11, 2026
5a7c552
changelog: Wortlaut des Tipphinweises
tombrain Oct 11, 2026
8dc6ef5
refactor(tipp): anstehende Spiele als Liste von AnstehendesSpiel
tombrain Oct 11, 2026
70bfa4f
changelog: AnstehendesSpiel im Tippspiel
tombrain Oct 11, 2026
9394c29
feat(liga): Spiel zum Anzeigen und Kurz-/Mittelname aus den Rohdaten
tombrain Oct 11, 2026
4bedf09
refactor(spielplan): Spielplan einer Mannschaft arbeitet auf den Rohd…
tombrain Oct 11, 2026
6a42488
changelog: Spiel und Spielplan auf den Rohdaten
tombrain Oct 11, 2026
c759d58
feat(liga): Einstellungen mit einer typisierten Methode je Einstellung
tombrain Oct 11, 2026
89e6c75
refactor: Spielplan und Tippspiel-Lader nutzen die typisierten Einste…
tombrain Oct 11, 2026
b827565
changelog: typisierte Einstellungen
tombrain Oct 11, 2026
c5c9f07
feat(liga): Iteratoren fuer Mannschaften und Spiele
tombrain Oct 11, 2026
1701ec8
refactor(spielplan): Spielplan durchlaeuft Mannschaften und Spiele mi…
tombrain Oct 11, 2026
07fca4a
changelog: Iteratoren
tombrain Oct 11, 2026
40dbe59
refactor(liga): Spiel mit festen Typen (Tore ?int, Anstoss ?int, Anze…
tombrain Oct 11, 2026
4ee6f75
refactor(ergebnisse): Ergebnisse eines Spieltags arbeiten auf den Roh…
tombrain Oct 11, 2026
8dd27aa
refactor(kalender): Kalender arbeitet auf den Rohdaten
tombrain Oct 11, 2026
7f0a2e6
refactor(kreuztabelle): Kreuztabelle arbeitet auf den Rohdaten
tombrain Oct 11, 2026
6c9cd09
test(liga): Datum des Spieltags als Anzeigetext
tombrain Oct 11, 2026
555b0bd
changelog: Anzeige-Seiten der Liga auf den Rohdaten
tombrain Oct 11, 2026
8d546e6
fix: Spiel ohne Anstoss zeigt kein Datum mehr (bisher 01.01.1970)
tombrain Oct 11, 2026
82cace6
changelog: Spiel ohne Anstoss
tombrain Oct 11, 2026
12d8871
refactor(liga): Spiel liefert seine Mannschaften und deren Namen
tombrain Oct 11, 2026
5433eca
refactor(liga): Namen ueber die Mannschaft des Spiels statt eigener M…
tombrain Oct 11, 2026
d0103e0
feat(liga): Paarung mit Sieger und Iterator ueber die Paarungen einer…
tombrain Oct 11, 2026
5705097
refactor(pokal): Spielplan und Kalender des Pokals arbeiten auf den R…
tombrain Oct 11, 2026
4d1dddd
changelog: Paarung und Pokal-Seiten
tombrain Oct 11, 2026
8baecd8
refactor(pokal): Ergebnisse einer Pokalrunde arbeiten auf den Rohdaten
tombrain Oct 11, 2026
52ac06a
changelog: Pokal-Ergebnisse
tombrain Oct 11, 2026
34228f7
Merge pull request #10 from tombrain/rohdaten-seiten
tombrain Oct 11, 2026
3787c24
feat(liga): Tabelle rechnet die Tabelle aus den Spielen der Rohdaten
tombrain Oct 11, 2026
4225483
refactor(tabelle): lmo-calctable.php rechnet ueber Lmo\Liga\Tabelle
tombrain Oct 11, 2026
9baf1fc
changelog: Tabelle
tombrain Oct 11, 2026
666b9de
fix(phpstan): Tore in Tabelle::werte() als lokale Werte
tombrain Oct 11, 2026
05a9f40
refactor(tabelle): Tabellenseite, Rahmen und Statistik ohne $ligaDaten
tombrain Oct 11, 2026
d6d8bfe
changelog: Tabellenseite und Statistik
tombrain Oct 11, 2026
1c4c77d
feat(liga): Tabelle kennt die Ansichten des LMO, Platz und Handicap-R…
tombrain Oct 11, 2026
eb3e9d5
refactor(tabelle): Tabellenseite arbeitet direkt mit Lmo\Liga\Tabelle
tombrain Oct 11, 2026
6f2d9b6
changelog: Tabellenseite direkt auf Tabelle
tombrain Oct 11, 2026
7fce6ed
feat(liga): Rekord liefert seinen Anzeigetext
tombrain Oct 11, 2026
f7ad013
refactor(statistik): Statistik arbeitet direkt mit Lmo\Liga\Tabelle
tombrain Oct 11, 2026
46921a7
changelog: Statistik direkt auf Tabelle
tombrain Oct 11, 2026
4ebd846
fix(fieberkurve): Platz je Spieltag aus Lmo\Liga\Tabelle, lmo-calctab…
tombrain Oct 11, 2026
eedb9d1
changelog: Fieberkurve
tombrain Oct 11, 2026
b439397
refactor(rahmen): Hauptrahmen liest die Einstellungen der Liga aus de…
tombrain Oct 11, 2026
bd725d5
changelog: Hauptrahmen
tombrain Oct 11, 2026
e5d2215
refactor(ticker): Ticker liest seine Ligen als Rohdaten statt ueber $…
tombrain Oct 11, 2026
5bf7a30
changelog: Ticker
tombrain Oct 11, 2026
318bd7c
refactor(spieler): Spielerstatistik holt die Mannschaften aus den Roh…
tombrain Oct 11, 2026
af29df7
test(html): Snapshots fuer die geschriebenen HTML-Dateien
tombrain Oct 11, 2026
a19cdc3
refactor(html): Druckausgabe Spieltag/Tabelle liest Spiele und Einste…
tombrain Oct 11, 2026
99722f3
refactor(html): Druckausgabe Spielplan liest Spiele und Einstellungen…
tombrain Oct 11, 2026
cee3bfc
changelog: HTML-Ausgabe und Spielerstatistik
tombrain Oct 11, 2026
16d90a5
test(tipp): Tipps eines Spieltags speichern und Einsicht (Liga und Po…
tombrain Oct 11, 2026
16ced2a
refactor(tipp): Tippabgabe eines Spieltags arbeitet auf den Rohdaten
tombrain Oct 11, 2026
e767f95
changelog: Tippabgabe
tombrain Oct 11, 2026
a0e3ef5
feat(tipp): Tipprunde stellt die Paarungen eines Spieltags fuer das T…
tombrain Oct 11, 2026
ee04888
refactor(tipp): Einsicht arbeitet auf den Rohdaten, Tippabgabe nutzt …
tombrain Oct 11, 2026
48ca720
changelog: Tipprunde und Einsicht
tombrain Oct 11, 2026
de0f3b7
test(tipp): Auswertung, Rangliste, Tipp-Fieberkurve und Tipptabelle
tombrain Oct 12, 2026
de26cbf
refactor(lader): openfilename und openfiledat stellen die Rohdaten al…
tombrain Oct 12, 2026
9528fdd
refactor(tipp): Rangliste und Tipp-Fieberkurve lesen die Spieltage au…
tombrain Oct 12, 2026
9381fb2
changelog: Rangliste und Tipp-Fieberkurve
tombrain Oct 12, 2026
073a46a
test(tipp): Speichern im Adminbereich wertet das Tippspiel mit dem ne…
tombrain Oct 12, 2026
f2b357e
refactor(tipp): Auswertung liest Spiele und Einstellungen aus den Roh…
tombrain Oct 12, 2026
0aaa9af
changelog: Auswertung des Tippspiels
tombrain Oct 12, 2026
dece568
fix(tipp): Tabelle nach Tipps bricht beim direkten Vergleich nicht me…
tombrain Oct 12, 2026
f862059
refactor(tipp): Tabelle nach Tipps liest Spiele, Mannschaften und Ein…
tombrain Oct 12, 2026
addd639
changelog: Tabelle nach Tipps
tombrain Oct 12, 2026
a38ec9c
chore(phpstan): Tippabgabe und Tipp-Fieberkurve nennen die Variablen …
tombrain Oct 12, 2026
1c60bde
refactor(tipp): Speichern der Tipps, Einsicht-Berechnung und Joker-Pr…
tombrain Oct 12, 2026
3c76719
refactor(tipp): Menue, Ueberschrift, Ligenliste und Lader aller Spiel…
tombrain Oct 12, 2026
1c8e4eb
changelog: Tippabgabe und Ligenliste
tombrain Oct 12, 2026
aba5819
test(tipp): Erinnerungsmail fuer eine einzelne Liga und einen Pokal
tombrain Oct 12, 2026
60cd224
refactor(tipp): Erinnerungsmail und Tipp-Lader eines Spieltags lesen …
tombrain Oct 12, 2026
54a437c
changelog: Erinnerungsmail und Tipp-Lader
tombrain Oct 12, 2026
159ddec
fix(tipp): Tabelle nach Tipps kennt die Einstellungen auch ohne die e…
tombrain Oct 12, 2026
db0231a
fix(tipp): Erinnerungsmail einer Liga listet die Spiele zeilenweise u…
tombrain Oct 12, 2026
5f4b837
test(zustat): Inhalt der Statistikdatei nach dem Speichern im Adminbe…
tombrain Oct 12, 2026
0ddf5df
refactor(zustat): Statistikdatei aus den Rohdaten; savefile reicht de…
tombrain Oct 12, 2026
7b53cfb
refactor: Spieltagsmenue, Spielerstatistik im Adminbereich und Viewer…
tombrain Oct 12, 2026
718bf2f
feat(liga): Normalform ergaenzt die Rohdaten zur vollstaendigen Datei…
tombrain Oct 12, 2026
4db8859
fix(tipp): Auswertung geht die Tipper in fester Reihenfolge durch
tombrain Oct 12, 2026
f2e797e
fix(zustat): nur gespielte Spiele zaehlen als Spiele mit den meisten …
tombrain Oct 12, 2026
55d2b82
refactor(admin): Tabellenkorrektur aendert die Rohdaten und speichert…
tombrain Oct 12, 2026
d4cb45e
changelog: Normalform, lmo-saveliga.php und Tabellenkorrektur
tombrain Oct 12, 2026
f3a0353
fix(tipp): Gesamtauswertung geht die Ligen in fester Reihenfolge durch
tombrain Oct 12, 2026
9537e19
test(zustat): Snapshot der Liga aus Vorlage zaehlt keine ungespielten…
tombrain Oct 12, 2026
3225624
refactor(admin): Anzahl der Spieltage und Partien aendert die Rohdate…
tombrain Oct 12, 2026
db3f316
changelog: feste Reihenfolge der Gesamtauswertung, Anzahl der Spieltage
tombrain Oct 12, 2026
9dda43d
test(admin): jeder Reiter der Einstellungen einer Liga und eines Pokals
tombrain Oct 12, 2026
6796da0
refactor(admin): Einstellungen der Liga aendern die Rohdaten
tombrain Oct 12, 2026
0542606
changelog: Einstellungen der Liga
tombrain Oct 12, 2026
8b9051f
chore(phpstan): lmo-adminrounds.php nennt die Rohdaten im Dateikopf
tombrain Oct 12, 2026
9112b6a
test(admin): Mannschaften speichern, loeschen und anlegen in Liga und…
tombrain Oct 12, 2026
9641439
feat(liga): Rohdaten koennen eine Mannschaft anlegen und aus der Liga…
tombrain Oct 12, 2026
45f614d
refactor(admin): Mannschaften aendern die Rohdaten
tombrain Oct 12, 2026
1471d65
changelog: Mannschaften im Adminbereich
tombrain Oct 12, 2026
86a7f3b
test(admin): Sonderfaelle der Ergebniseingabe in Liga und Pokal
tombrain Oct 12, 2026
1232dc3
refactor(admin): Ergebnisse eines Spieltags aendern die Rohdaten
tombrain Oct 12, 2026
31f359a
changelog: Ergebnisse im Adminbereich
tombrain Oct 12, 2026
e0c18de
test(admin): Mannschaftsname ohne Apostroph, damit die Groesse der St…
tombrain Oct 12, 2026
a534c77
refactor(admin): Liga anlegen baut die Rohdaten auf; Zufallsspielplan…
tombrain Oct 12, 2026
312b669
changelog: Liga anlegen
tombrain Oct 12, 2026
f65a569
refactor: Lader, Tabellen-Adapter, Hauptrahmen und Tipp-Frist ohne di…
tombrain Oct 12, 2026
4a58528
refactor!: Bruecke Lmo\Liga\LigaDaten entfernt
tombrain Oct 12, 2026
68b4796
changelog: LigaDaten entfernt
tombrain Oct 12, 2026
b4a398a
changelog: Version 5.0.0
tombrain Oct 12, 2026
f9841c3
changelog: Version 4.4.0 statt 5.0.0
tombrain Oct 12, 2026
4f94d17
Merge pull request #11 from tombrain/tabelle
tombrain Oct 12, 2026
d8d7974
refactor(savehtml): Druckausgabe rechnet die Tabelle ueber Lmo\Liga\T…
tombrain Oct 12, 2026
25c5cfa
refactor: lmo-calctable.php ist nur noch Test-Hilfsdatei
tombrain Oct 12, 2026
023746d
changelog: Druckausgabe und lmo-calctable.php
tombrain Oct 12, 2026
c90128d
fix(phpstan): ueberfluessige Pruefung in lmo-savehtml.php entfernt
tombrain Oct 12, 2026
61e240a
Merge pull request #12 from tombrain/druckausgabe
tombrain Oct 12, 2026
5f8018a
feat(liga): benannte Methoden zum Aendern der Rohdaten
tombrain Oct 12, 2026
9616193
refactor(admin): Seiten aendern die Liga ueber die Methoden der Rohdaten
tombrain Oct 12, 2026
f96baca
changelog: Methoden zum Aendern der Rohdaten
tombrain Oct 12, 2026
bdd09d8
fix(phpstan): setzeNews() zaehlt die Zeilen selbst durch
tombrain Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 22 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Snapshots werden byte-genau verglichen: immer LF, auch unter Windows (core.autocrlf)
tests/GoldenMaster/__snapshots__/** text eol=lf
# Tests enthalten Ligadateien als Textblock und vergleichen sie zeilenweise: immer LF
tests/**/*.php text eol=lf
# Shell-Skripte laufen im Linux-Container: mit CRLF startet das Docker-Image nicht
*.sh text eol=lf
# wird unter Linux direkt ausgefuehrt (Shebang)
bin/* text eol=lf
# Nutzer bekommen per Composer nur den LMO, nicht die Entwicklungsumgebung
/.github export-ignore
/docker export-ignore
/docker-compose.yml export-ignore
/phpunit.xml.dist export-ignore
/phpstan.neon.dist export-ignore
/phpstan-strict.neon.dist export-ignore
/phpstan-classlib.neon.dist export-ignore
/phpstan-tests.neon.dist export-ignore
/phpstan-liga.neon.dist export-ignore
/phpstan-liga-basis.neon.dist export-ignore
/phpstan-bootstrap.php export-ignore
/tests export-ignore
/TESTING.md export-ignore
70 changes: 70 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Golden-Master-Tests direkt auf dem Runner (ohne Docker), siehe TESTING.md
name: Tests

on:
push:
pull_request:
workflow_dispatch:

jobs:
phpstan:
runs-on: ubuntu-24.04
name: PHPStan

steps:
- uses: actions/checkout@v5

# die Pruefung selbst gilt fuer PHP 8.0 bis 8.5 (phpVersion in phpstan.neon.dist)
- name: PHP einrichten
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
coverage: none
tools: composer:v2

- name: Abhaengigkeiten installieren
run: composer install --no-interaction --no-progress --prefer-dist

- name: PHPStan
run: composer phpstan

golden-master:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
# Snapshots stammen von 8.3; 8.0 ist die aelteste unterstuetzte Version (lmo/version.json), 8.5 die neueste (README)
php: ['8.0', '8.3', '8.4', '8.5']
name: PHP ${{ matrix.php }}

steps:
- uses: actions/checkout@v5

# faketime fixiert die Zeit (Kalender, "heute"-Markierungen) wie im Docker-Image
- name: faketime installieren
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends faketime

- name: PHP einrichten
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: gd, zip
# wie das offizielle Docker-Image: keine php.ini, nur Standardwerte
ini-file: none
coverage: none
tools: composer:v2

- name: Composer-Cache
uses: actions/cache@v5
with:
path: ~/.composer/cache
key: composer-${{ matrix.php }}-${{ hashFiles('composer.lock') }}
restore-keys: composer-${{ matrix.php }}-

- name: Abhaengigkeiten installieren
run: composer install --no-interaction --no-progress --prefer-dist

- name: Tests
env:
GOLDEN_MODE: compare
run: vendor/bin/phpunit
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/vendor/
.original/
.phpunit.result.cache
coverage/
# Laufzeitdateien einer Installation (legt lmo-setup.php an)
lmo/config/init-parameters.php
lmo/config/lmo-auth.php
lmo/config/.defaults-stamp
lmo/config/.update-check.json
lmo/config/cfg.txt
lmo/config/*/cfg.txt
lmo/addon/tipp/lmo-tippauth.txt
# Rohdaten von tests/RealData/bin/fetch_openligadb.php
tests/RealData/.cache/
114 changes: 40 additions & 74 deletions README.md

Large diffs are not rendered by default.

325 changes: 325 additions & 0 deletions TESTING.md

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions bin/lmo-install
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
// Richtet den LMO im Ordner des Webservers ein bzw. gleicht ihn nach einem Update ab:
// vendor/bin/lmo-install [Zielordner] (ohne Angabe: lmo)

require_once __DIR__ . '/../src/Install/Installer.php';

$autoload = $GLOBALS['_composer_autoload_path'] ?? null;
// als Paket: vendor/lmo/lmo_php8/bin; im Repo selbst: vendor/ neben bin/
foreach ([__DIR__ . '/../../../autoload.php', __DIR__ . '/../vendor/autoload.php'] as $candidate) {
if ($autoload === null && is_file($candidate)) {
$autoload = $candidate;
}
}
if ($autoload === null) {
fwrite(STDERR, "lmo-install: vendor/autoload.php nicht gefunden - bitte zuerst 'composer install' ausfuehren.\n");
exit(1);
}

exit(Lmo\Install\Installer::run(
array_slice($argv, 1),
dirname(__DIR__) . '/lmo',
dirname((string) realpath($autoload)),
(string) getcwd(),
STDOUT
));
449 changes: 447 additions & 2 deletions changelog.md

Large diffs are not rendered by default.

78 changes: 78 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"name": "lmo/lmo_php8",
"description": "The Liga Manager Online (LMO for short) is free software for managing sports leagues with tables on the Internet.",
"type": "library",
"homepage": "https://github.com/henshingly/lmo_php8",
"keywords": [
"LMO",
"Liga Manager Online",
"Sportligen verwalten"
],
"license": "GPL-2.0-only",
"authors": [
{
"name": "Rene Marth (joker)",
"homepage": "https://www.liga-manager-online.de",
"role": "Extension developer"
},
{
"name": "Henshingly",
"homepage": "https://www.vest-sport.de",
"role": "Developer"
}
],
"support": {
"forum": "https://www.liga-manager-online.org/forum/"
},
"require": {
"php": ">=8.0",
"pear/html_template_it": "^1.3.3",
"phpmailer/phpmailer": "^7.1"
},
"require-dev": {
"phpstan/phpstan": "^2.3",
"phpunit/phpunit": "^9.6"
},
"suggest": {
"ext-gd": "Fuer die Grafiken (Fieberkurve, Tippspiel-Grafiken)",
"ext-zip": "Fuer Download und E-Mail-Versand der Ligadateien im Admin-Bereich"
},
"autoload": {
"classmap": [
"lmo/includes/LmoTemplate.php"
],
"psr-4": {
"Lmo\\Install\\": "src/Install/",
"Lmo\\Liga\\": "src/Liga/",
"Lmo\\Tipp\\": "src/Tipp/"
}
},
"bin": [
"bin/lmo-install"
],
"autoload-dev": {
"psr-4": {
"Lmo\\Tests\\GoldenMaster\\": "tests/GoldenMaster/",
"Lmo\\Tests\\Unit\\": "tests/Unit/",
"Lmo\\Tests\\RealData\\": "tests/RealData/"
}
},
"scripts": {
"phpstan": [
"phpstan analyse --no-progress --memory-limit=1G",
"phpstan analyse -c phpstan-classlib.neon.dist --no-progress --memory-limit=1G",
"phpstan analyse -c phpstan-liga.neon.dist --no-progress --memory-limit=1G",
"phpstan analyse -c phpstan-liga-basis.neon.dist --no-progress --memory-limit=1G",
"phpstan analyse -c phpstan-tests.neon.dist --no-progress --memory-limit=1G",
"phpstan analyse -c phpstan-strict.neon.dist --no-progress --memory-limit=1G"
],
"test": "phpunit",
"test:record": "GOLDEN_MODE=record phpunit"
},
"config": {
"platform": {
"php": "8.0.30"
},
"sort-packages": true
}
}
Loading