mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-09-11 18:41:50 +00:00
Kommentare aus dem Quelltext entfernen
Aus dem Review: „Der Quelltext ist absolut ueberkommentiert." Nach dem Kuerzen in554ad25jetzt vollstaendig — 294 Kommentarzeilen aus fuenf Dateien. Nachgewiesen unveraendert: der Diff ohne Kommentar- und Leerzeilen gegen5aee028ist vor und nach dieser Aenderung derselbe (gleiche Pruefsumme). Es ist also ausschliesslich Kommentar entfernt worden, keine Zeile Programmtext. Entfernt wurden nur die von diesem Zweig HINZUGEFUEGTEN Kommentare; jeder Kommentar, der im alten Stand schon stand, bleibt unangetastet (auch dort, wo Formularzeilen verschoben wurden).
This commit is contained in:
@@ -2683,7 +2683,6 @@ function adminImportSpieler(): void
|
|||||||
if (!ini_get('safe_mode'))
|
if (!ini_get('safe_mode'))
|
||||||
set_time_limit(300);
|
set_time_limit(300);
|
||||||
|
|
||||||
|
|
||||||
if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1)
|
if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1)
|
||||||
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
||||||
else
|
else
|
||||||
@@ -3825,7 +3824,6 @@ function adminVereineZusammenlegenForm(): void
|
|||||||
$spieler_id = $row->spieler_id;
|
$spieler_id = $row->spieler_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$query = "UPDATE #__sportsmanager_team"
|
$query = "UPDATE #__sportsmanager_team"
|
||||||
. "\n SET verein_id = $verein_beizubehalten_id"
|
. "\n SET verein_id = $verein_beizubehalten_id"
|
||||||
. "\n WHERE verein_id = $verein_zu_entfernen_id";
|
. "\n WHERE verein_id = $verein_zu_entfernen_id";
|
||||||
@@ -4553,10 +4551,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$row = $rows[0];
|
$row = $rows[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ob unter diesem Spielplan schon Ergebnisse stehen. „Saetze pro Spiel" zu aendern
|
|
||||||
// rechnet naemlich nichts um — aus sechs Toren werden sechs Saetze, und aus drei
|
|
||||||
// Saetzen drei Tore. Das laesst sich auch nicht umrechnen (aus „drei gewonnene
|
|
||||||
// Saetze" folgt keine Torzahl), also wird davor gewarnt statt gehandelt.
|
|
||||||
if ($row != null) {
|
if ($row != null) {
|
||||||
$query = "SELECT COUNT(*) AS anzahl"
|
$query = "SELECT COUNT(*) AS anzahl"
|
||||||
. "\n FROM #__sportsmanager_teamspiel AS t"
|
. "\n FROM #__sportsmanager_teamspiel AS t"
|
||||||
@@ -4581,11 +4575,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
|
|
||||||
$id = $jInput->get('id', 0, 'INT');
|
$id = $jInput->get('id', 0, 'INT');
|
||||||
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
||||||
// Die Auswahl „Saetze pro Spiel" hat drei Eintraege, die Datenbank zwei Felder: der
|
|
||||||
// dritte Eintrag ist „Mehrere" mit der zusaetzlichen Angabe, dass die Saetze einzeln
|
|
||||||
// eingetragen werden. punktetyp behaelt damit seine beiden ueberlieferten Werte — es
|
|
||||||
// ist das Feld, an dem jede fremde Anwendung ablesen muss, ob die Punkte eines Spiels
|
|
||||||
// Tore oder gewonnene Saetze sind (siehe Datenbankversion 126).
|
|
||||||
$punktetyp = $jInput->get('punktetyp', 0, 'INT');
|
$punktetyp = $jInput->get('punktetyp', 0, 'INT');
|
||||||
$satzergebnisse = $punktetyp == 2 ? 1 : 0;
|
$satzergebnisse = $punktetyp == 2 ? 1 : 0;
|
||||||
if ($punktetyp == 2)
|
if ($punktetyp == 2)
|
||||||
@@ -4593,9 +4582,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$punkte_sieg_einzel = $jInput->get('punkte_sieg_einzel', 0, 'INT');
|
$punkte_sieg_einzel = $jInput->get('punkte_sieg_einzel', 0, 'INT');
|
||||||
$punkte_sieg_doppel_separat = $jInput->get('punkte_sieg_doppel_separat', 0, 'INT');
|
$punkte_sieg_doppel_separat = $jInput->get('punkte_sieg_doppel_separat', 0, 'INT');
|
||||||
$punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jInput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel;
|
$punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jInput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel;
|
||||||
// Vorsprung (mindestens 1 Tor, sonst waere kein Spiel je entschieden) und Deckelung
|
|
||||||
// (0 = keine). Beide folgen derselben "Doppel separat"-Schaltung wie die Siegbedingung,
|
|
||||||
// zu der sie gehoeren.
|
|
||||||
$punkte_vorsprung_einzel = max(1, $jInput->get('punkte_vorsprung_einzel', 1, 'INT'));
|
$punkte_vorsprung_einzel = max(1, $jInput->get('punkte_vorsprung_einzel', 1, 'INT'));
|
||||||
$punkte_vorsprung_doppel = $punkte_sieg_doppel_separat
|
$punkte_vorsprung_doppel = $punkte_sieg_doppel_separat
|
||||||
? max(1, $jInput->get('punkte_vorsprung_doppel', 1, 'INT'))
|
? max(1, $jInput->get('punkte_vorsprung_doppel', 1, 'INT'))
|
||||||
@@ -4604,23 +4590,14 @@ function adminEditTeamspielmodus(): void
|
|||||||
$punkte_deckel_doppel = $punkte_sieg_doppel_separat
|
$punkte_deckel_doppel = $punkte_sieg_doppel_separat
|
||||||
? max(0, $jInput->get('punkte_deckel_doppel', 0, 'INT'))
|
? max(0, $jInput->get('punkte_deckel_doppel', 0, 'INT'))
|
||||||
: $punkte_deckel_einzel;
|
: $punkte_deckel_einzel;
|
||||||
// Eine Deckelung unterhalb der Siegbedingung wuerde das Spiel vor seinem eigenen Ziel
|
|
||||||
// beenden — das ist keine Konfiguration, sondern ein Zahlendreher. Dann gilt sie nicht.
|
|
||||||
if ($punkte_deckel_einzel != 0 && $punkte_deckel_einzel < abs($punkte_sieg_einzel))
|
if ($punkte_deckel_einzel != 0 && $punkte_deckel_einzel < abs($punkte_sieg_einzel))
|
||||||
$punkte_deckel_einzel = 0;
|
$punkte_deckel_einzel = 0;
|
||||||
if ($punkte_deckel_doppel != 0 && $punkte_deckel_doppel < abs($punkte_sieg_doppel))
|
if ($punkte_deckel_doppel != 0 && $punkte_deckel_doppel < abs($punkte_sieg_doppel))
|
||||||
$punkte_deckel_doppel = 0;
|
$punkte_deckel_doppel = 0;
|
||||||
// Vorsprung und Unentschieden schliessen sich aus: das negative Vorzeichen von
|
|
||||||
// punkte_sieg_* bedeutet „Remis bei Betrag - 1", und genau dieser Stand ist bei zwei
|
|
||||||
// Toren Vorsprung kein Endstand, sondern ein laufendes Spiel (5:5 bei Sieg 6). Wird ein
|
|
||||||
// Vorsprung gefordert, wird deshalb die Variante ohne Unentschieden gespeichert — sonst
|
|
||||||
// stuende in der Konfiguration zweierlei, das sich widerspricht.
|
|
||||||
if ($punkte_vorsprung_einzel > 1 && $punkte_sieg_einzel < 0)
|
if ($punkte_vorsprung_einzel > 1 && $punkte_sieg_einzel < 0)
|
||||||
$punkte_sieg_einzel = abs($punkte_sieg_einzel);
|
$punkte_sieg_einzel = abs($punkte_sieg_einzel);
|
||||||
if ($punkte_vorsprung_doppel > 1 && $punkte_sieg_doppel < 0)
|
if ($punkte_vorsprung_doppel > 1 && $punkte_sieg_doppel < 0)
|
||||||
$punkte_sieg_doppel = abs($punkte_sieg_doppel);
|
$punkte_sieg_doppel = abs($punkte_sieg_doppel);
|
||||||
// Ohne Siegbedingung („Beliebig") gibt es nichts, worauf sich Vorsprung oder Deckelung
|
|
||||||
// beziehen koennten.
|
|
||||||
if ($punkte_vorsprung_einzel <= 1) $punkte_deckel_einzel = 0;
|
if ($punkte_vorsprung_einzel <= 1) $punkte_deckel_einzel = 0;
|
||||||
if ($punkte_vorsprung_doppel <= 1) $punkte_deckel_doppel = 0;
|
if ($punkte_vorsprung_doppel <= 1) $punkte_deckel_doppel = 0;
|
||||||
if ($punkte_sieg_einzel == 0) {
|
if ($punkte_sieg_einzel == 0) {
|
||||||
@@ -4631,11 +4608,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$punkte_vorsprung_doppel = 1;
|
$punkte_vorsprung_doppel = 1;
|
||||||
$punkte_deckel_doppel = 0;
|
$punkte_deckel_doppel = 0;
|
||||||
}
|
}
|
||||||
// Zweite Ebene: die Regel INNERHALB eines Satzes. Sie ergibt nur dort einen Sinn, wo ein
|
|
||||||
// Spiel ueberhaupt aus Saetzen besteht — bei „Einer" ist das Spiel der Satz, und die
|
|
||||||
// Regel steht bereits in punkte_sieg_*. 0 heisst „nicht hinterlegt".
|
|
||||||
// Vorzeichenbehaftet wie punkte_sieg_*: der Betrag ist der Siegwert, ein negatives
|
|
||||||
// Vorzeichen erlaubt zusaetzlich ein Unentschieden ein Tor darunter.
|
|
||||||
$satz_sieg_einzel = $jInput->get('satz_sieg_einzel', 0, 'INT');
|
$satz_sieg_einzel = $jInput->get('satz_sieg_einzel', 0, 'INT');
|
||||||
$satz_sieg_doppel = $punkte_sieg_doppel_separat
|
$satz_sieg_doppel = $punkte_sieg_doppel_separat
|
||||||
? $jInput->get('satz_sieg_doppel', 0, 'INT')
|
? $jInput->get('satz_sieg_doppel', 0, 'INT')
|
||||||
@@ -4665,9 +4637,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$satz_vorsprung_doppel = 1;
|
$satz_vorsprung_doppel = 1;
|
||||||
$satz_deckel_doppel = 0;
|
$satz_deckel_doppel = 0;
|
||||||
}
|
}
|
||||||
// Wie eine Ebene hoeher: eine Grenze unter dem Siegwert ist ein Zahlendreher, und ein
|
|
||||||
// gefordertes Mindestvorsprung schliesst das Unentschieden aus — bei zwei Toren
|
|
||||||
// Vorsprung ist ein 5:5 bei „Sieg 6, Remis 5" kein Endstand, sondern ein laufender Satz.
|
|
||||||
if ($satz_vorsprung_einzel > 1 && $satz_sieg_einzel < 0)
|
if ($satz_vorsprung_einzel > 1 && $satz_sieg_einzel < 0)
|
||||||
$satz_sieg_einzel = abs($satz_sieg_einzel);
|
$satz_sieg_einzel = abs($satz_sieg_einzel);
|
||||||
if ($satz_vorsprung_doppel > 1 && $satz_sieg_doppel < 0)
|
if ($satz_vorsprung_doppel > 1 && $satz_sieg_doppel < 0)
|
||||||
@@ -4678,15 +4647,10 @@ function adminEditTeamspielmodus(): void
|
|||||||
$satz_deckel_einzel = 0;
|
$satz_deckel_einzel = 0;
|
||||||
if ($satz_deckel_doppel != 0 && $satz_deckel_doppel < abs($satz_sieg_doppel))
|
if ($satz_deckel_doppel != 0 && $satz_deckel_doppel < abs($satz_sieg_doppel))
|
||||||
$satz_deckel_doppel = 0;
|
$satz_deckel_doppel = 0;
|
||||||
// Wie viele Saetze ein Spiel hat. Eine Auswahl, zwei Familien: eine feste Zahl (alle
|
|
||||||
// werden gespielt, positiv) oder Gewinnsaetze (best of 2N-1, negativ). 0 = wie bisher.
|
|
||||||
$saetze_modus_einzel = $jInput->get('saetze_modus_einzel', 0, 'INT');
|
$saetze_modus_einzel = $jInput->get('saetze_modus_einzel', 0, 'INT');
|
||||||
$saetze_modus_doppel = $punkte_sieg_doppel_separat
|
$saetze_modus_doppel = $punkte_sieg_doppel_separat
|
||||||
? $jInput->get('saetze_modus_doppel', 0, 'INT')
|
? $jInput->get('saetze_modus_doppel', 0, 'INT')
|
||||||
: $saetze_modus_einzel;
|
: $saetze_modus_einzel;
|
||||||
// Abweichende Regel fuer den Entscheidungssatz. Den gibt es nur bei Gewinnsaetzen: er
|
|
||||||
// ist der Satz, der nach N-1 zu N-1 noch aussteht. Bei fester Satzzahl gaebe es keinen,
|
|
||||||
// und ohne Angabe zur Satzzahl waere nicht bestimmbar, welcher es waere.
|
|
||||||
$entscheidung_sieg_einzel = $jInput->get('entscheidung_sieg_einzel', 0, 'INT');
|
$entscheidung_sieg_einzel = $jInput->get('entscheidung_sieg_einzel', 0, 'INT');
|
||||||
$entscheidung_sieg_doppel = $punkte_sieg_doppel_separat
|
$entscheidung_sieg_doppel = $punkte_sieg_doppel_separat
|
||||||
? $jInput->get('entscheidung_sieg_doppel', 0, 'INT')
|
? $jInput->get('entscheidung_sieg_doppel', 0, 'INT')
|
||||||
@@ -4703,10 +4667,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$saetze_modus_einzel = 0;
|
$saetze_modus_einzel = 0;
|
||||||
$saetze_modus_doppel = 0;
|
$saetze_modus_doppel = 0;
|
||||||
}
|
}
|
||||||
// Die Satzzahl wird ZUSAETZLICH nach punkte_sieg_* gespiegelt, damit eine aeltere
|
|
||||||
// Programmfassung dieselbe wahre Aussage liest: N Gewinnsaetze als N, eine feste
|
|
||||||
// Satzzahl als den Stand, bei dem sie entschieden ist. Umkehrung der Ueberfuehrung
|
|
||||||
// in update.php, also verlustfrei.
|
|
||||||
$sieg_aus_satzzahl = function ($modus) {
|
$sieg_aus_satzzahl = function ($modus) {
|
||||||
if ($modus < 0) return -$modus; // N Gewinnsaetze
|
if ($modus < 0) return -$modus; // N Gewinnsaetze
|
||||||
if ($modus == 0) return null; // keine Angabe
|
if ($modus == 0) return null; // keine Angabe
|
||||||
@@ -4726,8 +4686,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$punkte_vorsprung_doppel = 1;
|
$punkte_vorsprung_doppel = 1;
|
||||||
$punkte_deckel_doppel = 0;
|
$punkte_deckel_doppel = 0;
|
||||||
}
|
}
|
||||||
// Ohne Gewinnsaetze gibt es keinen Entscheidungssatz, und ohne eigene Siegbedingung
|
|
||||||
// keine Abweichung — dann bleiben die Felder auf ihren neutralen Werten.
|
|
||||||
if ($saetze_modus_einzel >= 0) $entscheidung_sieg_einzel = 0;
|
if ($saetze_modus_einzel >= 0) $entscheidung_sieg_einzel = 0;
|
||||||
if ($saetze_modus_doppel >= 0) $entscheidung_sieg_doppel = 0;
|
if ($saetze_modus_doppel >= 0) $entscheidung_sieg_doppel = 0;
|
||||||
if ($entscheidung_sieg_einzel == 0) {
|
if ($entscheidung_sieg_einzel == 0) {
|
||||||
@@ -4748,11 +4706,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
$entscheidung_deckel_einzel = 0;
|
$entscheidung_deckel_einzel = 0;
|
||||||
if ($entscheidung_deckel_doppel != 0 && $entscheidung_deckel_doppel < abs($entscheidung_sieg_doppel))
|
if ($entscheidung_deckel_doppel != 0 && $entscheidung_deckel_doppel < abs($entscheidung_sieg_doppel))
|
||||||
$entscheidung_deckel_doppel = 0;
|
$entscheidung_deckel_doppel = 0;
|
||||||
// Race-Modus: der Stand laeuft ueber die Begegnung durch.
|
|
||||||
//
|
|
||||||
// Das Ziel wird NICHT eingegeben — es ergibt sich aus der Spielfolge (Anzahl Spiele mal
|
|
||||||
// Schritt) und stuende sonst als zweite Wahrheit neben ihr. Mindestvorsprung, Grenze
|
|
||||||
// und Unentschieden gelten allein fuer das letzte Spiel, also fuer das Ziel.
|
|
||||||
$zaehlweise = $jInput->get('zaehlweise', 0, 'INT') != 0 ? 1 : 0;
|
$zaehlweise = $jInput->get('zaehlweise', 0, 'INT') != 0 ? 1 : 0;
|
||||||
$race_schritt = max(0, $jInput->get('race_schritt', 0, 'INT'));
|
$race_schritt = max(0, $jInput->get('race_schritt', 0, 'INT'));
|
||||||
$race_vorsprung = max(1, $jInput->get('race_vorsprung', 1, 'INT'));
|
$race_vorsprung = max(1, $jInput->get('race_vorsprung', 1, 'INT'));
|
||||||
@@ -4812,9 +4765,6 @@ function adminEditTeamspielmodus(): void
|
|||||||
if (strlen($verknuepfungen) > 0)
|
if (strlen($verknuepfungen) > 0)
|
||||||
$modus .= "|" . $verknuepfungen;
|
$modus .= "|" . $verknuepfungen;
|
||||||
|
|
||||||
// Erst hier, weil das Ziel die Anzahl der Spiele braucht: Race setzt „ein Satz je Spiel"
|
|
||||||
// und „Spielergebnis als Spielpunkte" voraus, und das Ziel wird in die Altfelder gespiegelt
|
|
||||||
// — dieselbe wahre Aussage, die dort seit jeher steht („das Spiel ist bei N Toren
|
|
||||||
if ($zaehlweise == 1) {
|
if ($zaehlweise == 1) {
|
||||||
$spiele_anzahl = count(array_filter(explode(",", explode("|", $modus)[0]), 'strlen'));
|
$spiele_anzahl = count(array_filter(explode(",", explode("|", $modus)[0]), 'strlen'));
|
||||||
$race_ziel = $spiele_anzahl * $race_schritt;
|
$race_ziel = $spiele_anzahl * $race_schritt;
|
||||||
@@ -4843,11 +4793,8 @@ function adminEditTeamspielmodus(): void
|
|||||||
$punkte_vorsprung_doppel = 1;
|
$punkte_vorsprung_doppel = 1;
|
||||||
$punkte_deckel_einzel = 0;
|
$punkte_deckel_einzel = 0;
|
||||||
$punkte_deckel_doppel = 0;
|
$punkte_deckel_doppel = 0;
|
||||||
// Eine Grenze unter dem Ziel waere ein Zahlendreher — und ohne geforderten
|
|
||||||
// Vorsprung endet das Rennen ohnehin exakt am Ziel.
|
|
||||||
if ($race_vorsprung <= 1 || ($race_deckel != 0 && $race_deckel < $race_ziel))
|
if ($race_vorsprung <= 1 || ($race_deckel != 0 && $race_deckel < $race_ziel))
|
||||||
$race_deckel = 0;
|
$race_deckel = 0;
|
||||||
// Vorsprung und Unentschieden schliessen sich aus, wie eine Ebene tiefer auch.
|
|
||||||
if ($race_vorsprung > 1 && $race_remis) {
|
if ($race_vorsprung > 1 && $race_remis) {
|
||||||
$race_remis = 0;
|
$race_remis = 0;
|
||||||
$punkte_sieg_einzel = $race_ziel;
|
$punkte_sieg_einzel = $race_ziel;
|
||||||
@@ -5548,7 +5495,6 @@ function adminSpielverlegungMailen(): void
|
|||||||
$spielverlegung->genehmigt_von = "";
|
$spielverlegung->genehmigt_von = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$query = "SELECT nachname, vorname, email"
|
$query = "SELECT nachname, vorname, email"
|
||||||
. "\n FROM #__sportsmanager_vereinsansprechpartner"
|
. "\n FROM #__sportsmanager_vereinsansprechpartner"
|
||||||
. "\n WHERE verein_id IN ('$spielverlegung->heim_verein_id', '$spielverlegung->gast_verein_id')"
|
. "\n WHERE verein_id IN ('$spielverlegung->heim_verein_id', '$spielverlegung->gast_verein_id')"
|
||||||
@@ -7203,7 +7149,6 @@ function adminEditSaison(): void
|
|||||||
die($db->stderr(true));
|
die($db->stderr(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
redirectSportsManagerURL('&task=admin_saisons');
|
redirectSportsManagerURL('&task=admin_saisons');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10988,16 +10933,6 @@ function adminEditBegegnungSpielplan($bestaetigen): void
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Kann ein Spiel dieses Satzmodus ueberhaupt unentschieden enden?
|
|
||||||
//
|
|
||||||
// Gleichstand ist nicht immer ein Unentschieden. Wo eine Zahl von GEWINNSAETZEN gilt, hat ein
|
|
||||||
// Spiel mit gleichem Satzstand noch keinen Sieger — es ist unfertig, und dafuer gibt es keinen
|
|
||||||
// Punkt. Ohne Angabe zur Satzzahl bleibt es beim bisherigen Verhalten.
|
|
||||||
//
|
|
||||||
// Steht bewusst auf Dateiebene und nicht als Closure im Speicher-Loop: die Spielpunkte werden
|
|
||||||
// an ZWEI Stellen berechnet — hier beim Speichern eines Spielberichts und in
|
|
||||||
// begegnungenAktualisieren() bei einer Modus-/Wettbewerbsaenderung. Dort fehlte die Regel,
|
|
||||||
// sodass beide Wege demselben Spiel verschiedene Spielpunkte gaben (gefunden 2026-09-08).
|
|
||||||
function remisMoeglich($saetze_modus): bool
|
function remisMoeglich($saetze_modus): bool
|
||||||
{
|
{
|
||||||
if ($saetze_modus == 0) return true; // keine Angabe
|
if ($saetze_modus == 0) return true; // keine Angabe
|
||||||
@@ -11055,7 +10990,6 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id, Text::_('COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED'));
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id, Text::_('COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis,"
|
$query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis,"
|
||||||
. " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen"
|
. " (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen"
|
||||||
. "\n FROM #__sportsmanager_begegnung"
|
. "\n FROM #__sportsmanager_begegnung"
|
||||||
@@ -11217,8 +11151,6 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
} else {
|
} else {
|
||||||
$spiel_heim_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte_detailliert', array(), 'ARRAY');
|
$spiel_heim_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte_detailliert', array(), 'ARRAY');
|
||||||
$spiel_gast_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte_detailliert', array(), 'ARRAY');
|
$spiel_gast_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte_detailliert', array(), 'ARRAY');
|
||||||
// Durchweg leere Satzfelder sind keine Aussage ueber Saetze, sondern „hier wurde
|
|
||||||
// nichts eingetragen" — sonst loescht blosses Oeffnen und Speichern den Altbestand.
|
|
||||||
$satzfelder_leer = true;
|
$satzfelder_leer = true;
|
||||||
foreach ($spiel_heim_punkte_detailliert as $wert) {
|
foreach ($spiel_heim_punkte_detailliert as $wert) {
|
||||||
if ($wert !== '' && $wert !== null) {
|
if ($wert !== '' && $wert !== null) {
|
||||||
@@ -11241,9 +11173,6 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
if (empty($spiel_heim_punkte_detailliert)) {
|
if (empty($spiel_heim_punkte_detailliert)) {
|
||||||
$spiel_heim_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte', 0, 'INT');
|
$spiel_heim_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte', 0, 'INT');
|
||||||
$spiel_gast_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte', 0, 'INT');
|
$spiel_gast_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte', 0, 'INT');
|
||||||
// Wo der Wettbewerb Ergebnisse JE SATZ fuehrt, bleibt ergebnis_detailliert bei einer
|
|
||||||
// Meldung ohne Satzfelder LEER: das eine Paar bedeutet dort Saetze, und wer es als
|
|
||||||
// Tore liest, rechnet 1:0 statt 3:1. Der Satzstand steht in teamspiel_*_punkte.
|
|
||||||
$ergebnis_detailliert = ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0)
|
$ergebnis_detailliert = ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0)
|
||||||
|| !empty($teamspiel_modus->satzergebnisse)
|
|| !empty($teamspiel_modus->satzergebnisse)
|
||||||
? ''
|
? ''
|
||||||
@@ -11303,8 +11232,6 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
$spiel_gast_spieler_2_id = $t;
|
$spiel_gast_spieler_2_id = $t;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Echte Satzergebnisse nicht durch ihren eigenen Spiegel ersetzen: bringt ein Aufruf
|
|
||||||
// keine Satzfelder mit und stehen im Bestand mehrere Paare, bleibt der Detailtext.
|
|
||||||
if (isset($spiel_heim_punkte_detailliert) && empty($spiel_heim_punkte_detailliert)
|
if (isset($spiel_heim_punkte_detailliert) && empty($spiel_heim_punkte_detailliert)
|
||||||
&& isset($spiele_nummern[$spiel_nr])) {
|
&& isset($spiele_nummern[$spiel_nr])) {
|
||||||
$bestand = $spiele_nummern[$spiel_nr];
|
$bestand = $spiele_nummern[$spiel_nr];
|
||||||
@@ -12049,7 +11976,6 @@ function GruppenspieleMatrix($anzahlteams): array
|
|||||||
die("This case is invalid: Nr of teams " . $anzahlteams);
|
die("This case is invalid: Nr of teams " . $anzahlteams);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Spieltag_Nr;Spiel_Nr;Heim14;Gast14;Heim12;Gast12;Heim10;Gast10;Heim8;Gast8;Heim6;Gast6;Heim4;Gast4
|
//Spieltag_Nr;Spiel_Nr;Heim14;Gast14;Heim12;Gast12;Heim10;Gast10;Heim8;Gast8;Heim6;Gast6;Heim4;Gast4
|
||||||
//Folgende Zeilen dürfen nicht eingrückt werden.
|
//Folgende Zeilen dürfen nicht eingrückt werden.
|
||||||
$str_Setzliste_Matrix =
|
$str_Setzliste_Matrix =
|
||||||
@@ -12333,7 +12259,6 @@ function adminBegegnungenGenerierenForm(): void
|
|||||||
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
|
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
|
||||||
$Zeile++;
|
$Zeile++;
|
||||||
|
|
||||||
|
|
||||||
if ($runden == 2) {
|
if ($runden == 2) {
|
||||||
$weiterer_spieltag = $spieltag + $spieltage;
|
$weiterer_spieltag = $spieltag + $spieltage;
|
||||||
|
|
||||||
@@ -13550,7 +13475,6 @@ function sportsmanagerExportErgaenzeSpielberichte($db, int $veranstaltungId, arr
|
|||||||
$spielmodus = loadObjectList($db, $query);
|
$spielmodus = loadObjectList($db, $query);
|
||||||
$Anzahl_Saetze = count(explode(",", $spielmodus[0]->modus));
|
$Anzahl_Saetze = count(explode(",", $spielmodus[0]->modus));
|
||||||
|
|
||||||
|
|
||||||
foreach ($rows as $value) {
|
foreach ($rows as $value) {
|
||||||
|
|
||||||
$value->vorgeschlagen_um = "";
|
$value->vorgeschlagen_um = "";
|
||||||
@@ -14743,7 +14667,6 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[NoReturn] function adminImportTurnierdisziplinMeldungenSpiele(): void
|
#[NoReturn] function adminImportTurnierdisziplinMeldungenSpiele(): void
|
||||||
{
|
{
|
||||||
$db = getDatabase();
|
$db = getDatabase();
|
||||||
@@ -15956,8 +15879,6 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach (array(1, 2, 3, 10) as $rundenstufe) {
|
foreach (array(1, 2, 3, 10) as $rundenstufe) {
|
||||||
$query = "SELECT runde, COUNT(*) AS spiele"
|
$query = "SELECT runde, COUNT(*) AS spiele"
|
||||||
. "\n FROM #__sportsmanager_turnierspiel"
|
. "\n FROM #__sportsmanager_turnierspiel"
|
||||||
@@ -19019,7 +18940,6 @@ function adminEditTermineLand($admin_uebersicht): void
|
|||||||
$land = $db->escape(trim($jInput->get('land', '', 'RAW')));
|
$land = $db->escape(trim($jInput->get('land', '', 'RAW')));
|
||||||
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
||||||
|
|
||||||
|
|
||||||
if ($termine_umbenennen) {
|
if ($termine_umbenennen) {
|
||||||
$query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id";
|
$query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id";
|
||||||
$rows = loadObjectList($db, $query);
|
$rows = loadObjectList($db, $query);
|
||||||
|
|||||||
@@ -5789,22 +5789,6 @@ function updateDatabase(): void
|
|||||||
|
|
||||||
if ($datenbank_version < 122) {
|
if ($datenbank_version < 122) {
|
||||||
|
|
||||||
// Siegbedingungen vollstaendig abbilden (Issue #304). Muss der LETZTE Block der
|
|
||||||
// Kette bleiben, sonst bleibt die kleinere Versionsnummer stehen.
|
|
||||||
//
|
|
||||||
// Wertebereiche der neuen Spalten:
|
|
||||||
// satz_sieg_* 0 = nicht hinterlegt; sonst Betrag = Siegwert, negativ
|
|
||||||
// erlaubt ein Remis ein Tor darunter (wie punkte_sieg_*)
|
|
||||||
// saetze_modus_* 0 = wie bisher, N > 0 = feste Satzzahl, -N = N Gewinnsaetze
|
|
||||||
// entscheidung_* 0 = keine Abweichung vom satz_*-Wert
|
|
||||||
// zaehlweise 0 = je Spiel, 1 = Race (Stand laeuft durch die Begegnung)
|
|
||||||
//
|
|
||||||
// satzergebnisse ist eine EIGENE Spalte und kein dritter punktetyp-Wert: punktetyp
|
|
||||||
// ist das Feld, aus dem fremde Anwendungen ablesen, ob die Punkte eines Spiels Tore
|
|
||||||
// oder Saetze sind, und kennt seit jeher zwei Werte.
|
|
||||||
//
|
|
||||||
// Alle Vorgabewerte beschreiben das heutige Verhalten; keine bestehende Spalte wird
|
|
||||||
// angetastet.
|
|
||||||
$columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus');
|
$columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus');
|
||||||
if (!array_key_exists('satzergebnisse', $columns)) {
|
if (!array_key_exists('satzergebnisse', $columns)) {
|
||||||
$query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`"
|
$query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`"
|
||||||
@@ -5838,12 +5822,6 @@ function updateDatabase(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bestehende „Mehrere"-Modi in die Satzzahl ueberfuehren — die Umkehrung der
|
|
||||||
// Spiegelung, die der Editor beim Speichern vornimmt:
|
|
||||||
// punkte_sieg_* 1 -> ein fester Satz
|
|
||||||
// N -> N Gewinnsaetze (haeufigere der beiden Lesarten)
|
|
||||||
// -N -> feste Satzzahl 2(N-1) (Remis setzt alle Saetze voraus)
|
|
||||||
// 0 -> bleibt 0 („Beliebig")
|
|
||||||
$query = "UPDATE #__sportsmanager_teamspiel_modus"
|
$query = "UPDATE #__sportsmanager_teamspiel_modus"
|
||||||
. "\n SET saetze_modus_einzel = CASE"
|
. "\n SET saetze_modus_einzel = CASE"
|
||||||
. "\n WHEN punktetyp = 0 THEN 0"
|
. "\n WHEN punktetyp = 0 THEN 0"
|
||||||
|
|||||||
@@ -1773,7 +1773,6 @@ function veranstaltung(): void
|
|||||||
// Anzeigen
|
// Anzeigen
|
||||||
HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $showSeasons, $saisons, $filter_saison_id);
|
HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $showSeasons, $saisons, $filter_saison_id);
|
||||||
|
|
||||||
|
|
||||||
if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4]))
|
if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4]))
|
||||||
tabelle($veranstaltung, $spieltag, true);
|
tabelle($veranstaltung, $spieltag, true);
|
||||||
|
|
||||||
@@ -2338,9 +2337,6 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
|
|||||||
jexit();
|
jexit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function erstelleSetzliste($teams): array
|
function erstelleSetzliste($teams): array
|
||||||
{
|
{
|
||||||
$seedingPairs[4] = [[1, 4], [2, 3]];
|
$seedingPairs[4] = [[1, 4], [2, 3]];
|
||||||
@@ -2350,7 +2346,6 @@ function erstelleSetzliste($teams): array
|
|||||||
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
|
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
|
||||||
[3, 14], [6, 11], [7, 10], [2, 15]];
|
[3, 14], [6, 11], [7, 10], [2, 15]];
|
||||||
|
|
||||||
|
|
||||||
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
|
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
|
||||||
[5, 28], [12, 21], [13, 20], [4, 29],
|
[5, 28], [12, 21], [13, 20], [4, 29],
|
||||||
[3, 30], [14, 19], [11, 22], [6, 27],
|
[3, 30], [14, 19], [11, 22], [6, 27],
|
||||||
@@ -2374,8 +2369,6 @@ function erstelleSetzliste($teams): array
|
|||||||
[7,122], [58,71], [39,90], [26,103], [23,106], [42,87], [55,74], [10,119],
|
[7,122], [58,71], [39,90], [26,103], [23,106], [42,87], [55,74], [10,119],
|
||||||
[15,114], [50,79], [47,82], [18,111], [31,98], [34,95], [63,66], [2,127]];
|
[15,114], [50,79], [47,82], [18,111], [31,98], [34,95], [63,66], [2,127]];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$matches = [];
|
$matches = [];
|
||||||
|
|
||||||
// Teams durchschütteln
|
// Teams durchschütteln
|
||||||
@@ -2439,7 +2432,6 @@ function getSetzliste($anzahlRunden)
|
|||||||
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
|
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
|
||||||
[3, 14], [6, 11], [7, 10], [2, 15]];
|
[3, 14], [6, 11], [7, 10], [2, 15]];
|
||||||
|
|
||||||
|
|
||||||
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
|
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
|
||||||
[5, 28], [12, 21], [13, 20], [4, 29],
|
[5, 28], [12, 21], [13, 20], [4, 29],
|
||||||
[3, 30], [14, 19], [11, 22], [6, 27],
|
[3, 30], [14, 19], [11, 22], [6, 27],
|
||||||
@@ -2577,7 +2569,6 @@ function turnierbaumAnzeigen($veranstaltung): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Alle Begegnungen aus Datenbank
|
//Alle Begegnungen aus Datenbank
|
||||||
$query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart,"
|
$query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart,"
|
||||||
. "\n if(t2.teamname_kurz <> '',t2.teamname_kurz, t2.teamname) AS Heim,"
|
. "\n if(t2.teamname_kurz <> '',t2.teamname_kurz, t2.teamname) AS Heim,"
|
||||||
@@ -3495,7 +3486,6 @@ function mannschaften($ansicht_vereinigt): void
|
|||||||
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
||||||
$filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT');
|
$filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT');
|
||||||
|
|
||||||
|
|
||||||
if ($filter_saison_id == 0)
|
if ($filter_saison_id == 0)
|
||||||
$filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT');
|
$filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT');
|
||||||
|
|
||||||
@@ -3519,7 +3509,6 @@ function mannschaften($ansicht_vereinigt): void
|
|||||||
$filter_saison_id = $saisons[0]->saison_id;
|
$filter_saison_id = $saisons[0]->saison_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!isJson()) {
|
if (!isJson()) {
|
||||||
HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
|
HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id);
|
||||||
}
|
}
|
||||||
@@ -3576,7 +3565,6 @@ function mannschaften($ansicht_vereinigt): void
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false): void
|
function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false): void
|
||||||
{
|
{
|
||||||
$db = getDatabase();
|
$db = getDatabase();
|
||||||
@@ -4422,7 +4410,6 @@ function verbandsorganeDetails($uebergabe_id = 0): void
|
|||||||
|
|
||||||
global $params;
|
global $params;
|
||||||
|
|
||||||
|
|
||||||
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : $app->getIdentity()->id);
|
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : $app->getIdentity()->id);
|
||||||
if ($user_id > 0)
|
if ($user_id > 0)
|
||||||
$erweiterte_anzeige = true;
|
$erweiterte_anzeige = true;
|
||||||
@@ -7788,10 +7775,6 @@ function turniervoranmeldungen(): void
|
|||||||
administrationFooter();
|
administrationFooter();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Die Einheit der Spalten „T +/-" einer Bestenliste: 0 = Tore, 1 = Saetze, null = gemischt
|
|
||||||
/// oder unbekannt. Die Werte sind die Summe der teamspiel_*_punkte, und die zaehlen je
|
|
||||||
/// punktetyp Tore oder gewonnene Saetze. Eine Bestenliste kann mehrere Wettbewerbe umfassen —
|
|
||||||
/// dann gibt es keine gemeinsame Einheit.
|
|
||||||
function spielerstatistikEinheit($bestenliste_id): ?int
|
function spielerstatistikEinheit($bestenliste_id): ?int
|
||||||
{
|
{
|
||||||
$db = getDatabase();
|
$db = getDatabase();
|
||||||
@@ -7804,7 +7787,6 @@ function spielerstatistikEinheit($bestenliste_id): ?int
|
|||||||
if (count($rows) != 1) {
|
if (count($rows) != 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// Individualwettbewerbe kennen keinen punktetyp; sind welche dabei, ist die Einheit offen.
|
|
||||||
$query = "SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb"
|
$query = "SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb"
|
||||||
. "\n WHERE bestenliste_id = " . (int)$bestenliste_id;
|
. "\n WHERE bestenliste_id = " . (int)$bestenliste_id;
|
||||||
if (!empty(loadResult($db, $query))) {
|
if (!empty(loadResult($db, $query))) {
|
||||||
|
|||||||
@@ -1017,7 +1017,6 @@ static function turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpi
|
|||||||
bilder_zeigen();
|
bilder_zeigen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.addEventListener("resize", onResize);
|
window.addEventListener("resize", onResize);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -1598,14 +1597,9 @@ if (count($spiele) > 0) {
|
|||||||
|
|
||||||
<td style="text-align: center" nowrap>
|
<td style="text-align: center" nowrap>
|
||||||
<?php
|
<?php
|
||||||
// Der Stand des Spiels, und die Satzergebnisse dahinter, wo sie einzeln
|
|
||||||
// erfasst sind. Bisher stand hier NUR ergebnis_detailliert: bei reinem
|
|
||||||
// „Mehrere" ist das derselbe Stand, bei Erfassung je Satz sind es die
|
|
||||||
// Saetze — und dann fehlte, wer das Spiel gewonnen hat.
|
|
||||||
$stand = $spiel->teamspiel_heim_punkte . ':' . $spiel->teamspiel_gast_punkte;
|
$stand = $spiel->teamspiel_heim_punkte . ':' . $spiel->teamspiel_gast_punkte;
|
||||||
$saetze = str_replace(" ", " | ", (string)$spiel->ergebnis_detailliert);
|
$saetze = str_replace(" ", " | ", (string)$spiel->ergebnis_detailliert);
|
||||||
if ($saetze === '' && $spiel->teamspiel_heim_punkte == 0 && $spiel->teamspiel_gast_punkte == 0) {
|
if ($saetze === '' && $spiel->teamspiel_heim_punkte == 0 && $spiel->teamspiel_gast_punkte == 0) {
|
||||||
// Nicht gespielt: wie bisher leer, kein „0:0".
|
|
||||||
} else if ($saetze === '' || $saetze === $stand) {
|
} else if ($saetze === '' || $saetze === $stand) {
|
||||||
echo htmlentities_utf8($saetze !== '' ? $saetze : $stand);
|
echo htmlentities_utf8($saetze !== '' ? $saetze : $stand);
|
||||||
} else {
|
} else {
|
||||||
@@ -1802,9 +1796,6 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
|
|||||||
<strong><?php echo Text::_('COM_SPORTSMANAGER_PENALTY'); ?></strong></th>
|
<strong><?php echo Text::_('COM_SPORTSMANAGER_PENALTY'); ?></strong></th>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
// Die Spalte zaehlt bei „Einer" Tore und bei „Mehrere" Saetze — sie hiess
|
|
||||||
// bisher in beiden Faellen „Tore", weil die Bedingung auf punktetyp == 2
|
|
||||||
// prueft und punktetyp nur 0 und 1 kennt.
|
|
||||||
if ($veranstaltung->tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) {
|
if ($veranstaltung->tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) {
|
||||||
if ($alleine_angezeigt && $praesentation == 0) {
|
if ($alleine_angezeigt && $praesentation == 0) {
|
||||||
?>
|
?>
|
||||||
@@ -6949,10 +6940,6 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
|
|||||||
<strong><?php echo Text::_('COM_SPORTSMANAGER_DEFEATS_SHORTCUT'); ?></strong>
|
<strong><?php echo Text::_('COM_SPORTSMANAGER_DEFEATS_SHORTCUT'); ?></strong>
|
||||||
</th>
|
</th>
|
||||||
<?php
|
<?php
|
||||||
// Die Spalten summieren teamspiel_*_punkte — je punktetyp also Tore oder
|
|
||||||
// gewonnene Saetze. Umfasst die Bestenliste beides (oder auch
|
|
||||||
// Individualwettbewerbe), gibt es keine gemeinsame Einheit; dann steht
|
|
||||||
// „Punkte", statt eine zu behaupten.
|
|
||||||
$einheit_lang = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS'
|
$einheit_lang = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS'
|
||||||
: ($einheit === 1 ? 'COM_SPORTSMANAGER_SETS' : 'COM_SPORTSMANAGER_POINTS');
|
: ($einheit === 1 ? 'COM_SPORTSMANAGER_SETS' : 'COM_SPORTSMANAGER_POINTS');
|
||||||
$einheit_kurz = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS_SHORTCUT'
|
$einheit_kurz = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS_SHORTCUT'
|
||||||
@@ -7927,7 +7914,6 @@ static function ranglistenHeader($titel, $beschreibung, $saisons, $filter_saison
|
|||||||
{
|
{
|
||||||
global $params;
|
global $params;
|
||||||
|
|
||||||
|
|
||||||
if (!empty($titel)) { ?>
|
if (!empty($titel)) { ?>
|
||||||
<div
|
<div
|
||||||
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo htmlentities_utf8($titel); ?></div><?php }
|
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo htmlentities_utf8($titel); ?></div><?php }
|
||||||
@@ -8142,7 +8128,6 @@ static function ranglistenpunkte($rangliste, $rangliste_punkte, $turnierdiszipli
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
||||||
<div class="uk-overflow-auto">
|
<div class="uk-overflow-auto">
|
||||||
<table class="uk-table uk-table-middle"
|
<table class="uk-table uk-table-middle"
|
||||||
style="width: 100%; border: none; border-spacing: 0; padding: 3px">
|
style="width: 100%; border: none; border-spacing: 0; padding: 3px">
|
||||||
|
|||||||
@@ -4642,11 +4642,6 @@ class HTML_sportsmanager_admin
|
|||||||
static function adminEditTeamspielmodus($row): void
|
static function adminEditTeamspielmodus($row): void
|
||||||
{
|
{
|
||||||
global $params;
|
global $params;
|
||||||
// „Doppel separat" war bisher allein an punkte_sieg_* abzulesen. Seit Vorsprung,
|
|
||||||
// Deckelung und der Satzregel dazugehoeren, reicht das nicht mehr: zwei Modi mit
|
|
||||||
// gleicher Siegbedingung, aber verschiedenem Vorsprung im Doppel haetten ihre
|
|
||||||
// Doppel-Zeilen sonst versteckt — und beim naechsten Speichern waere der
|
|
||||||
// abweichende Wert stillschweigend ueberschrieben worden.
|
|
||||||
$doppel_separat = !empty($row) && (
|
$doppel_separat = !empty($row) && (
|
||||||
$row->punkte_sieg_einzel != $row->punkte_sieg_doppel
|
$row->punkte_sieg_einzel != $row->punkte_sieg_doppel
|
||||||
|| ($row->punkte_vorsprung_einzel ?? 1) != ($row->punkte_vorsprung_doppel ?? 1)
|
|| ($row->punkte_vorsprung_einzel ?? 1) != ($row->punkte_vorsprung_doppel ?? 1)
|
||||||
@@ -4658,22 +4653,13 @@ class HTML_sportsmanager_admin
|
|||||||
|| ($row->entscheidung_sieg_einzel ?? 0) != ($row->entscheidung_sieg_doppel ?? 0)
|
|| ($row->entscheidung_sieg_einzel ?? 0) != ($row->entscheidung_sieg_doppel ?? 0)
|
||||||
|| ($row->entscheidung_vorsprung_einzel ?? 1) != ($row->entscheidung_vorsprung_doppel ?? 1)
|
|| ($row->entscheidung_vorsprung_einzel ?? 1) != ($row->entscheidung_vorsprung_doppel ?? 1)
|
||||||
|| ($row->entscheidung_deckel_einzel ?? 0) != ($row->entscheidung_deckel_doppel ?? 0));
|
|| ($row->entscheidung_deckel_einzel ?? 0) != ($row->entscheidung_deckel_doppel ?? 0));
|
||||||
// Die Satzregel gibt es nur, wo ein Spiel aus Saetzen besteht.
|
|
||||||
$saetze_moeglich = !empty($row) && $row->punktetyp != 0;
|
$saetze_moeglich = !empty($row) && $row->punktetyp != 0;
|
||||||
// Einen Entscheidungssatz gibt es nur bei Gewinnsaetzen: er ist der Satz, der nach
|
|
||||||
// N-1 zu N-1 noch aussteht. Bei fester Satzzahl gibt es keinen.
|
|
||||||
$entscheidung_moeglich = $saetze_moeglich && ($row->saetze_modus_einzel ?? 0) < 0;
|
$entscheidung_moeglich = $saetze_moeglich && ($row->saetze_modus_einzel ?? 0) < 0;
|
||||||
$entscheidung_moeglich_doppel = $doppel_separat && !empty($row)
|
$entscheidung_moeglich_doppel = $doppel_separat && !empty($row)
|
||||||
&& $row->punktetyp != 0 && ($row->saetze_modus_doppel ?? 0) < 0;
|
&& $row->punktetyp != 0 && ($row->saetze_modus_doppel ?? 0) < 0;
|
||||||
// Wer die Satzzahl waehlt, legt damit die Siegbedingung des Spiels fest — Vorsprung und
|
|
||||||
// Deckelung auf Spielebene haetten daneben nichts mehr zu sagen.
|
|
||||||
$eigene_spielregel_verborgen = $saetze_moeglich;
|
$eigene_spielregel_verborgen = $saetze_moeglich;
|
||||||
$eigene_spielregel_verborgen_doppel = $saetze_moeglich;
|
$eigene_spielregel_verborgen_doppel = $saetze_moeglich;
|
||||||
// Im Race-Modus laeuft der Stand ueber die Begegnung durch; die Regeln des
|
|
||||||
// einzelnen Spiels und des Satzes gibt es dort nicht.
|
|
||||||
$race_an = !empty($row) && ($row->zaehlweise ?? 0) != 0;
|
$race_an = !empty($row) && ($row->zaehlweise ?? 0) != 0;
|
||||||
// Die Einheit der Spielebene haengt an punktetyp: Tore bei „Einer", gewonnene
|
|
||||||
// Saetze bei „Mehrere". Vorher stand in beiden Faellen „Punkte".
|
|
||||||
$einheit_option = function ($wert, $gewaehlt, $tore, $saetze) use ($saetze_moeglich) {
|
$einheit_option = function ($wert, $gewaehlt, $tore, $saetze) use ($saetze_moeglich) {
|
||||||
return "<option value=\"" . $wert . "\"" . ($gewaehlt ? " selected" : "")
|
return "<option value=\"" . $wert . "\"" . ($gewaehlt ? " selected" : "")
|
||||||
. " data-tore=\"" . htmlentities_utf8($tore) . "\""
|
. " data-tore=\"" . htmlentities_utf8($tore) . "\""
|
||||||
@@ -4689,7 +4675,6 @@ class HTML_sportsmanager_admin
|
|||||||
: <?php echo($row != null ? Text::_('COM_SPORTSMANAGER_CHANGING') : Text::_('COM_SPORTSMANAGER_ADD')); ?></div>
|
: <?php echo($row != null ? Text::_('COM_SPORTSMANAGER_CHANGING') : Text::_('COM_SPORTSMANAGER_ADD')); ?></div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
/* Die Zellen dieses Formulars tragen alle `nowrap` — richtig fuer Beschriftungen
|
|
||||||
und Auswahlfelder, falsch fuer Prosa: die Hinweise zogen die Tabelle beliebig
|
und Auswahlfelder, falsch fuer Prosa: die Hinweise zogen die Tabelle beliebig
|
||||||
breit (Sven 2026-09-02). Sie brechen deshalb ausdruecklich um, und zwar mit
|
breit (Sven 2026-09-02). Sie brechen deshalb ausdruecklich um, und zwar mit
|
||||||
einem Mass: ohne max-width liefe eine Zeile auf einem breiten Bildschirm ueber
|
einem Mass: ohne max-width liefe eine Zeile auf einem breiten Bildschirm ueber
|
||||||
@@ -4702,20 +4687,12 @@ class HTML_sportsmanager_admin
|
|||||||
</style>
|
</style>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function punkte_sieg_doppel_anzeigen() {
|
function punkte_sieg_doppel_anzeigen() {
|
||||||
// Vorsprung, Deckelung und die Satzregel gehoeren zur Siegbedingung — eine
|
|
||||||
// Schaltung fuer alle, statt eines Knopfes je Zeile.
|
|
||||||
document.adminForm.punkte_sieg_doppel_separat.value =
|
document.adminForm.punkte_sieg_doppel_separat.value =
|
||||||
document.adminForm.punkte_sieg_doppel_separat.value == 1 ? 0 : 1;
|
document.adminForm.punkte_sieg_doppel_separat.value == 1 ? 0 : 1;
|
||||||
zeilen_anzeigen();
|
zeilen_anzeigen();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Welche Zeilen sichtbar sind, haengt an genau zwei Schaltern: „Doppel separat"
|
|
||||||
// und der Frage, ob nach Saetzen gespielt wird. Beide werden hier zusammen
|
|
||||||
// ausgewertet, damit kein Zustand uebrig bleibt, den niemand herstellen wollte
|
|
||||||
// (etwa eine Satz-Doppel-Zeile ohne Saetze).
|
|
||||||
function zeilen_anzeigen() {
|
function zeilen_anzeigen() {
|
||||||
// Race blendet alles aus, was das EINZELNE Spiel und den Satz beschreibt:
|
|
||||||
// dort laeuft ein einziger Zaehler ueber die ganze Begegnung.
|
|
||||||
var race = document.adminForm.zaehlweise != null
|
var race = document.adminForm.zaehlweise != null
|
||||||
&& document.adminForm.zaehlweise.value == 1;
|
&& document.adminForm.zaehlweise.value == 1;
|
||||||
var separat = document.adminForm.punkte_sieg_doppel_separat.value == 1;
|
var separat = document.adminForm.punkte_sieg_doppel_separat.value == 1;
|
||||||
@@ -4724,21 +4701,14 @@ class HTML_sportsmanager_admin
|
|||||||
var el = document.getElementById(id);
|
var el = document.getElementById(id);
|
||||||
if (el != null) el.style.display = an ? '' : 'none';
|
if (el != null) el.style.display = an ? '' : 'none';
|
||||||
};
|
};
|
||||||
// Ohne geforderten Vorsprung endet ein Spiel exakt beim Siegwert — dann
|
|
||||||
// kann eine Grenze nie greifen, also wird sie auch nicht angeboten.
|
|
||||||
var vorsprung = function (name) {
|
var vorsprung = function (name) {
|
||||||
var el = document.adminForm[name];
|
var el = document.adminForm[name];
|
||||||
return el == null ? 1 : Number(el.value);
|
return el == null ? 1 : Number(el.value);
|
||||||
};
|
};
|
||||||
// Die Satzzahl-Auswahl bestimmt die Siegbedingung des Spiels mit: bei
|
|
||||||
// Gewinnsaetzen IST sie die Siegbedingung, bei fester Zahl gibt es keine.
|
|
||||||
// Deshalb wird das Feld dann nicht mehr angeboten, statt zwei Angaben
|
|
||||||
// nebeneinander zu stellen, von denen eine die andere ueberschreibt.
|
|
||||||
var wahl_einzel = saetze ? Number(document.adminForm.saetze_modus_einzel.value) : 0;
|
var wahl_einzel = saetze ? Number(document.adminForm.saetze_modus_einzel.value) : 0;
|
||||||
var wahl_doppel = separat && saetze
|
var wahl_doppel = separat && saetze
|
||||||
? Number(document.adminForm.saetze_modus_doppel.value)
|
? Number(document.adminForm.saetze_modus_doppel.value)
|
||||||
: wahl_einzel;
|
: wahl_einzel;
|
||||||
// Die Einheit der Spielebene: Tore bei „Einer", Saetze bei „Mehrere".
|
|
||||||
var einheit = saetze ? 'saetze' : 'tore';
|
var einheit = saetze ? 'saetze' : 'tore';
|
||||||
var felder = ['punkte_sieg_einzel', 'punkte_sieg_doppel',
|
var felder = ['punkte_sieg_einzel', 'punkte_sieg_doppel',
|
||||||
'punkte_vorsprung_einzel', 'punkte_vorsprung_doppel',
|
'punkte_vorsprung_einzel', 'punkte_vorsprung_doppel',
|
||||||
@@ -4752,8 +4722,6 @@ class HTML_sportsmanager_admin
|
|||||||
if (text != null) sel.options[o].textContent = text;
|
if (text != null) sel.options[o].textContent = text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Das Ziel folgt aus der Spielfolge; es wird nicht eingegeben, sondern
|
|
||||||
// hier laufend nachgerechnet, damit es beim Aendern der Folge mitgeht.
|
|
||||||
if (race) {
|
if (race) {
|
||||||
var spiele = 0;
|
var spiele = 0;
|
||||||
for (var n = 1; ; n++) {
|
for (var n = 1; ; n++) {
|
||||||
@@ -4779,8 +4747,6 @@ class HTML_sportsmanager_admin
|
|||||||
zeigen("row_race_ziel", race);
|
zeigen("row_race_ziel", race);
|
||||||
zeigen("row_race_vorsprung", race);
|
zeigen("row_race_vorsprung", race);
|
||||||
zeigen("row_race_deckel", race && vorsprung('race_vorsprung') > 1);
|
zeigen("row_race_deckel", race && vorsprung('race_vorsprung') > 1);
|
||||||
// Mit gefordertem Vorsprung endet das Rennen nie auf Gleichstand — ein
|
|
||||||
// Unentschieden anzubieten waere eine Regel, die sich selbst widerspricht.
|
|
||||||
zeigen("row_race_remis", race && vorsprung('race_vorsprung') <= 1);
|
zeigen("row_race_remis", race && vorsprung('race_vorsprung') <= 1);
|
||||||
zeigen("row_gruppe_spiel", !race);
|
zeigen("row_gruppe_spiel", !race);
|
||||||
zeigen("row_gruppe_satz", saetze);
|
zeigen("row_gruppe_satz", saetze);
|
||||||
@@ -4790,8 +4756,6 @@ class HTML_sportsmanager_admin
|
|||||||
zeigen("row_saetze_modus_einzel", saetze);
|
zeigen("row_saetze_modus_einzel", saetze);
|
||||||
zeigen("row_saetze_modus_doppel", saetze && separat);
|
zeigen("row_saetze_modus_doppel", saetze && separat);
|
||||||
zeigen("row_spielpunkte_wertung_doppel", !race && document.getElementById("row_spielpunkte_wertung_doppel") != null && document.adminForm.spielpunkte_wertung_doppel_separat.value == 1);
|
zeigen("row_spielpunkte_wertung_doppel", !race && document.getElementById("row_spielpunkte_wertung_doppel") != null && document.adminForm.spielpunkte_wertung_doppel_separat.value == 1);
|
||||||
// Wer eine Satzzahl waehlt, hat die Siegbedingung des Spiels damit gesagt —
|
|
||||||
// Vorsprung und Deckelung auf Spielebene haetten daneben nichts mehr zu melden.
|
|
||||||
zeigen("row_punkte_sieg_einzel", !race && !saetze);
|
zeigen("row_punkte_sieg_einzel", !race && !saetze);
|
||||||
zeigen("row_punkte_sieg_doppel", !race && !saetze && separat);
|
zeigen("row_punkte_sieg_doppel", !race && !saetze && separat);
|
||||||
zeigen("row_punkte_vorsprung_einzel", !race && !saetze);
|
zeigen("row_punkte_vorsprung_einzel", !race && !saetze);
|
||||||
@@ -4816,8 +4780,6 @@ class HTML_sportsmanager_admin
|
|||||||
: '<?php echo Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_SEPARATELY');?>';
|
: '<?php echo Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_SEPARATELY');?>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spielfolge und Verknuepfungen: hinzufuegen und entfernen ohne Rueckfrage — es ist
|
|
||||||
// nichts gespeichert, bis der Modus gespeichert wird (Sven 2026-09-01).
|
|
||||||
function _zeilenZustand(praefix, anzahl) {
|
function _zeilenZustand(praefix, anzahl) {
|
||||||
var letzte = 0;
|
var letzte = 0;
|
||||||
for (var i = 1; i <= anzahl; i++) {
|
for (var i = 1; i <= anzahl; i++) {
|
||||||
@@ -4882,10 +4844,6 @@ class HTML_sportsmanager_admin
|
|||||||
if (zeile != null) zeile.style.display = 'none';
|
if (zeile != null) zeile.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
// „Saetze pro Spiel" zu aendern rechnet nichts um: aus sechs Toren werden sechs
|
|
||||||
// Saetze, aus drei Saetzen drei Tore. Umrechnen KOENNTE man es auch nicht — aus
|
|
||||||
// „drei gewonnene Saetze" folgt keine Torzahl. Also wird gefragt, wo schon
|
|
||||||
// Ergebnisse stehen, und sonst geschwiegen (Sven 2026-09-01).
|
|
||||||
var _punktetyp_vorher = <?php echo !empty($row->satzergebnisse) ? 2 : (int)($row->punktetyp ?? 0); ?>;
|
var _punktetyp_vorher = <?php echo !empty($row->satzergebnisse) ? 2 : (int)($row->punktetyp ?? 0); ?>;
|
||||||
var _hat_ergebnisse = <?php echo !empty($row->hat_ergebnisse) ? 'true' : 'false'; ?>;
|
var _hat_ergebnisse = <?php echo !empty($row->hat_ergebnisse) ? 'true' : 'false'; ?>;
|
||||||
|
|
||||||
@@ -4917,9 +4875,6 @@ class HTML_sportsmanager_admin
|
|||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" style="padding-bottom: 1em">
|
<td colspan="2" style="padding-bottom: 1em">
|
||||||
<?php
|
<?php
|
||||||
// Die Begriffe stehen vor den Einstellungen, weil
|
|
||||||
// sie ineinander stecken und die Gruppen unten
|
|
||||||
// genau dieser Leiter folgen.
|
|
||||||
?>
|
?>
|
||||||
<small class="sm_hinweis"><?php echo Text::_('COM_SPORTSMANAGER_MODE_GLOSSARY'); ?></small>
|
<small class="sm_hinweis"><?php echo Text::_('COM_SPORTSMANAGER_MODE_GLOSSARY'); ?></small>
|
||||||
</td>
|
</td>
|
||||||
@@ -4990,10 +4945,6 @@ class HTML_sportsmanager_admin
|
|||||||
<select class="uk-select uk-form-width-large" name="race_schritt"
|
<select class="uk-select uk-form-width-large" name="race_schritt"
|
||||||
id="race_schritt" size="1" onChange="zeilen_anzeigen();">
|
id="race_schritt" size="1" onChange="zeilen_anzeigen();">
|
||||||
<?php
|
<?php
|
||||||
// Sechs ist der Schritt, mit dem der Race-Modus gespielt wird; ohne
|
|
||||||
// Vorgabe stuende hier sonst die 1, weil der Browser die erste
|
|
||||||
// Auswahl nimmt — und die Wahl der Zaehlweise haette eine Regel
|
|
||||||
// gesetzt, die niemand gemeint hat (Sven 2026-09-02).
|
|
||||||
$race_schritt_vorgabe = ($row->race_schritt ?? 0) > 0
|
$race_schritt_vorgabe = ($row->race_schritt ?? 0) > 0
|
||||||
? (int)$row->race_schritt
|
? (int)$row->race_schritt
|
||||||
: 6;
|
: 6;
|
||||||
@@ -5011,11 +4962,6 @@ class HTML_sportsmanager_admin
|
|||||||
</td>
|
</td>
|
||||||
<td nowrap>
|
<td nowrap>
|
||||||
<span class="sm_hinweis" id="race_ziel"><?php
|
<span class="sm_hinweis" id="race_ziel"><?php
|
||||||
// Immer die Rechenvorschrift, und die konkrete Zahl erst ab zwei
|
|
||||||
// Spielen: bei einem einzigen (der Anfangszustand) waere „1 Spiele
|
|
||||||
// × 6 = 6 Tore" nicht nur ungrammatisch, sondern eine Auskunft
|
|
||||||
// ueber einen Zustand, den niemand gemeint hat — die Spielfolge ist
|
|
||||||
// dann ja noch nicht eingetragen (Sven 2026-09-02).
|
|
||||||
$race_spiele = $row != null ? count(array_filter(explode(",", explode("|", $row->modus)[0]), 'strlen')) : 0;
|
$race_spiele = $row != null ? count(array_filter(explode(",", explode("|", $row->modus)[0]), 'strlen')) : 0;
|
||||||
$race_schritt_wert = ($row->race_schritt ?? 0) > 0 ? (int)$row->race_schritt : 6;
|
$race_schritt_wert = ($row->race_schritt ?? 0) > 0 ? (int)$row->race_schritt : 6;
|
||||||
$race_ziel_text = Text::_('COM_SPORTSMANAGER_RACE_TARGET_FORMULA');
|
$race_ziel_text = Text::_('COM_SPORTSMANAGER_RACE_TARGET_FORMULA');
|
||||||
@@ -5116,7 +5062,6 @@ class HTML_sportsmanager_admin
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
<tr id="row_gruppe_spiel"<?php if ($race_an) echo " style=\"display:none\""; ?>>
|
<tr id="row_gruppe_spiel"<?php if ($race_an) echo " style=\"display:none\""; ?>>
|
||||||
<td nowrap colspan="2" style="padding-top: 1em">
|
<td nowrap colspan="2" style="padding-top: 1em">
|
||||||
<strong><?php echo Text::_('COM_SPORTSMANAGER_GROUP_GAME'); ?></strong>
|
<strong><?php echo Text::_('COM_SPORTSMANAGER_GROUP_GAME'); ?></strong>
|
||||||
@@ -5132,11 +5077,6 @@ class HTML_sportsmanager_admin
|
|||||||
<select class="uk-select uk-form-width-large" name="punktetyp"
|
<select class="uk-select uk-form-width-large" name="punktetyp"
|
||||||
id="point_type" size="1" onChange="zeilen_anzeigen();">
|
id="point_type" size="1" onChange="zeilen_anzeigen();">
|
||||||
<?php
|
<?php
|
||||||
// Drei Eintraege, zwei Felder: der dritte ist „Mehrere" samt der
|
|
||||||
// Angabe, dass die Saetze einzeln eingetragen werden. punktetyp
|
|
||||||
// behaelt seine beiden ueberlieferten Werte, damit eine fremde
|
|
||||||
// Anwendung weiter ablesen kann, ob die Punkte eines Spiels Tore
|
|
||||||
// oder gewonnene Saetze sind (Datenbankversion 122).
|
|
||||||
$typ = array(Text::_('COM_SPORTSMANAGER_ONE'), Text::_('COM_SPORTSMANAGER_MULTIPLE'), Text::_('COM_SPORTSMANAGER_MULTIPLE_WITH_SETS'));
|
$typ = array(Text::_('COM_SPORTSMANAGER_ONE'), Text::_('COM_SPORTSMANAGER_MULTIPLE'), Text::_('COM_SPORTSMANAGER_MULTIPLE_WITH_SETS'));
|
||||||
$gewaehlt = $row != null
|
$gewaehlt = $row != null
|
||||||
? (!empty($row->satzergebnisse) ? 2 : (int)$row->punktetyp)
|
? (!empty($row->satzergebnisse) ? 2 : (int)$row->punktetyp)
|
||||||
@@ -5160,16 +5100,8 @@ class HTML_sportsmanager_admin
|
|||||||
name="spielpunkte_wertung_einzel" id="points_valuation_single"
|
name="spielpunkte_wertung_einzel" id="points_valuation_single"
|
||||||
size="1">
|
size="1">
|
||||||
<?php
|
<?php
|
||||||
// Die vierte Wertung hiess „Keine" und sagte damit das Gegenteil dessen, was
|
|
||||||
// sie tut: gewertet wird alles, nur ohne Umrechnung — das Ergebnis des
|
|
||||||
// Spiels IST sein Spielpunktestand (admin.php: $spiel_heim_spielpunkte =
|
|
||||||
// $spiel_heim_punkte). Welche Zahl das ist, sagt punktetyp: Tore bei
|
|
||||||
// „Einer", Saetze bei „Mehrere" (Sven 2026-09-01).
|
|
||||||
$typ = array(Text::_('COM_SPORTSMANAGER_WIN_1_POINT'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_3_POINTS'), Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS'));
|
$typ = array(Text::_('COM_SPORTSMANAGER_WIN_1_POINT'), Text::_('COM_SPORTSMANAGER_WIN_2_POINTS'), Text::_('COM_SPORTSMANAGER_WIN_3_POINTS'), Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS'));
|
||||||
$typ_wert = array(3, 0, 1, 2);
|
$typ_wert = array(3, 0, 1, 2);
|
||||||
// Die vierte Wertung heisst nach der Einheit, die sie uebernimmt: Tore bei
|
|
||||||
// „Einer", Saetze bei „Mehrere". Beide Texte haengen an der Option, das
|
|
||||||
// Umschalten macht zeilen_anzeigen() (Sven 2026-09-08).
|
|
||||||
$einheit_attr = ' data-tore="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_GOALS'), ENT_QUOTES) . '"'
|
$einheit_attr = ' data-tore="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_GOALS'), ENT_QUOTES) . '"'
|
||||||
. ' data-saetze="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_SETS'), ENT_QUOTES) . '"';
|
. ' data-saetze="' . htmlspecialchars(Text::_('COM_SPORTSMANAGER_RESULT_AS_GAME_POINTS_SETS'), ENT_QUOTES) . '"';
|
||||||
for ($i = 0; $i <= 3; $i++) {
|
for ($i = 0; $i <= 3; $i++) {
|
||||||
@@ -5210,11 +5142,6 @@ class HTML_sportsmanager_admin
|
|||||||
</td>
|
</td>
|
||||||
<td nowrap>
|
<td nowrap>
|
||||||
<?php
|
<?php
|
||||||
// Eigene Zeile, weil dieser Knopf ALLE Doppel-Zeilen schaltet — auch die
|
|
||||||
// der Satzregel und des Entscheidungssatzes. Solange er in der Zeile
|
|
||||||
// „Spiel abgeschlossen bei" sass, verschwand er mit ihr, sobald eine
|
|
||||||
// Satzzahl gewaehlt war; die Satzregel liess sich dann nicht mehr
|
|
||||||
// getrennt einstellen.
|
|
||||||
?>
|
?>
|
||||||
<input type="button"
|
<input type="button"
|
||||||
value="<?php echo $doppel_separat ? Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_IDENTICAL') : Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_SEPARATELY'); ?>"
|
value="<?php echo $doppel_separat ? Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_IDENTICAL') : Text::_('COM_SPORTSMANAGER_GAME_DOUBLES_SEPARATELY'); ?>"
|
||||||
@@ -5233,21 +5160,12 @@ class HTML_sportsmanager_admin
|
|||||||
id="saetze_modus_einzel" size="1" onChange="zeilen_anzeigen();">
|
id="saetze_modus_einzel" size="1" onChange="zeilen_anzeigen();">
|
||||||
<option value="0"<?php if ($row == null || ($row->saetze_modus_einzel ?? 0) == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
<option value="0"<?php if ($row == null || ($row->saetze_modus_einzel ?? 0) == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
// Positiv = feste Satzzahl (alle werden gespielt), negativ = Gewinnsaetze.
|
|
||||||
// „Beliebig" heisst: der Wettbewerb legt die Satzzahl nicht fest, dann
|
|
||||||
// gilt allein die Siegbedingung des Spiels — der Zustand, den jeder
|
|
||||||
// Bestandsmodus VOR der Migration hatte.
|
|
||||||
for ($i = 1; $i <= 12; $i++) {
|
for ($i = 1; $i <= 12; $i++) {
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->saetze_modus_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_FIXED_SET') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_FIXED_SETS', $i)) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->saetze_modus_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_FIXED_SET') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_FIXED_SETS', $i)) . "</option>";
|
||||||
}
|
}
|
||||||
for ($i = 2; $i <= 6; $i++) {
|
for ($i = 2; $i <= 6; $i++) {
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->saetze_modus_einzel ?? 0) == -$i ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_WINNING_SETS', $i)) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->saetze_modus_einzel ?? 0) == -$i ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_WINNING_SETS', $i)) . "</option>";
|
||||||
}
|
}
|
||||||
// Ein vorhandener Wert ausserhalb der angebotenen Bereiche bekommt
|
|
||||||
// seinen eigenen Eintrag — sichtbar und unveraendert speicherbar,
|
|
||||||
// aber nicht neu waehlbar, sobald man ihn weggestellt hat (Sven
|
|
||||||
// 2026-09-02). So bleibt eine ungewoehnliche Bestandszahl erhalten,
|
|
||||||
// ohne dass das Formular sie zur Empfehlung macht.
|
|
||||||
$vorhanden = (int)($row->saetze_modus_einzel ?? 0);
|
$vorhanden = (int)($row->saetze_modus_einzel ?? 0);
|
||||||
if ($vorhanden != 0
|
if ($vorhanden != 0
|
||||||
&& !($vorhanden >= 1 && $vorhanden <= 12)
|
&& !($vorhanden >= 1 && $vorhanden <= 12)
|
||||||
@@ -5274,21 +5192,12 @@ class HTML_sportsmanager_admin
|
|||||||
id="saetze_modus_doppel" size="1" onChange="zeilen_anzeigen();">
|
id="saetze_modus_doppel" size="1" onChange="zeilen_anzeigen();">
|
||||||
<option value="0"<?php if ($row == null || ($row->saetze_modus_doppel ?? 0) == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
<option value="0"<?php if ($row == null || ($row->saetze_modus_doppel ?? 0) == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
// Positiv = feste Satzzahl (alle werden gespielt), negativ = Gewinnsaetze.
|
|
||||||
// „Beliebig" heisst: der Wettbewerb legt die Satzzahl nicht fest, dann
|
|
||||||
// gilt allein die Siegbedingung des Spiels — der Zustand, den jeder
|
|
||||||
// Bestandsmodus VOR der Migration hatte.
|
|
||||||
for ($i = 1; $i <= 12; $i++) {
|
for ($i = 1; $i <= 12; $i++) {
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->saetze_modus_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_FIXED_SET') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_FIXED_SETS', $i)) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->saetze_modus_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_FIXED_SET') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_FIXED_SETS', $i)) . "</option>";
|
||||||
}
|
}
|
||||||
for ($i = 2; $i <= 6; $i++) {
|
for ($i = 2; $i <= 6; $i++) {
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->saetze_modus_doppel ?? 0) == -$i ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_WINNING_SETS', $i)) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->saetze_modus_doppel ?? 0) == -$i ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_WINNING_SETS', $i)) . "</option>";
|
||||||
}
|
}
|
||||||
// Ein vorhandener Wert ausserhalb der angebotenen Bereiche bekommt
|
|
||||||
// seinen eigenen Eintrag — sichtbar und unveraendert speicherbar,
|
|
||||||
// aber nicht neu waehlbar, sobald man ihn weggestellt hat (Sven
|
|
||||||
// 2026-09-02). So bleibt eine ungewoehnliche Bestandszahl erhalten,
|
|
||||||
// ohne dass das Formular sie zur Empfehlung macht.
|
|
||||||
$vorhanden = (int)($row->saetze_modus_doppel ?? 0);
|
$vorhanden = (int)($row->saetze_modus_doppel ?? 0);
|
||||||
if ($vorhanden != 0
|
if ($vorhanden != 0
|
||||||
&& !($vorhanden >= 1 && $vorhanden <= 12)
|
&& !($vorhanden >= 1 && $vorhanden <= 12)
|
||||||
@@ -5363,7 +5272,6 @@ class HTML_sportsmanager_admin
|
|||||||
<select class="uk-select uk-form-width-large" name="punkte_vorsprung_einzel"
|
<select class="uk-select uk-form-width-large" name="punkte_vorsprung_einzel"
|
||||||
id="points_margin_single" size="1" onChange="zeilen_anzeigen();">
|
id="points_margin_single" size="1" onChange="zeilen_anzeigen();">
|
||||||
<?php
|
<?php
|
||||||
// Ein Vorsprung von 1 ist das bisherige Verhalten und bleibt die Vorgabe.
|
|
||||||
for ($i = 1; $i <= 10; $i++) {
|
for ($i = 1; $i <= 10; $i++) {
|
||||||
echo $einheit_option($i, $row != null ? $row->punkte_vorsprung_einzel == $i : $i == 1,
|
echo $einheit_option($i, $row != null ? $row->punkte_vorsprung_einzel == $i : $i == 1,
|
||||||
$i == 1 ? Text::_('COM_SPORTSMANAGER_NO_MARGIN') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i),
|
$i == 1 ? Text::_('COM_SPORTSMANAGER_NO_MARGIN') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i),
|
||||||
@@ -5404,8 +5312,6 @@ class HTML_sportsmanager_admin
|
|||||||
<option
|
<option
|
||||||
value="0"><?php echo Text::_('COM_SPORTSMANAGER_GAME_CAP_NONE'); ?></option>
|
value="0"><?php echo Text::_('COM_SPORTSMANAGER_GAME_CAP_NONE'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
// Die Deckelung beendet das Spiel unabhaengig vom Vorsprung; darunter kann
|
|
||||||
// es also kein Unentschieden mehr geben.
|
|
||||||
for ($i = 2; $i <= 60; $i++) {
|
for ($i = 2; $i <= 60; $i++) {
|
||||||
echo $einheit_option($i, $row != null && $row->punkte_deckel_einzel == $i,
|
echo $einheit_option($i, $row != null && $row->punkte_deckel_einzel == $i,
|
||||||
Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i),
|
Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i),
|
||||||
@@ -5454,11 +5360,6 @@ class HTML_sportsmanager_admin
|
|||||||
value="0"><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
value="0"><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 1; $i <= 60; $i++) {
|
for ($i = 1; $i <= 60; $i++) {
|
||||||
// Wie eine Ebene hoeher entscheidet das Vorzeichen, ob ein Satz remis
|
|
||||||
// enden kann: der Betrag ist der Siegwert, ein negatives
|
|
||||||
// Vorzeichen erlaubt zusaetzlich ein Unentschieden eine Tor
|
|
||||||
// darunter. Ohne diese Faelle waere ein Satz, der remis endet,
|
|
||||||
// gar nicht hinterlegbar (Sven 2026-09-01).
|
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->satz_sieg_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->satz_sieg_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
||||||
if ($i != 1)
|
if ($i != 1)
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->satz_sieg_einzel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->satz_sieg_einzel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
||||||
@@ -5480,11 +5381,6 @@ class HTML_sportsmanager_admin
|
|||||||
value="0"><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
value="0"><?php echo Text::_('COM_SPORTSMANAGER_ANY'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 1; $i <= 60; $i++) {
|
for ($i = 1; $i <= 60; $i++) {
|
||||||
// Wie eine Ebene hoeher entscheidet das Vorzeichen, ob ein Satz remis
|
|
||||||
// enden kann: der Betrag ist der Siegwert, ein negatives
|
|
||||||
// Vorzeichen erlaubt zusaetzlich ein Unentschieden eine Tor
|
|
||||||
// darunter. Ohne diese Faelle waere ein Satz, der remis endet,
|
|
||||||
// gar nicht hinterlegbar (Sven 2026-09-01).
|
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->satz_sieg_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->satz_sieg_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
||||||
if ($i != 1)
|
if ($i != 1)
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->satz_sieg_doppel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->satz_sieg_doppel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
||||||
@@ -5583,11 +5479,6 @@ class HTML_sportsmanager_admin
|
|||||||
value="0"><?php echo Text::_('COM_SPORTSMANAGER_DECIDING_SET_SAME'); ?></option>
|
value="0"><?php echo Text::_('COM_SPORTSMANAGER_DECIDING_SET_SAME'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 1; $i <= 60; $i++) {
|
for ($i = 1; $i <= 60; $i++) {
|
||||||
// Wie eine Ebene hoeher entscheidet das Vorzeichen, ob ein Satz remis
|
|
||||||
// enden kann: der Betrag ist der Siegwert, ein negatives
|
|
||||||
// Vorzeichen erlaubt zusaetzlich ein Unentschieden eine Tor
|
|
||||||
// darunter. Ohne diese Faelle waere ein Satz, der remis endet,
|
|
||||||
// gar nicht hinterlegbar (Sven 2026-09-01).
|
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->entscheidung_sieg_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->entscheidung_sieg_einzel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
||||||
if ($i != 1)
|
if ($i != 1)
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->entscheidung_sieg_einzel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->entscheidung_sieg_einzel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
||||||
@@ -5609,11 +5500,6 @@ class HTML_sportsmanager_admin
|
|||||||
value="0"><?php echo Text::_('COM_SPORTSMANAGER_DECIDING_SET_SAME'); ?></option>
|
value="0"><?php echo Text::_('COM_SPORTSMANAGER_DECIDING_SET_SAME'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 1; $i <= 60; $i++) {
|
for ($i = 1; $i <= 60; $i++) {
|
||||||
// Wie eine Ebene hoeher entscheidet das Vorzeichen, ob ein Satz remis
|
|
||||||
// enden kann: der Betrag ist der Siegwert, ein negatives
|
|
||||||
// Vorzeichen erlaubt zusaetzlich ein Unentschieden eine Tor
|
|
||||||
// darunter. Ohne diese Faelle waere ein Satz, der remis endet,
|
|
||||||
// gar nicht hinterlegbar (Sven 2026-09-01).
|
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->entscheidung_sieg_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? (($row->entscheidung_sieg_doppel ?? 0) == $i ? " selected" : "") : "") . ">" . htmlentities_utf8(($i == 1 ? Text::_('COM_SPORTSMANAGER_ONE_GOAL') : Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i)) . Text::_('COM_SPORTSMANAGER_SUFFIX_NO_DRAW')) . "</option>";
|
||||||
if ($i != 1)
|
if ($i != 1)
|
||||||
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->entscheidung_sieg_doppel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
echo "<option value=\"" . (-$i) . "\"" . ($row != null ? (($row->entscheidung_sieg_doppel ?? 0) == (-$i) ? " selected" : "") : "") . ">" . htmlentities_utf8(Text::sprintf('COM_SPORTSMANAGER_NUMBER_GOALS', $i) . Text::sprintf('COM_SPORTSMANAGER_SUFFIX_DRAW_AT', ($i - 1), ($i - 1))) . "</option>";
|
||||||
@@ -5729,9 +5615,6 @@ class HTML_sportsmanager_admin
|
|||||||
<option value="0"<?php if ($row == null || $row->spiele_in_spielerstatistik == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL'); ?></option>
|
<option value="0"<?php if ($row == null || $row->spiele_in_spielerstatistik == 0) echo " selected"; ?>><?php echo Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_ALL'); ?></option>
|
||||||
<?php
|
<?php
|
||||||
for ($i = 1; $i <= 36; $i++) {
|
for ($i = 1; $i <= 36; $i++) {
|
||||||
// Nackte Zahlen neben „Alle Spiele" sagen nicht, was sie zaehlen —
|
|
||||||
// gemeint sind die ERSTEN n Spiele (die Statistik filtert auf
|
|
||||||
// teamspiel_nummer <= n).
|
|
||||||
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->spiele_in_spielerstatistik == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_FIRST_ONE') : Text::sprintf('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_FIRST', $i)) . "</option>";
|
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->spiele_in_spielerstatistik == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($i == 1 ? Text::_('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_FIRST_ONE') : Text::sprintf('COM_SPORTSMANAGER_GAMES_IN_STATISTIK_FIRST', $i)) . "</option>";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -5739,8 +5622,6 @@ class HTML_sportsmanager_admin
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
//Doppel 7 und 8 hinzugefuegt, Jürgen Meyer, 28.03.2025
|
//Doppel 7 und 8 hinzugefuegt, Jürgen Meyer, 28.03.2025
|
||||||
$spieltyp = array("D1" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2",
|
$spieltyp = array("D1" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2",
|
||||||
@@ -5753,9 +5634,6 @@ class HTML_sportsmanager_admin
|
|||||||
"S1" => Text::_('COM_SPORTSMANAGER_RESULT_ONLY'));
|
"S1" => Text::_('COM_SPORTSMANAGER_RESULT_ONLY'));
|
||||||
$modus = $row != null ? explode("|", $row->modus) : null;
|
$modus = $row != null ? explode("|", $row->modus) : null;
|
||||||
$spiele = $modus != null && isset($modus[0]) ? explode(",", $modus[0]) : array();
|
$spiele = $modus != null && isset($modus[0]) ? explode(",", $modus[0]) : array();
|
||||||
// Nur die vorhandenen Zeilen zeigen, nicht alle 36 leeren.
|
|
||||||
// Sven 2026-09-01: „Vorschlag: Spiel hinzufügen und
|
|
||||||
// Verknüpfung hinzufügen anstelle leere Spiele und
|
|
||||||
$spiele_gefuellt = 0;
|
$spiele_gefuellt = 0;
|
||||||
foreach ($spiele as $eintrag) {
|
foreach ($spiele as $eintrag) {
|
||||||
if (strlen(trim($eintrag)) > 0) $spiele_gefuellt++;
|
if (strlen(trim($eintrag)) > 0) $spiele_gefuellt++;
|
||||||
@@ -5844,8 +5722,6 @@ class HTML_sportsmanager_admin
|
|||||||
$spieltyp_doppel = array("D1" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "D7" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 7", "D8" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 8");
|
$spieltyp_doppel = array("D1" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "D7" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 7", "D8" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 8");
|
||||||
$spieltyp_einzel = array("E1" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 6", "E7" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 7", "E8" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 8");
|
$spieltyp_einzel = array("E1" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 6", "E7" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 7", "E8" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 8");
|
||||||
$verknuepfungen = $modus != null && isset($modus[1]) ? explode(",", $modus[1]) : array();
|
$verknuepfungen = $modus != null && isset($modus[1]) ? explode(",", $modus[1]) : array();
|
||||||
// Wie bei den Spielen: nur vorhandene Zeilen, der Rest auf Zuruf. Hier
|
|
||||||
// faengt es bei NULL an — eine Verknuepfung ist die Ausnahme, kein Regelfall.
|
|
||||||
$verkn_gefuellt = 0;
|
$verkn_gefuellt = 0;
|
||||||
foreach ($verknuepfungen as $eintrag) {
|
foreach ($verknuepfungen as $eintrag) {
|
||||||
if (strlen(trim($eintrag)) > 0) $verkn_gefuellt++;
|
if (strlen(trim($eintrag)) > 0) $verkn_gefuellt++;
|
||||||
@@ -5944,9 +5820,6 @@ class HTML_sportsmanager_admin
|
|||||||
<input type="hidden" name="id" value="<?php echo($row != null ? $row->teamspiel_modus_id : "0"); ?>"/>
|
<input type="hidden" name="id" value="<?php echo($row != null ? $row->teamspiel_modus_id : "0"); ?>"/>
|
||||||
</form>
|
</form>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// Einmal beim Laden, damit der anfaengliche Zustand aus PHP und die Regeln in
|
|
||||||
// zeilen_anzeigen() dasselbe sagen — sonst waere etwa die Siegbedingung erst
|
|
||||||
// nach der ersten Aenderung gesperrt.
|
|
||||||
zeilen_anzeigen();
|
zeilen_anzeigen();
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
@@ -12137,7 +12010,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
||||||
<tr class="sectiontableentry<?php echo $k + 1;
|
<tr class="sectiontableentry<?php echo $k + 1;
|
||||||
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
|
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
|
||||||
|
|
||||||
@@ -12667,9 +12539,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
// Der Gesamtstand, wie er beim Speichern entsteht — nicht
|
|
||||||
// der gespeicherte. Hier stand „Zwischenergebnis" mit dem
|
|
||||||
// Wert aus der Datenbank.
|
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td nowrap colspan="2"> </td>
|
<td nowrap colspan="2"> </td>
|
||||||
@@ -12734,8 +12603,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$punkte_sieg_doppel = abs($teamspiel_modus->punkte_sieg_doppel);
|
$punkte_sieg_doppel = abs($teamspiel_modus->punkte_sieg_doppel);
|
||||||
$punkte_unentschieden_einzel = $teamspiel_modus->punkte_sieg_einzel < 0 ? abs($teamspiel_modus->punkte_sieg_einzel + 1) : 0;
|
$punkte_unentschieden_einzel = $teamspiel_modus->punkte_sieg_einzel < 0 ? abs($teamspiel_modus->punkte_sieg_einzel + 1) : 0;
|
||||||
$punkte_unentschieden_doppel = $teamspiel_modus->punkte_sieg_doppel < 0 ? abs($teamspiel_modus->punkte_sieg_doppel + 1) : 0;
|
$punkte_unentschieden_doppel = $teamspiel_modus->punkte_sieg_doppel < 0 ? abs($teamspiel_modus->punkte_sieg_doppel + 1) : 0;
|
||||||
// Vorsprung und Unentschieden schliessen sich aus (siehe punkte_gegner). Alte
|
|
||||||
// Daten koennen beides gesetzt haben, wenn ein Vorsprung nachtraeglich kam.
|
|
||||||
if (max(1, (int)($teamspiel_modus->punkte_vorsprung_einzel ?? 1)) > 1)
|
if (max(1, (int)($teamspiel_modus->punkte_vorsprung_einzel ?? 1)) > 1)
|
||||||
$punkte_unentschieden_einzel = 0;
|
$punkte_unentschieden_einzel = 0;
|
||||||
if (max(1, (int)($teamspiel_modus->punkte_vorsprung_doppel ?? 1)) > 1)
|
if (max(1, (int)($teamspiel_modus->punkte_vorsprung_doppel ?? 1)) > 1)
|
||||||
@@ -12744,16 +12611,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$punkte_vorsprung_doppel = max(1, (int)($teamspiel_modus->punkte_vorsprung_doppel ?? 1));
|
$punkte_vorsprung_doppel = max(1, (int)($teamspiel_modus->punkte_vorsprung_doppel ?? 1));
|
||||||
$punkte_deckel_einzel = max(0, (int)($teamspiel_modus->punkte_deckel_einzel ?? 0));
|
$punkte_deckel_einzel = max(0, (int)($teamspiel_modus->punkte_deckel_einzel ?? 0));
|
||||||
$punkte_deckel_doppel = max(0, (int)($teamspiel_modus->punkte_deckel_doppel ?? 0));
|
$punkte_deckel_doppel = max(0, (int)($teamspiel_modus->punkte_deckel_doppel ?? 0));
|
||||||
// Zweite Ebene: die Regel im einzelnen Satz. Eingetragen
|
|
||||||
// werden einzelne Saetze nur bei „Mehrere mit
|
|
||||||
// Satzergebnissen" — nur dort greift sie also.
|
|
||||||
$heim_hat_spieler = !empty($heim_spieler);
|
$heim_hat_spieler = !empty($heim_spieler);
|
||||||
$gast_hat_spieler = !empty($gast_spieler);
|
$gast_hat_spieler = !empty($gast_spieler);
|
||||||
$satzweise = ($teamspiel_modus->satzergebnisse ?? 0) != 0;
|
$satzweise = ($teamspiel_modus->satzergebnisse ?? 0) != 0;
|
||||||
// Race: der Stand laeuft durch, jedes Spiel hat sein eigenes Etappenziel
|
|
||||||
// (Spiel N endet bei N mal Schritt). Mindestvorsprung, Grenze und ein
|
|
||||||
// moegliches Unentschieden gelten nur fuer das letzte Spiel — also fuer
|
|
||||||
// das Ziel selbst.
|
|
||||||
$race_an = ($teamspiel_modus->zaehlweise ?? 0) != 0
|
$race_an = ($teamspiel_modus->zaehlweise ?? 0) != 0
|
||||||
&& ($teamspiel_modus->race_schritt ?? 0) > 0;
|
&& ($teamspiel_modus->race_schritt ?? 0) > 0;
|
||||||
$race_schritt = max(0, (int)($teamspiel_modus->race_schritt ?? 0));
|
$race_schritt = max(0, (int)($teamspiel_modus->race_schritt ?? 0));
|
||||||
@@ -12764,8 +12624,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$race_remis = ($teamspiel_modus->race_remis ?? 0) != 0 && $race_vorsprung <= 1
|
$race_remis = ($teamspiel_modus->race_remis ?? 0) != 0 && $race_vorsprung <= 1
|
||||||
? $race_ziel - 1
|
? $race_ziel - 1
|
||||||
: 0;
|
: 0;
|
||||||
// Je Spiel die Zahl der von Anfang an sichtbaren Satzzeilen; wird in der
|
|
||||||
// Spiel-Schleife gefuellt und nach dem Formular an JavaScript uebergeben.
|
|
||||||
$satz_min_je_spiel = array();
|
$satz_min_je_spiel = array();
|
||||||
$satz_sieg_einzel = (int)($teamspiel_modus->satz_sieg_einzel ?? 0);
|
$satz_sieg_einzel = (int)($teamspiel_modus->satz_sieg_einzel ?? 0);
|
||||||
$satz_sieg_doppel = (int)($teamspiel_modus->satz_sieg_doppel ?? 0);
|
$satz_sieg_doppel = (int)($teamspiel_modus->satz_sieg_doppel ?? 0);
|
||||||
@@ -12773,21 +12631,16 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$satz_vorsprung_doppel = max(1, (int)($teamspiel_modus->satz_vorsprung_doppel ?? 1));
|
$satz_vorsprung_doppel = max(1, (int)($teamspiel_modus->satz_vorsprung_doppel ?? 1));
|
||||||
$satz_deckel_einzel = max(0, (int)($teamspiel_modus->satz_deckel_einzel ?? 0));
|
$satz_deckel_einzel = max(0, (int)($teamspiel_modus->satz_deckel_einzel ?? 0));
|
||||||
$satz_deckel_doppel = max(0, (int)($teamspiel_modus->satz_deckel_doppel ?? 0));
|
$satz_deckel_doppel = max(0, (int)($teamspiel_modus->satz_deckel_doppel ?? 0));
|
||||||
// Satzzahl: positiv = feste Zahl, negativ = Gewinnsaetze, 0 = keine Angabe.
|
|
||||||
$saetze_modus_einzel = (int)($teamspiel_modus->saetze_modus_einzel ?? 0);
|
$saetze_modus_einzel = (int)($teamspiel_modus->saetze_modus_einzel ?? 0);
|
||||||
$saetze_modus_doppel = (int)($teamspiel_modus->saetze_modus_doppel ?? 0);
|
$saetze_modus_doppel = (int)($teamspiel_modus->saetze_modus_doppel ?? 0);
|
||||||
// Abweichende Regel fuer den Entscheidungssatz; 0 = keine.
|
|
||||||
$entscheidung_sieg_einzel = (int)($teamspiel_modus->entscheidung_sieg_einzel ?? 0);
|
$entscheidung_sieg_einzel = (int)($teamspiel_modus->entscheidung_sieg_einzel ?? 0);
|
||||||
$entscheidung_sieg_doppel = (int)($teamspiel_modus->entscheidung_sieg_doppel ?? 0);
|
$entscheidung_sieg_doppel = (int)($teamspiel_modus->entscheidung_sieg_doppel ?? 0);
|
||||||
$entscheidung_vorsprung_einzel = max(1, (int)($teamspiel_modus->entscheidung_vorsprung_einzel ?? 1));
|
$entscheidung_vorsprung_einzel = max(1, (int)($teamspiel_modus->entscheidung_vorsprung_einzel ?? 1));
|
||||||
$entscheidung_vorsprung_doppel = max(1, (int)($teamspiel_modus->entscheidung_vorsprung_doppel ?? 1));
|
$entscheidung_vorsprung_doppel = max(1, (int)($teamspiel_modus->entscheidung_vorsprung_doppel ?? 1));
|
||||||
$entscheidung_deckel_einzel = max(0, (int)($teamspiel_modus->entscheidung_deckel_einzel ?? 0));
|
$entscheidung_deckel_einzel = max(0, (int)($teamspiel_modus->entscheidung_deckel_einzel ?? 0));
|
||||||
$entscheidung_deckel_doppel = max(0, (int)($teamspiel_modus->entscheidung_deckel_doppel ?? 0));
|
$entscheidung_deckel_doppel = max(0, (int)($teamspiel_modus->entscheidung_deckel_doppel ?? 0));
|
||||||
// punkte_gegner brauchen beide Ebenen — das Spiel und der Satz.
|
|
||||||
if ($handheld != "yes" && ($race_an || $punkte_sieg_einzel != 0 || $punkte_sieg_doppel != 0
|
if ($handheld != "yes" && ($race_an || $punkte_sieg_einzel != 0 || $punkte_sieg_doppel != 0
|
||||||
|| ($satzweise && ($satz_sieg_einzel != 0 || $satz_sieg_doppel != 0)))) {
|
|| ($satzweise && ($satz_sieg_einzel != 0 || $satz_sieg_doppel != 0)))) {
|
||||||
// Der Gegenwert zu einem eingegebenen Stand: was die andere Seite hoechstens haben
|
|
||||||
// kann, wenn dieser Stand das Spiel beendet.
|
|
||||||
echo "function punkte_gegner(eingabe, sieg, vorsprung, deckel, unentschieden) {\n"
|
echo "function punkte_gegner(eingabe, sieg, vorsprung, deckel, unentschieden) {\n"
|
||||||
. " var v = Number(eingabe);\n"
|
. " var v = Number(eingabe);\n"
|
||||||
. " if (unentschieden != 0 && v == unentschieden)\n"
|
. " if (unentschieden != 0 && v == unentschieden)\n"
|
||||||
@@ -12803,7 +12656,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. "}\n";
|
. "}\n";
|
||||||
if ($race_an)
|
if ($race_an)
|
||||||
echo "function race_gegner(nr, feld, schritt, letztes, vorsprung, deckel, remis, seite) {\n"
|
echo "function race_gegner(nr, feld, schritt, letztes, vorsprung, deckel, remis, seite) {\n"
|
||||||
// Was beide Seiten aus den vorherigen Spielen schon haben.
|
|
||||||
. " var vorEigen = 0, vorAnder = 0;\n"
|
. " var vorEigen = 0, vorAnder = 0;\n"
|
||||||
. " for (var i = 1; i < nr; i++) {\n"
|
. " for (var i = 1; i < nr; i++) {\n"
|
||||||
. " var h = document.adminForm['spiel_' + i + '_heim_punkte'];\n"
|
. " var h = document.adminForm['spiel_' + i + '_heim_punkte'];\n"
|
||||||
@@ -12816,8 +12668,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " var ziel = nr * schritt;\n"
|
. " var ziel = nr * schritt;\n"
|
||||||
. " var eigenLaufend = vorEigen + Number(feld.value);\n"
|
. " var eigenLaufend = vorEigen + Number(feld.value);\n"
|
||||||
. " var anderLaufend;\n"
|
. " var anderLaufend;\n"
|
||||||
// Nur das letzte Spiel kennt Vorsprung, Grenze und Remis — und die
|
|
||||||
// gelten fuer den laufenden Stand, nicht fuer die Differenz.
|
|
||||||
. " if (letztes) {\n"
|
. " if (letztes) {\n"
|
||||||
. " anderLaufend = punkte_gegner(eigenLaufend, ziel, vorsprung, deckel, remis);\n"
|
. " anderLaufend = punkte_gegner(eigenLaufend, ziel, vorsprung, deckel, remis);\n"
|
||||||
. " if (anderLaufend === '') return '';\n"
|
. " if (anderLaufend === '') return '';\n"
|
||||||
@@ -12828,8 +12678,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " var differenz = anderLaufend - vorAnder;\n"
|
. " var differenz = anderLaufend - vorAnder;\n"
|
||||||
. " return differenz < 0 ? '' : differenz;\n"
|
. " return differenz < 0 ? '' : differenz;\n"
|
||||||
. "}\n";
|
. "}\n";
|
||||||
// Bei satzweiser Eingabe gibt es keine anfassbaren Summenfelder; dort
|
|
||||||
// ergaenzt saetze_changed() den Gegenwert, und zwar innerhalb des Satzes.
|
|
||||||
if (!$satzweise) {
|
if (!$satzweise) {
|
||||||
echo "function punkte_changed(form) {\n"
|
echo "function punkte_changed(form) {\n"
|
||||||
. " if (form.value == '')\n"
|
. " if (form.value == '')\n"
|
||||||
@@ -12837,11 +12685,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " switch(form.name) {\n";
|
. " switch(form.name) {\n";
|
||||||
$n = count($spieltypen);
|
$n = count($spieltypen);
|
||||||
for ($i = 1; $i <= $n; $i++) {
|
for ($i = 1; $i <= $n; $i++) {
|
||||||
// Bei Race gilt die Etappe fuer den LAUFENDEN Stand, eingetragen wird
|
|
||||||
// aber die Differenz dieses Spiels — so fuehrt der Sports Manager es
|
|
||||||
// seit jeher (gemessen 2026-09-01 an 91 Bundesliga-Begegnungen: die
|
|
||||||
// Summe der Spielwerte IST der Begegnungsstand). Die Ergaenzung muss
|
|
||||||
// deshalb abziehen, was bis hierher schon auf dem Konto steht.
|
|
||||||
if ($race_an) {
|
if ($race_an) {
|
||||||
$letztes = $i == $race_letztes ? 1 : 0;
|
$letztes = $i == $race_letztes ? 1 : 0;
|
||||||
$args = $i . ", form, " . $race_schritt . ", " . $letztes . ", "
|
$args = $i . ", form, " . $race_schritt . ", " . $letztes . ", "
|
||||||
@@ -12878,8 +12721,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. "}\n";
|
. "}\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Der Gesamtstand: die Spielpunkte, wie sie Liste, Mannschaftsseite und Kopfzeile
|
|
||||||
// zeigen — gerechnet mit derselben Arithmetik wie beim Speichern.
|
|
||||||
echo "function gesamtstand_aktualisieren() {\n"
|
echo "function gesamtstand_aktualisieren() {\n"
|
||||||
. " var sh = 0, sg = 0, h, g;\n";
|
. " var sh = 0, sg = 0, h, g;\n";
|
||||||
for ($i = 1; $i <= count($spieltypen); $i++) {
|
for ($i = 1; $i <= count($spieltypen); $i++) {
|
||||||
@@ -12903,11 +12744,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " if (feld != null) feld.textContent = sh + ':' + sg;\n"
|
. " if (feld != null) feld.textContent = sh + ':' + sg;\n"
|
||||||
. "}\n";
|
. "}\n";
|
||||||
if ($satzweise) {
|
if ($satzweise) {
|
||||||
// Ein Satz ist eingetragen, also: den Gegenwert IM SATZ ergaenzen, die
|
|
||||||
// gewonnenen Saetze neu zaehlen und in die versteckten Summenfelder
|
|
||||||
// schreiben. Gezaehlt wird nach derselben Regel wie auf dem Server
|
|
||||||
// (adminSaveBegegnungSpielplan): ein Satz zaehlt fuer die Seite mit den
|
|
||||||
// meisten Toren, ein 0:0 zaehlt fuer niemanden.
|
|
||||||
echo "function saetze_changed(nr, feld, sieg, vorsprung, deckel, unentschieden) {\n"
|
echo "function saetze_changed(nr, feld, sieg, vorsprung, deckel, unentschieden) {\n"
|
||||||
. " var heim = document.getElementsByName('spiel_' + nr + '_heim_punkte_detailliert[]');\n"
|
. " var heim = document.getElementsByName('spiel_' + nr + '_heim_punkte_detailliert[]');\n"
|
||||||
. " var gast = document.getElementsByName('spiel_' + nr + '_gast_punkte_detailliert[]');\n"
|
. " var gast = document.getElementsByName('spiel_' + nr + '_gast_punkte_detailliert[]');\n"
|
||||||
@@ -12934,9 +12770,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " satzzeilen_anzeigen(nr);\n"
|
. " satzzeilen_anzeigen(nr);\n"
|
||||||
. " gesamtstand_aktualisieren();\n"
|
. " gesamtstand_aktualisieren();\n"
|
||||||
. "}\n"
|
. "}\n"
|
||||||
// Gestaffelt zeigen: sichtbar ist die Mindestzahl,
|
|
||||||
// und dahinter genau eine leere Zeile — nicht die
|
|
||||||
// volle Hoechstzahl.
|
|
||||||
. "function satzzeilen_anzeigen(nr) {\n"
|
. "function satzzeilen_anzeigen(nr) {\n"
|
||||||
. " var min = satz_min_je_spiel[nr];\n"
|
. " var min = satz_min_je_spiel[nr];\n"
|
||||||
. " if (min == null) return;\n"
|
. " if (min == null) return;\n"
|
||||||
@@ -13076,10 +12909,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
. " var punkte_gast;\n";
|
. " var punkte_gast;\n";
|
||||||
$n = count($spieltypen);
|
$n = count($spieltypen);
|
||||||
for ($i = 1; $i <= $n; $i++) {
|
for ($i = 1; $i <= $n; $i++) {
|
||||||
// Geprueft wird nur, was es auch gibt: hat eine Mannschaft keine
|
|
||||||
// hinterlegten Spieler, steht dort kein Auswahlfeld — und eine
|
|
||||||
// Forderung nach Namen, die niemand erfuellen kann, wuerde das
|
|
||||||
// Melden verhindern statt es zu ordnen.
|
|
||||||
if (!$heim_hat_spieler && !$gast_hat_spieler)
|
if (!$heim_hat_spieler && !$gast_hat_spieler)
|
||||||
continue;
|
continue;
|
||||||
if ($spielernamen == 1) {
|
if ($spielernamen == 1) {
|
||||||
@@ -13260,9 +13089,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php } else {
|
<?php } else {
|
||||||
// „Mehrere (mit Satzergebnissen)":
|
|
||||||
// eingetragen werden die SAETZE, das
|
|
||||||
// Spielergebnis ergibt sich daraus.
|
|
||||||
$doppelspiel = $spieltypen[$spiel_nr - 1][0] == "D";
|
$doppelspiel = $spieltypen[$spiel_nr - 1][0] == "D";
|
||||||
$satz_sieg = $doppelspiel ? $satz_sieg_doppel : $satz_sieg_einzel;
|
$satz_sieg = $doppelspiel ? $satz_sieg_doppel : $satz_sieg_einzel;
|
||||||
$satz_vorsprung = $doppelspiel ? $satz_vorsprung_doppel : $satz_vorsprung_einzel;
|
$satz_vorsprung = $doppelspiel ? $satz_vorsprung_doppel : $satz_vorsprung_einzel;
|
||||||
@@ -13270,8 +13096,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$spiel_sieg = $doppelspiel ? $punkte_sieg_doppel : $punkte_sieg_einzel;
|
$spiel_sieg = $doppelspiel ? $punkte_sieg_doppel : $punkte_sieg_einzel;
|
||||||
$spiel_deckel = $doppelspiel ? $punkte_deckel_doppel : $punkte_deckel_einzel;
|
$spiel_deckel = $doppelspiel ? $punkte_deckel_doppel : $punkte_deckel_einzel;
|
||||||
$saetze_wahl = $doppelspiel ? $saetze_modus_doppel : $saetze_modus_einzel;
|
$saetze_wahl = $doppelspiel ? $saetze_modus_doppel : $saetze_modus_einzel;
|
||||||
// Abweichende Regel fuer den Entscheidungssatz — den gibt es nur
|
|
||||||
// bei Gewinnsaetzen, und er ist dort der letzte moegliche Satz.
|
|
||||||
$ent_sieg = $doppelspiel ? $entscheidung_sieg_doppel : $entscheidung_sieg_einzel;
|
$ent_sieg = $doppelspiel ? $entscheidung_sieg_doppel : $entscheidung_sieg_einzel;
|
||||||
$ent_vorsprung = $doppelspiel ? $entscheidung_vorsprung_doppel : $entscheidung_vorsprung_einzel;
|
$ent_vorsprung = $doppelspiel ? $entscheidung_vorsprung_doppel : $entscheidung_vorsprung_einzel;
|
||||||
$ent_deckel = $doppelspiel ? $entscheidung_deckel_doppel : $entscheidung_deckel_einzel;
|
$ent_deckel = $doppelspiel ? $entscheidung_deckel_doppel : $entscheidung_deckel_einzel;
|
||||||
@@ -13279,9 +13103,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
? (-2 * $saetze_wahl - 2) // 0-basiert: der (2N-1)-te Satz
|
? (-2 * $saetze_wahl - 2) // 0-basiert: der (2N-1)-te Satz
|
||||||
: -1;
|
: -1;
|
||||||
|
|
||||||
// Vorbelegen nur, wenn die
|
|
||||||
// gespeicherten Saetze den
|
|
||||||
// gespeicherten Spielstand auch
|
|
||||||
$satz_werte = array();
|
$satz_werte = array();
|
||||||
if ($spiel != null && !empty($spiel->ergebnis_detailliert)) {
|
if ($spiel != null && !empty($spiel->ergebnis_detailliert)) {
|
||||||
$gelesen = array();
|
$gelesen = array();
|
||||||
@@ -13305,9 +13126,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$satz_werte = $gelesen;
|
$satz_werte = $gelesen;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wie viele Satzzeilen angeboten
|
|
||||||
// werden: die Deckelung des SPIELS ist
|
|
||||||
// die Hoechstzahl der Saetze; fehlt
|
|
||||||
$satz_zeilen = $saetze_wahl > 0
|
$satz_zeilen = $saetze_wahl > 0
|
||||||
? $saetze_wahl
|
? $saetze_wahl
|
||||||
: ($saetze_wahl < 0
|
: ($saetze_wahl < 0
|
||||||
@@ -13317,16 +13135,12 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
: ($spiel_sieg != 0 ? 2 * $spiel_sieg - 1 : 5)));
|
: ($spiel_sieg != 0 ? 2 * $spiel_sieg - 1 : 5)));
|
||||||
$satz_zeilen = min(15, max(1, $satz_zeilen));
|
$satz_zeilen = min(15, max(1, $satz_zeilen));
|
||||||
$satz_zeilen = max($satz_zeilen, count($satz_werte));
|
$satz_zeilen = max($satz_zeilen, count($satz_werte));
|
||||||
// Wie viele Zeilen sichtbar sind. Alle stehen im Dokument, weil das Speichern
|
|
||||||
// spiel_1, spiel_2 ... der Reihe nach liest und beim ersten leeren Paar abbricht.
|
|
||||||
$satz_min = $saetze_wahl > 0
|
$satz_min = $saetze_wahl > 0
|
||||||
? $satz_zeilen
|
? $satz_zeilen
|
||||||
: ($saetze_wahl < 0
|
: ($saetze_wahl < 0
|
||||||
? -$saetze_wahl
|
? -$saetze_wahl
|
||||||
: ($spiel_sieg != 0 ? $spiel_sieg : 1));
|
: ($spiel_sieg != 0 ? $spiel_sieg : 1));
|
||||||
$satz_min = min($satz_zeilen, max(1, $satz_min));
|
$satz_min = min($satz_zeilen, max(1, $satz_min));
|
||||||
// Was gespeichert ist, bleibt sichtbar — samt einer leeren
|
|
||||||
// Zeile dahinter, damit fortsetzen ohne Umweg geht.
|
|
||||||
$satz_min = max($satz_min, min($satz_zeilen, count($satz_werte) + 1));
|
$satz_min = max($satz_min, min($satz_zeilen, count($satz_werte) + 1));
|
||||||
$satz_min_je_spiel[$spiel_nr] = $satz_min;
|
$satz_min_je_spiel[$spiel_nr] = $satz_min;
|
||||||
for ($satz = 0; $satz < $satz_zeilen; $satz++) {
|
for ($satz = 0; $satz < $satz_zeilen; $satz++) {
|
||||||
@@ -13336,8 +13150,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
$zeilen_sieg = $ist_entscheidung ? $ent_sieg : $satz_sieg;
|
$zeilen_sieg = $ist_entscheidung ? $ent_sieg : $satz_sieg;
|
||||||
$zeilen_vorsprung = $ist_entscheidung ? $ent_vorsprung : $satz_vorsprung;
|
$zeilen_vorsprung = $ist_entscheidung ? $ent_vorsprung : $satz_vorsprung;
|
||||||
$zeilen_deckel = $ist_entscheidung ? $ent_deckel : $satz_deckel;
|
$zeilen_deckel = $ist_entscheidung ? $ent_deckel : $satz_deckel;
|
||||||
// Der Siegwert ist vorzeichenbehaftet (negativ = Remis
|
|
||||||
// moeglich); fuer Auswahl und Ergaenzung zaehlt der Betrag.
|
|
||||||
$zeilen_sieg_betrag = abs($zeilen_sieg);
|
$zeilen_sieg_betrag = abs($zeilen_sieg);
|
||||||
$zeilen_remis = $zeilen_sieg < 0 && $zeilen_vorsprung <= 1
|
$zeilen_remis = $zeilen_sieg < 0 && $zeilen_vorsprung <= 1
|
||||||
? abs($zeilen_sieg + 1)
|
? abs($zeilen_sieg + 1)
|
||||||
@@ -13471,9 +13283,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
|
|||||||
<?php
|
<?php
|
||||||
echo "<script type=\"text/javascript\">gesamtstand_aktualisieren();</script>\n";
|
echo "<script type=\"text/javascript\">gesamtstand_aktualisieren();</script>\n";
|
||||||
if ($satzweise && !empty($satz_min_je_spiel)) {
|
if ($satzweise && !empty($satz_min_je_spiel)) {
|
||||||
// Erst hier, weil die Mindestzahlen in der Spiel-Schleife entstehen. Der Aufruf
|
|
||||||
// beim Laden bringt Anfangszustand und Regel auf denselben Stand — ein bereits
|
|
||||||
// gespeichertes Fuenf-Satz-Spiel zeigt so alle fuenf Zeilen, ein leeres drei.
|
|
||||||
echo "<script type=\"text/javascript\">\n"
|
echo "<script type=\"text/javascript\">\n"
|
||||||
. "var satz_min_je_spiel = " . json_encode($satz_min_je_spiel) . ";\n";
|
. "var satz_min_je_spiel = " . json_encode($satz_min_je_spiel) . ";\n";
|
||||||
foreach (array_keys($satz_min_je_spiel) as $nr)
|
foreach (array_keys($satz_min_je_spiel) as $nr)
|
||||||
|
|||||||
Reference in New Issue
Block a user