From 2a0ccfd98ffb277041a669fefa5aa28d1d2d5bd9 Mon Sep 17 00:00:00 2001 From: svennickel Date: Thu, 10 Sep 2026 09:52:25 +0200 Subject: [PATCH] Die Frage "liegt ein Ergebnis vor?" an einer Stelle beantworten Die Bedingung stand doppelt als Closure in sportsmanager.php und ein drittes und viertes Mal punktebasiert in den Ansichten, wo eine Begegnung mit ausschliesslich unentschiedenen Saetzen als "_:_" erschien, obwohl die Tabelle sie zaehlt. --- .../com_sportsmanager/sportsmanager.php | 8 ++++---- .../components/com_sportsmanager/tools.php | 16 ++++++++++++++++ .../views/sportsmanager/view.html.php | 9 +++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 32dbd7c..7b7fd8f 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -2003,9 +2003,9 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ . "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0); $wertungen = loadObjectList($db, $query); $je_satz = count($wertungen) > 0 - && ($wertungen[0]->spielpunkte_wertung_einzel >= 10 || $wertungen[0]->spielpunkte_wertung_doppel >= 10); + && jeSatzWertung($wertungen[0]->spielpunkte_wertung_einzel, $wertungen[0]->spielpunkte_wertung_doppel); $ausgetragen = function ($alias) use ($je_satz) { - return "($alias.heim_punkte != 0 OR $alias.gast_punkte != 0" . ($je_satz ? " OR NOT ISNULL($alias.heim_tore)" : "") . ")"; + return ausgetragenBedingung($je_satz, $alias); }; $query = "SELECT verein_id, teamname, zusatzpunkte," @@ -5630,9 +5630,9 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert . "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0); $wertungen = loadObjectList($db, $query); $je_satz = count($wertungen) > 0 - && ($wertungen[0]->spielpunkte_wertung_einzel >= 10 || $wertungen[0]->spielpunkte_wertung_doppel >= 10); + && jeSatzWertung($wertungen[0]->spielpunkte_wertung_einzel, $wertungen[0]->spielpunkte_wertung_doppel); $ausgetragen = function ($alias) use ($je_satz) { - return "($alias.heim_punkte != 0 OR $alias.gast_punkte != 0" . ($je_satz ? " OR NOT ISNULL($alias.heim_tore)" : "") . ")"; + return ausgetragenBedingung($je_satz, $alias); }; $query = "UPDATE #__sportsmanager_team" diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index b4f9038..e951e7f 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -663,6 +663,22 @@ function toreFuerSpiel($punktetyp, $satzergebnisse, $heim_punkte, $gast_punkte, return array(null, null); } +function jeSatzWertung($wertung_einzel, $wertung_doppel): bool +{ + return $wertung_einzel >= 10 || $wertung_doppel >= 10; +} + +function ausgetragenBedingung($je_satz, $alias): string +{ + return "($alias.heim_punkte != 0 OR $alias.gast_punkte != 0" + . ($je_satz ? " OR NOT ISNULL($alias.heim_tore)" : "") . ")"; +} + +function ergebnisVorhanden($je_satz, $heim_punkte, $gast_punkte, $heim_tore): bool +{ + return $heim_punkte != null || $gast_punkte != null || ($je_satz && $heim_tore !== null); +} + function saetzeRemisFuerSpiel($punktetyp, $satzergebnisse, $ergebnis_detailliert): ?int { if ($punktetyp == 0 || empty($satzergebnisse) || empty($ergebnis_detailliert)) diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index 5394440..f9f987d 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1091,8 +1091,11 @@ static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster, $spielort_name = ""; $Spieltagname = ""; $Spieltagname_Buffer = ""; + $je_satz = $modus != null + && jeSatzWertung($modus->spielpunkte_wertung_einzel, $modus->spielpunkte_wertung_doppel); foreach ($rows as $row) { - $ergebnis_vorhanden = $row->heim_punkte != null || $row->gast_punkte != null; + $ergebnis_vorhanden = ergebnisVorhanden($je_satz, $row->heim_punkte, $row->gast_punkte, + $row->heim_tore ?? null); if ($zeitfenster == 0 && $veranstaltung != null) { if ($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) { @@ -2922,7 +2925,9 @@ $veranstaltung_id = $row->veranstaltung_id; heim_punkte != null || $row->gast_punkte != null; + $ergebnis_vorhanden = ergebnisVorhanden( + jeSatzWertung($row->spielpunkte_wertung_einzel, $row->spielpunkte_wertung_doppel), + $row->heim_punkte, $row->gast_punkte, $row->heim_tore ?? null); ?>