From 5d1df8579de78882ccb28d65742254a7c8c6c0c1 Mon Sep 17 00:00:00 2001 From: svennickel Date: Tue, 8 Sep 2026 18:31:24 +0200 Subject: [PATCH] =?UTF-8?q?Gleicher=20Satzstand=20bleibt=20ein=20Unentschi?= =?UTF-8?q?eden=20=E2=80=94=20die=20Sonderregel=20kommt=20weg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sven beim Testen von Begegnung 93 (2:2 im Doppel, Modus 3 Gewinnsaetze, Wertung Sieg 2/Remis 1): das Formular rechnete 7:3 vor, gespeichert wurde 6:2. „Und das ist meinem Verstaendnis nach doch auch das richtige Ergebnis?" — ja. Zwei Fehler in einem: 1. Die Spielpunkte werden an DREI Stellen berechnet, nicht an zweien: zusaetzlich zu admin.php und begegnungenAktualisieren() rechnet das Formular selbst per JavaScript mit (view_admin.php, spielpunkte_bedingung()). 554ad25/35384a5 hatten die Remis-Sonderregel in die ersten beiden eingebaut, die dritte lief nach der alten Regel weiter — daher 7:3 gegen 6:2. 2. Die Sonderregel selbst war falsch. „Unentschieden nur, wo der Satzmodus es zulaesst" war eine Ableitung aus 554ad25, keine Anforderung. Die Wertung sagt ausdruecklich „Sieg 2 Punkte, Unentschieden 1 Punkt" — das ist eine Anweisung fuer den gleichen Stand, und eine Zahl von Gewinnsaetzen sagt nur, WANN ein Spiel endet, nicht dass ein gleicher Stand wertlos ist. Spiele enden faktisch gleich (Abbruch, Zeitlimit, Absprache); ein 0:0 an der Stelle verliert dieselbe Information, die es schuetzen wollte. Also: remisMoeglich() samt beiden Verwendungen entfernt, alle drei Wege rechnen wieder die langjaehrige Regel. Gemessen auf zwei Pruefligen (je 6 Begegnungen, 30 Spiele, 4 Gleichstaende ungleich 0:0): die auf demselben Datenbestand neu berechneten Tabellen sind zwischen dem Stand vor diesem PR und danach VOLLSTAENDIG identisch — keine einzige Zahl weicht ab. Begegnung 93 zeigt im Formular, auf der Seite und in der Datenbank uebereinstimmend 7:3. --- .../components/com_sportsmanager/admin.php | 13 ++----------- .../components/com_sportsmanager/sportsmanager.php | 6 ++---- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 19c748f..34f794c 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -10933,13 +10933,6 @@ function adminEditBegegnungSpielplan($bestaetigen): void } -function remisMoeglich($saetze_modus): bool -{ - if ($saetze_modus == 0) return true; // keine Angabe - if ($saetze_modus < 0) return false; // Gewinnsaetze: am Ende steht keiner gleich - return $saetze_modus % 2 == 0; // feste Satzzahl: nur eine gerade endet remis -} - function adminSaveBegegnungSpielplan(): void { $app = Factory::getContainer()->get(SiteApplication::class); @@ -11283,8 +11276,7 @@ function adminSaveBegegnungSpielplan(): void } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_einzel != 3 - && remisMoeglich($teamspiel_modus->saetze_modus_einzel)) { + } else if ($spielpunkte_wertung_einzel != 3) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { @@ -11306,8 +11298,7 @@ function adminSaveBegegnungSpielplan(): void } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_doppel != 3 - && remisMoeglich($teamspiel_modus->saetze_modus_doppel)) { + } else if ($spielpunkte_wertung_doppel != 3) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index e7dfaef..c0b2c24 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -6183,8 +6183,7 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_einzel != 3 - && remisMoeglich($teamspiel_modus->saetze_modus_einzel)) { + } else if ($spielpunkte_wertung_einzel != 3) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { @@ -6206,8 +6205,7 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_doppel != 3 - && remisMoeglich($teamspiel_modus->saetze_modus_doppel)) { + } else if ($spielpunkte_wertung_doppel != 3) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else {