From 668f917a2520aa3e344f6607e4a63805e950bde3 Mon Sep 17 00:00:00 2001 From: svennickel Date: Thu, 10 Sep 2026 07:28:08 +0200 Subject: [PATCH] Ticker: Tore zeigen, und ein 0:0-Satzstand ist ein Ergebnis Meldung von Sven (DTFB-IT): "Im Live-Ticker werden Tore nicht gezeigt." Dazu gemessen: view_ticker.php enthielt keinen einzigen Zugriff auf die Tore-Spalten, und die Spielzeile blendete das Ergebnis aus, sobald der Satzstand 0:0 war ("5:5 5:5" -> leere Zelle, obwohl eingetragen). - Spielzeile im Matchdetail: das Ergebnis erscheint auch bei Satzstand 0:0, sofern ein Satzergebnis vorliegt (ergebnis_detailliert); darunter stehen die Tore des Spiels aus teamspiel_heim_tore/teamspiel_gast_tore, klein und nur, wenn sie bekannt sind und nicht ohnehin dem Punktestand entsprechen (bei punktetyp 0 sind Punkte = Tore, dort bleibt die Zeile unveraendert). - Matchdetail-Kopf: die Gesamttore der Begegnung stehen in der Datumszeile ("... - Tore 47:42"), gleiche Bekanntheits-Regel; der feste 78px-Zaehler (resultat_holder) bleibt unangetastet und zeigt statt "--|--" den Stand, sobald ein Ergebnis vorliegt (heim_tore bekannt), auch bei Spielpunkten 0:0 (Wertung "je Satz, Sieg 1": alle Spiele remis). - Status einer Begegnung (finished/upcoming) in Liste und Turnierbaum: bekannte Tore zaehlen als beendet, nicht nur Spielpunkte != 0. - Die Ticker-Abfragen (Liste und Timestamp-Erkennung) behandeln eine Begegnung mit Punkten 0:0, aber bekannten Toren als ausgetragen -- sie erscheint unter den beendeten Spielen und sortiert sich dort ein, statt als "anstehend" zu gelten. Fuer Bestandsdaten ohne Tore-Spaltenwerte (NULL) aendert sich an Filterung und Sortierung nichts. --- .../com_sportsmanager/sportsmanager.php | 6 +++--- .../views/sportsmanager/view_ticker.php | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 957968c..32dbd7c 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -2258,8 +2258,8 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id" - . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "") - . "\n ORDER BY IF(zwischenergebnis, 0, IF((heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 2, 1)), IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 0, t1.zeitpunkt) DESC, IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), t1.zeitpunkt, 0), spieltag DESC, heim_name"; + . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR NOT ISNULL(heim_tore) OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "") + . "\n ORDER BY IF(zwischenergebnis, 0, IF((heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 2, 1)), IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 0, t1.zeitpunkt) DESC, IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), t1.zeitpunkt, 0), spieltag DESC, heim_name"; $begegnungen = loadObjectList($db, $query); } elseif ($type == "eliminations" && $veranstaltung_elimination_index != -1) { $query = "SELECT t1.*, t2.teamname AS heim_name, t2.verein_id AS heim_verein_id, t3.teamname AS gast_name, t3.verein_id AS gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," @@ -2349,7 +2349,7 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" - . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : ""); + . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR NOT ISNULL(heim_tore) OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : ""); $matches_timestamp = loadResult($db, $query); if (!empty($matches_timestamp)) { diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php index 644f06e..8bf26d2 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php @@ -34,7 +34,7 @@ class HTML_sportsmanager_ticker $zeit = date("H:i", $zeitpunkt_ts); if ($begegnung->zwischenergebnis) $status = 'livenow'; - elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte)) + elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte) || $begegnung->heim_tore !== null) $status = 'finished'; elseif ($begegnung->verlegung_eingetragen) continue; @@ -111,7 +111,7 @@ class HTML_sportsmanager_ticker continue; if ($begegnung->zwischenergebnis) $status = 'livenow'; - elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte)) + elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte) || $begegnung->heim_tore !== null) $status = 'finished'; elseif ($begegnung->verlegung_eingetragen) continue; @@ -216,7 +216,7 @@ class HTML_sportsmanager_ticker
zwischenergebnis && empty($begegnung->heim_spielpunkte) && empty($begegnung->gast_spielpunkte)) echo "--|--"; else echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>
+ id="resultat_holder">zwischenergebnis && empty($begegnung->heim_spielpunkte) && empty($begegnung->gast_spielpunkte) && $begegnung->heim_tore === null) echo "--|--"; else echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>
@@ -224,7 +224,10 @@ class HTML_sportsmanager_ticker zeitpunkt); ?> - - spieltag, $begegnung->unterteilung == 0); ?> + - spieltag, $begegnung->unterteilung == 0); + if ($begegnung->heim_tore !== null + && ($begegnung->heim_tore != $begegnung->heim_spielpunkte || $begegnung->gast_tore != $begegnung->gast_spielpunkte)) + echo " - " . Text::_('COM_SPORTSMANAGER_GOALS') . " " . $begegnung->heim_tore . ":" . $begegnung->gast_tore; ?> @@ -257,7 +260,12 @@ class HTML_sportsmanager_ticker "; ?>heim_spieler_1_id)) echo $spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname; if (!empty($spiel->heim_spieler_2_id)) echo "
" . $spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname; ?>"; ?> - teamspiel_heim_punkte != 0 || $spiel->teamspiel_gast_punkte != 0) echo $spiel->teamspiel_heim_punkte . ":" . $spiel->teamspiel_gast_punkte; ?> + teamspiel_heim_punkte != 0 || $spiel->teamspiel_gast_punkte != 0 || !empty($spiel->ergebnis_detailliert)) { + echo $spiel->teamspiel_heim_punkte . ":" . $spiel->teamspiel_gast_punkte; + if ($spiel->teamspiel_heim_tore !== null + && ($spiel->teamspiel_heim_tore != $spiel->teamspiel_heim_punkte || $spiel->teamspiel_gast_tore != $spiel->teamspiel_gast_punkte)) + echo "
" . $spiel->teamspiel_heim_tore . ":" . $spiel->teamspiel_gast_tore . ""; + } ?> "; ?>gast_spieler_1_id)) echo $spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname; if (!empty($spiel->gast_spieler_2_id)) echo "
" . $spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname; ?>"; ?>