mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-09-12 02:51:50 +00:00
Saetze redundant mitfuehren: vier Spalten, noch von niemandem gelesen
Sven 2026-09-11: "ergaenze in #__sportsmanager_team ausserdem saetze_gewonnen und saetze_verloren an geeigneter Stelle und zaehle diese auch redundant geeignet mit. Analog in #__sportsmanager_teamspiel teamspiel_heim_saetze_gewonnen und teamspiel_gast_saetze_gewonnen, die ebenfalls passend gesetzt werden, wenn auch noch nicht verwendet fuer die Auswertungen." Die Zahl steht damit dort, wo sie draufsteht: teamspiel_*_punkte ist polymorph (Tore bei "Einer" und im Race, gewonnene Saetze bei "Mehrere"), die neuen Spalten sind es nicht. NULL heisst wie bei den Toren "gibt es hier nicht": unter "Einer" und im Race kennt das Modell keine Saetze, dort tragen tore_gewonnen/-verloren. Geschrieben an denselben drei Stellen wie die Tore: Spielbericht speichern, begegnungenAktualisieren(), Teamstatistik. Gemessen: alle Modi und Begegnungen aller Pruefwettbewerbe vor und nach der Aenderung neu gespeichert und abgezogen — Datenbank und Frontend Byte fuer Byte identisch.
This commit is contained in:
@@ -11300,6 +11300,10 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
$spiel_saetze_remis = saetzeRemisFuerSpiel(
|
$spiel_saetze_remis = saetzeRemisFuerSpiel(
|
||||||
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
|
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
|
||||||
$spiel_ergebnis_detailliert);
|
$spiel_ergebnis_detailliert);
|
||||||
|
list($spiel_heim_saetze_gewonnen, $spiel_gast_saetze_gewonnen) =
|
||||||
|
saetzeGewonnenFuerSpiel($teamspiel_modus->punktetyp,
|
||||||
|
$spiel_heim_punkte, $spiel_gast_punkte);
|
||||||
|
|
||||||
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
|
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
|
||||||
$total_saetze_remis = null;
|
$total_saetze_remis = null;
|
||||||
} else {
|
} else {
|
||||||
@@ -11308,8 +11312,8 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
|
|
||||||
if (!$skip_spiel) {
|
if (!$skip_spiel) {
|
||||||
if (!isset($spiele_nummern[$spiel_nr])) {
|
if (!isset($spiele_nummern[$spiel_nr])) {
|
||||||
$query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert, teamspiel_heim_tore, teamspiel_gast_tore, teamspiel_saetze_remis)"
|
$query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert, teamspiel_heim_tore, teamspiel_gast_tore, teamspiel_saetze_remis, teamspiel_heim_saetze_gewonnen, teamspiel_gast_saetze_gewonnen)"
|
||||||
. "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ", " . ($spiel_heim_tore === null ? "NULL, NULL" : "'$spiel_heim_tore', '$spiel_gast_tore'") . ", " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'") . ");";
|
. "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ", " . ($spiel_heim_tore === null ? "NULL, NULL" : "'$spiel_heim_tore', '$spiel_gast_tore'") . ", " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'") . ", " . ($spiel_heim_saetze_gewonnen === null ? "NULL, NULL" : "'$spiel_heim_saetze_gewonnen', '$spiel_gast_saetze_gewonnen'") . ");";
|
||||||
} else {
|
} else {
|
||||||
$teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id;
|
$teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id;
|
||||||
$query = "UPDATE #__sportsmanager_teamspiel"
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
||||||
@@ -11324,7 +11328,9 @@ function adminSaveBegegnungSpielplan(): void
|
|||||||
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ","
|
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ","
|
||||||
. "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
|
. "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
|
||||||
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
|
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
|
||||||
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'")
|
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'") . ","
|
||||||
|
. "\n teamspiel_heim_saetze_gewonnen = " . ($spiel_heim_saetze_gewonnen === null ? "NULL" : "'$spiel_heim_saetze_gewonnen'") . ","
|
||||||
|
. "\n teamspiel_gast_saetze_gewonnen = " . ($spiel_gast_saetze_gewonnen === null ? "NULL" : "'$spiel_gast_saetze_gewonnen'")
|
||||||
. "\n WHERE teamspiel_id = $teamspiel_id";
|
. "\n WHERE teamspiel_id = $teamspiel_id";
|
||||||
}
|
}
|
||||||
$db->setQuery($query);
|
$db->setQuery($query);
|
||||||
|
|||||||
@@ -5872,6 +5872,16 @@ function updateDatabase(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!array_key_exists('teamspiel_heim_saetze_gewonnen', $columns)) {
|
||||||
|
$query = "ALTER TABLE `#__sportsmanager_teamspiel`"
|
||||||
|
. "\n ADD `teamspiel_heim_saetze_gewonnen` SMALLINT(6) NULL DEFAULT NULL AFTER `teamspiel_saetze_remis`,"
|
||||||
|
. "\n ADD `teamspiel_gast_saetze_gewonnen` SMALLINT(6) NULL DEFAULT NULL AFTER `teamspiel_heim_saetze_gewonnen`;";
|
||||||
|
$db->setQuery($query);
|
||||||
|
if (!$db->execute()) {
|
||||||
|
die($db->stderr(true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$columns = $db->getTableColumns('#__sportsmanager_begegnung');
|
$columns = $db->getTableColumns('#__sportsmanager_begegnung');
|
||||||
if (!array_key_exists('heim_tore', $columns)) {
|
if (!array_key_exists('heim_tore', $columns)) {
|
||||||
$query = "ALTER TABLE `#__sportsmanager_begegnung`"
|
$query = "ALTER TABLE `#__sportsmanager_begegnung`"
|
||||||
@@ -5914,6 +5924,16 @@ function updateDatabase(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!array_key_exists('saetze_gewonnen', $columns)) {
|
||||||
|
$query = "ALTER TABLE `#__sportsmanager_team`"
|
||||||
|
. "\n ADD `saetze_gewonnen` SMALLINT(6) NULL DEFAULT NULL AFTER `saetze_remis`,"
|
||||||
|
. "\n ADD `saetze_verloren` SMALLINT(6) NULL DEFAULT NULL AFTER `saetze_gewonnen`;";
|
||||||
|
$db->setQuery($query);
|
||||||
|
if (!$db->execute()) {
|
||||||
|
die($db->stderr(true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$query = "UPDATE #__sportsmanager_einstellungen"
|
$query = "UPDATE #__sportsmanager_einstellungen"
|
||||||
. "\n SET wert = '123'"
|
. "\n SET wert = '123'"
|
||||||
. "\n WHERE name = 'datenbank_version'";
|
. "\n WHERE name = 'datenbank_version'";
|
||||||
|
|||||||
@@ -5625,12 +5625,13 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
|||||||
|
|
||||||
foreach ($veranstaltungen as $veranstaltung) {
|
foreach ($veranstaltungen as $veranstaltung) {
|
||||||
if ($veranstaltung->tabellenwertung > 0) {
|
if ($veranstaltung->tabellenwertung > 0) {
|
||||||
$query = "SELECT spielpunkte_wertung_einzel, spielpunkte_wertung_doppel"
|
$query = "SELECT spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, punktetyp"
|
||||||
. "\n FROM #__sportsmanager_teamspiel_modus"
|
. "\n FROM #__sportsmanager_teamspiel_modus"
|
||||||
. "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0);
|
. "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0);
|
||||||
$wertungen = loadObjectList($db, $query);
|
$wertungen = loadObjectList($db, $query);
|
||||||
$je_satz = count($wertungen) > 0
|
$je_satz = count($wertungen) > 0
|
||||||
&& jeSatzWertung($wertungen[0]->spielpunkte_wertung_einzel, $wertungen[0]->spielpunkte_wertung_doppel);
|
&& jeSatzWertung($wertungen[0]->spielpunkte_wertung_einzel, $wertungen[0]->spielpunkte_wertung_doppel);
|
||||||
|
$saetze_bekannt = count($wertungen) > 0 && $wertungen[0]->punktetyp == 1;
|
||||||
$ausgetragen = function ($alias) use ($je_satz) {
|
$ausgetragen = function ($alias) use ($je_satz) {
|
||||||
return ausgetragenBedingung($je_satz, $alias);
|
return ausgetragenBedingung($je_satz, $alias);
|
||||||
};
|
};
|
||||||
@@ -5668,6 +5669,8 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
|||||||
. "\n #__sportsmanager_team.tore_differenz = werte.tore_gewonnen - werte.tore_verloren,"
|
. "\n #__sportsmanager_team.tore_differenz = werte.tore_gewonnen - werte.tore_verloren,"
|
||||||
. "\n #__sportsmanager_team.tore_quotient = IF(werte.tore_verloren = 0, -1, werte.tore_gewonnen / werte.tore_verloren),"
|
. "\n #__sportsmanager_team.tore_quotient = IF(werte.tore_verloren = 0, -1, werte.tore_gewonnen / werte.tore_verloren),"
|
||||||
. "\n #__sportsmanager_team.saetze_remis = werte.saetze_remis,"
|
. "\n #__sportsmanager_team.saetze_remis = werte.saetze_remis,"
|
||||||
|
. "\n #__sportsmanager_team.saetze_gewonnen = " . ($saetze_bekannt ? "werte.punkte_gewonnen" : "NULL") . ","
|
||||||
|
. "\n #__sportsmanager_team.saetze_verloren = " . ($saetze_bekannt ? "werte.punkte_verloren" : "NULL") . ","
|
||||||
. "\n #__sportsmanager_team.buchholz1 = 0,"
|
. "\n #__sportsmanager_team.buchholz1 = 0,"
|
||||||
. "\n #__sportsmanager_team.buchholz2 = 0"
|
. "\n #__sportsmanager_team.buchholz2 = 0"
|
||||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id";
|
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id";
|
||||||
@@ -6254,6 +6257,10 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo
|
|||||||
$spiel_saetze_remis = saetzeRemisFuerSpiel(
|
$spiel_saetze_remis = saetzeRemisFuerSpiel(
|
||||||
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
|
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
|
||||||
$spiel->ergebnis_detailliert);
|
$spiel->ergebnis_detailliert);
|
||||||
|
|
||||||
|
list($spiel_heim_saetze_gewonnen, $spiel_gast_saetze_gewonnen) =
|
||||||
|
saetzeGewonnenFuerSpiel($teamspiel_modus->punktetyp,
|
||||||
|
$spiel->teamspiel_heim_punkte, $spiel->teamspiel_gast_punkte);
|
||||||
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
|
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
|
||||||
$total_saetze_remis = null;
|
$total_saetze_remis = null;
|
||||||
} else {
|
} else {
|
||||||
@@ -6265,7 +6272,9 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo
|
|||||||
. "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte',"
|
. "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte',"
|
||||||
. "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
|
. "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
|
||||||
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
|
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
|
||||||
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'")
|
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'") . ","
|
||||||
|
. "\n teamspiel_heim_saetze_gewonnen = " . ($spiel_heim_saetze_gewonnen === null ? "NULL" : "'$spiel_heim_saetze_gewonnen'") . ","
|
||||||
|
. "\n teamspiel_gast_saetze_gewonnen = " . ($spiel_gast_saetze_gewonnen === null ? "NULL" : "'$spiel_gast_saetze_gewonnen'")
|
||||||
. "\n WHERE teamspiel_id = $spiel->teamspiel_id";
|
. "\n WHERE teamspiel_id = $spiel->teamspiel_id";
|
||||||
$db->setQuery($query);
|
$db->setQuery($query);
|
||||||
if (!$db->execute()) {
|
if (!$db->execute()) {
|
||||||
|
|||||||
@@ -679,6 +679,13 @@ function ergebnisVorhanden($je_satz, $heim_punkte, $gast_punkte, $heim_tore): bo
|
|||||||
return $heim_punkte != null || $gast_punkte != null || ($je_satz && $heim_tore !== null);
|
return $heim_punkte != null || $gast_punkte != null || ($je_satz && $heim_tore !== null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saetzeGewonnenFuerSpiel($punktetyp, $heim_punkte, $gast_punkte): array
|
||||||
|
{
|
||||||
|
if ($punktetyp != 1)
|
||||||
|
return array(null, null);
|
||||||
|
return array((int)$heim_punkte, (int)$gast_punkte);
|
||||||
|
}
|
||||||
|
|
||||||
function saetzeRemisFuerSpiel($punktetyp, $satzergebnisse, $ergebnis_detailliert): ?int
|
function saetzeRemisFuerSpiel($punktetyp, $satzergebnisse, $ergebnis_detailliert): ?int
|
||||||
{
|
{
|
||||||
if ($punktetyp == 0 || empty($satzergebnisse) || empty($ergebnis_detailliert))
|
if ($punktetyp == 0 || empty($satzergebnisse) || empty($ergebnis_detailliert))
|
||||||
|
|||||||
@@ -727,6 +727,8 @@ return new class () implements InstallerScriptInterface
|
|||||||
. "\n `tore_differenz` smallint(6) DEFAULT NULL,"
|
. "\n `tore_differenz` smallint(6) DEFAULT NULL,"
|
||||||
. "\n `tore_quotient` float(8,2) DEFAULT NULL,"
|
. "\n `tore_quotient` float(8,2) DEFAULT NULL,"
|
||||||
. "\n `saetze_remis` smallint(6) DEFAULT NULL,"
|
. "\n `saetze_remis` smallint(6) DEFAULT NULL,"
|
||||||
|
. "\n `saetze_gewonnen` smallint(6) DEFAULT NULL,"
|
||||||
|
. "\n `saetze_verloren` smallint(6) DEFAULT NULL,"
|
||||||
. "\n `buchholz1` smallint(6) DEFAULT NULL,"
|
. "\n `buchholz1` smallint(6) DEFAULT NULL,"
|
||||||
. "\n `buchholz2` smallint(6) DEFAULT NULL,"
|
. "\n `buchholz2` smallint(6) DEFAULT NULL,"
|
||||||
. "\n PRIMARY KEY (`team_id`),"
|
. "\n PRIMARY KEY (`team_id`),"
|
||||||
@@ -787,6 +789,8 @@ return new class () implements InstallerScriptInterface
|
|||||||
. "\n `teamspiel_heim_tore` smallint(6) DEFAULT NULL,"
|
. "\n `teamspiel_heim_tore` smallint(6) DEFAULT NULL,"
|
||||||
. "\n `teamspiel_gast_tore` smallint(6) DEFAULT NULL,"
|
. "\n `teamspiel_gast_tore` smallint(6) DEFAULT NULL,"
|
||||||
. "\n `teamspiel_saetze_remis` smallint(6) DEFAULT NULL,"
|
. "\n `teamspiel_saetze_remis` smallint(6) DEFAULT NULL,"
|
||||||
|
. "\n `teamspiel_heim_saetze_gewonnen` smallint(6) DEFAULT NULL,"
|
||||||
|
. "\n `teamspiel_gast_saetze_gewonnen` smallint(6) DEFAULT NULL,"
|
||||||
. "\n PRIMARY KEY (`teamspiel_id`),"
|
. "\n PRIMARY KEY (`teamspiel_id`),"
|
||||||
. "\n KEY `begegnung_id` (`begegnung_id`),"
|
. "\n KEY `begegnung_id` (`begegnung_id`),"
|
||||||
. "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`),"
|
. "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`),"
|
||||||
|
|||||||
Reference in New Issue
Block a user