janborg / contao-h4a_gamestats
Spielberichte von handball4all in Contao CMS integrieren
Package info
github.com/janborg/contao-h4a_gamestats
Type:contao-bundle
pkg:composer/janborg/contao-h4a_gamestats
Fund package maintenance!
Requires
- php: ^8.3
- contao/calendar-bundle: ^5.3
- contao/core-bundle: ^5.3
- doctrine/dbal: ^3.6 || ^4.0
- janborg/contao-h4a_tabellen: ^5.0
- psr/log: ^1.1 || 2.0 || ^3.0
- symfony/config: ^6.0 || ^7.0
- symfony/console: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/event-dispatcher: ^6.0 || ^7.0
- symfony/http-foundation: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
- symfony/routing: ^6.0 || ^7.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.5
- contao/easy-coding-standard: ^6.13
- contao/manager-plugin: ^2.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^12.0
- shipmonk/composer-dependency-analyser: ^1.7
- symfony/phpunit-bridge: ^8.0
- symplify/easy-coding-standard: 13.2.3
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
This package is auto-updated.
Last update: 2026-08-13 05:58:26 UTC
README
Spielberichte, Spielerstatistiken und Spielverläufe von handball.net (handball4all) in Contao CMS integrieren.
Das Bundle ergänzt Kalender-Events um detaillierte Statistiken zu einem Handballspiel – Torschützen, Strafen und Karten je Mannschaft sowie den kompletten Spielverlauf als Zeitstrahl bzw. Diagramm. Die Daten werden automatisch über die handball.net-Spiele-API abgerufen und in Contao gespeichert.
Voraussetzungen
- PHP
^8.3 - Contao
^5.3(core-bundle & calendar-bundle) - janborg/contao-h4a_tabellen
^5.0– liefert denHandballnetApiClient, die Team-/Turnier-Verwaltung sowie dasH4aReportUpdatedEvent, an das dieses Bundle andockt.
Installation
Über den Contao Manager (Paketname janborg/contao-h4a_gamestats) oder via Composer:
composer require janborg/contao-h4a_gamestats
Funktionsumfang
Content-Elemente
Im Backend stehen unter der Gruppe handball4all drei Content-Elemente zur Verfügung. Alle werden über Kalender, Saison und Turnier (handball.net) sowie die jeweilige Spiel-ID konfiguriert.
| Element | Typ | Beschreibung |
|---|---|---|
| Spielbericht (Gamescore) | h4a_gamescore |
Statistik eines einzelnen Spiels je Mannschaft: Spieler mit Toren, 7-Meter, gelben/roten/blauen Karten und Zeitstrafen sowie die Offiziellen (A–D). |
| Saisonstatistik (Seasonscore) | h4a_seasonscore |
Aggregierte Spielerstatistik der eigenen Mannschaft über eine ganze Saison/Turnier. |
| Zeitstrahl (Timeline) | h4a_timeline |
Spielverlauf mit Torfolge als Zeitstrahl und Diagramm (Chart.js) inkl. Spielstand über die Zeit. |
Frontend-Modul
| Modul | Typ | Beschreibung |
|---|---|---|
| Spielbericht | h4a_event_report |
Kompletter Spielbericht zum aktuellen Event (über auto_item): Heim- und Gaststatistik plus Zeitstrahl-Diagramm in einem Modul. |
Automatischer Datenabruf
Die Spielstatistiken werden auf mehreren Wegen aktuell gehalten:
-
Event-Listener – reagiert auf das
H4aReportUpdatedEventauscontao-h4a_tabellen. Sobald ein Spielergebnis vorliegt, werden Playerscores und Timeline für das Kalender-Event abgerufen und gespeichert. -
Cronjobs (stündlich) – rufen für vergangene Events mit vollständigem Ergebnis (
hn_resultComplete) automatisch die noch fehlenden Spielberichte ab:UpdateH4aScoresCron::updateScores– SpielerstatistikenUpdateH4aTimelineCron::updateTimeline– Spielverlauf
-
Console-Commands – für manuelle Aktualisierung bzw. Backfill:
# Spielerstatistiken aktualisieren vendor/bin/contao-console h4a:update:scores [--update-all] # Spielverlauf/Timeline aktualisieren vendor/bin/contao-console h4a:update:timeline [--update-all]
Standardmäßig werden nur Events ohne vorhandene Daten verarbeitet. Mit
--update-allwerden bereits gespeicherte Statistiken überschrieben.
Backend-Werkzeuge
Innerhalb des Kalender-Moduls gibt es Lookup-Operationen, um Statistiken (lookup_scores) und Spielverlauf (lookup_timeline) eines Events manuell aus handball.net nachzuladen. Gespeicherte Daten liegen in den Tabellen tl_h4a_playerscores und tl_h4a_timeline und sind im Backend einsehbar.
Datenquelle & Mapping
Die Klasse HandballnetGamestatsParser ruft den kombinierten Spiel-Endpunkt von handball.net (Summary + Lineup + Events) einmalig ab und bildet ihn auf die intern verwendeten Datenstrukturen ab:
- Spieler → Tore, 7-Meter-Tore/-Versuche, gelbe/rote/blaue Karten, Zeitstrafen
- Offizielle → Verwarnungen, Zeitstrafen, Disqualifikationen (Position OA–OD → A–D)
- Events → chronologische Timeline mit Spielzeit, aktuellem Spielstand, Aktion (Tor, 7m-Tor, 7m-Versuch, 2-min, Auszeit, Verwarnung, Disqualifikation), Team und Spieler
Hinweis: Ab Version 3/5 nutzt das Bundle die handball.net-API. Der frühere PDF-basierte Report-Parser wurde ersetzt.
Templates
Die Ausgabe lässt sich über eigene Twig-Templates anpassen (Standardvorlagen im Bundle):
- Content-Elemente:
ce_h4a_gamescore,ce_h4a_seasonscore,ce_h4a_timeline - Frontend-Modul:
mod_h4a_event_report - Partials:
h4a_gamescores,h4a_timeline
Das Timeline-Diagramm nutzt das mitgelieferte chart.umd.min.js (Chart.js).
Entwicklung
composer all # depcheck + ecs + phpstan + unit-tests composer ecs # Coding Standard (Fix) composer phpstan # statische Analyse composer unit-tests # PHPUnit
Lizenz
MIT © Jan Lünborg – siehe LICENCE.md.