Compare commits

..

32 Commits

Author SHA1 Message Date
MarvinF f430c7d35d Merge pull request #273 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2026-03-24 17:17:57 +01:00
MarvinF 73c352f6cf Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-03-24 17:16:00 +01:00
MarvinF c8c19ef8e0 Merge pull request #272 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-03-24 17:13:22 +01:00
MarvinF cb0db3833c Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-03-24 17:12:24 +01:00
MarvinF 29e7ea7ffa Merge pull request #271 from Deutscher-Tischfussballbund/fix/common-update
fix: refactor the update php to allow different databases
2026-03-24 17:10:46 +01:00
MarvinF 426a582844 Merge pull request #270 from Deutscher-Tischfussballbund/sportsmanager2-issue269
Fixes for Direct Compare, Player Statistics, Home field right
2026-03-24 02:12:16 +01:00
Marvin Flock c1763536c9 fix: refactor the update php to allow different databases 2026-03-24 01:38:18 +01:00
Jürgen Meyer 507861fd56 Neuberechung Quote in Spielerstatistik 2026-03-23 13:33:45 +01:00
Jürgen Meyer 168ad7dab4 Terminänderung funktionierte nicht mehr bei Tausch Heimrecht. 2026-03-23 12:08:11 +01:00
Jürgen Meyer c8483b077e Weiter Optimierung 2026-03-17 13:08:02 +01:00
Jürgen Meyer c23ed24962 Kleine Optimierung 2026-03-17 13:05:59 +01:00
Jürgen Meyer f70048f90f Fehlerkorrektur Direkter Vergleich 2026-03-17 12:47:43 +01:00
MarvinF 572ccee6fd Merge pull request #267 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2026-03-10 00:13:41 +01:00
MarvinF fa03965b17 Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2026-03-10 00:13:14 +01:00
MarvinF 0376b46470 Merge pull request #266 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2026-03-10 00:11:00 +01:00
MarvinF c8f419e00a Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2026-03-10 00:10:35 +01:00
MarvinF 116e4929b2 Merge pull request #265 from Deutscher-Tischfussballbund/sportsmanager2-issue261-issue262
Optimizations for Hall of fame, gameplans, associations, game postponement and more
2026-03-10 00:09:13 +01:00
MarvinF aed4d19c47 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue261-issue262 2026-03-10 00:08:54 +01:00
Jürgen Meyer 2faa38e2b8 Hilfsausgabe gelöscht 2026-03-09 07:44:59 +01:00
Jürgen Meyer dc0fcea945 Beanstandung Copilot abgearbeitet 5 2026-03-09 07:43:20 +01:00
Jürgen Meyer e139ac4fc2 Beanstandung Copilot abgearbeitet 4 2026-03-08 23:59:38 +01:00
jmeyer26 5919994a3e Update src/structure/components/com_sportsmanager/admin.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 23:02:02 +01:00
jmeyer26 eccecedf95 Update src/structure/language/de-DE/de-DE.com_sportsmanager.ini
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 22:58:31 +01:00
Jürgen Meyer 9ed58f2916 Beanstandung Copilot abgearbeitet 2 2026-03-08 22:43:05 +01:00
Jürgen Meyer 1a9188c07b Beanstandung Copilot abgearbeitet 1 2026-03-08 21:46:09 +01:00
Jürgen Meyer 9435515088 Beim Löschen von Spieler bzw. Vereine werden die entsprechenden ids in Hall of Fame und Verbandsorgane gelöscht 2026-03-08 20:43:10 +01:00
Jürgen Meyer 4ada3a3b77 Bemerkungen angepasst 2026-03-08 12:23:39 +01:00
Jürgen Meyer 8391bf9df1 Automatische Spielberichtskorrektur bei doppelter Spielnummer 2026-03-08 12:19:10 +01:00
Jürgen Meyer bac4c0ada4 Funktion Spielbericht löschen hinzugefügt. 2026-03-08 09:23:27 +01:00
Jürgen Meyer eed02e396d Evtl. vorhandene Ordnungsstrafen werden beim Löschen eines Spieles mitgelöscht. 2026-03-06 20:16:54 +01:00
Jürgen Meyer 40be14ad75 Heimrechttausch: Sicherheitsabfrage und speichern in Historie 2026-03-06 15:10:01 +01:00
Jürgen Meyer 54965f9ef2 Scrollbalken bei Ordnungsstrafen, Verbandsorgane und Hall of Fame 2026-03-06 10:43:46 +01:00
7 changed files with 378 additions and 70 deletions
@@ -1655,6 +1655,7 @@ function adminEditSpieler(): void
bildLoeschen("spieler", $id);
spielerstatistikAktualisieren();
halloffameAktualisieren();
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter));
}
@@ -1962,6 +1963,7 @@ function adminSpielerZusammenlegenForm(): void
aktuellerVereinAktualisieren($spieler_beizubehalten_id);
ranglisteAktualisieren();
einstufungAktualisieren();
halloffameAktualisieren();
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id);
}
@@ -2072,6 +2074,7 @@ function adminRemoveInaktiveSpielerForm(): void
}
spielerstatistikAktualisieren();
halloffameAktualisieren();
foreach ($bilder_spieler_ids as $id)
bildLoeschen("spieler", $id);
@@ -3713,6 +3716,7 @@ function adminEditVerein(): void
bildLoeschen("vereine", $id);
aktuellerVereinAktualisieren();
halloffameAktualisieren();
redirectSportsManagerURL('&task=admin_vereine');
}
@@ -3821,6 +3825,7 @@ function adminVereineZusammenlegenForm(): void
bildLoeschen("vereine", $verein_zu_entfernen_id);
aktuellerVereinAktualisieren();
halloffameAktualisieren();
redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id);
}
@@ -9275,10 +9280,16 @@ function heimspieltag_aktualisieren($team_id): void
$query = "SELECT begegnung_id, zeitpunkt"
. "\n FROM #__sportsmanager_begegnung"
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
. "\n WHERE heim_team_id = $team_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)"
. "\n WHERE heim_team_id = $team_id AND COALESCE(heim_spielpunkte, 0) = 0"
. "\n AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id)"
. "\n AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
. "\n AND NOT EXISTS("
. "\n SELECT * FROM #__sportsmanager_begegnung_historie"
. "\n WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id"
. "\n AND #__sportsmanager_begegnung_historie.aktion NOT IN (11,12))"
. "\n ORDER BY spieltag DESC";
$begegnungen = loadObjectList($db, $query);
foreach ($begegnungen as $begegnung) {
foreach ($begegnungen as $begegnung) {
$ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1));
$neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100);
$query = "UPDATE #__sportsmanager_begegnung"
@@ -9298,7 +9309,13 @@ function termin_aktualisieren($begegnung_id): void
$query = "SELECT heim_team_id, zeitpunkt"
. "\n FROM #__sportsmanager_begegnung"
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
. "\n WHERE begegnung_id = $begegnung_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)"
. "\n WHERE begegnung_id = $begegnung_id AND COALESCE(heim_spielpunkte, 0) = 0"
. "\n AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id)"
. "\n AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
. "\n AND NOT EXISTS("
. "\n SELECT * FROM #__sportsmanager_begegnung_historie"
. "\n WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id"
. "\n AND #__sportsmanager_begegnung_historie.aktion NOT IN (11,12))"
. "\n ORDER BY spieltag DESC";
$begegnungen = loadObjectList($db, $query);
if (count($begegnungen) < 1)
@@ -10312,6 +10329,12 @@ function adminRemoveBegegnung(): void
die($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_ordnungsstrafen WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
@@ -10340,6 +10363,7 @@ function adminRemoveBegegnung(): void
$db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id);
$id = $jInput->get('id', 0, 'INT');
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
if ($veranstaltungId == 0) die("Missing id!");
@@ -10384,6 +10408,14 @@ function adminRemoveBegegnung(): void
. "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte"
. "\n WHERE begegnung_id = $id";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "INSERT INTO #__sportsmanager_begegnung_historie"
. "\n (begegnung_historie_id,begegnung_id,aktion,user_id,eingetragen)"
. "\n VALUES (NULL,$id,11,$user_id,NOW());";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
@@ -10395,6 +10427,10 @@ function adminRemoveBegegnung(): void
function adminEditBegegnungSpielplan($bestaetigen): void
{
//$bestaetigen = 0: Eingabe Moderator
//$bestaetigen = 1: Bestätigung Ergebnis
//$bestaetigen = 2: Pineingabe
$db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
@@ -10503,7 +10539,7 @@ function adminEditBegegnungSpielplan($bestaetigen): void
if (count($rows) < 1) die("Wrong id!");
$gast_team = $rows[0];
$query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer";
$query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer, teamspiel_id";
$spiele = loadObjectList($db, $query);
$query = "SELECT *"
. "\n FROM #__sportsmanager_mitglied_von_team as t1"
@@ -10525,7 +10561,6 @@ function adminEditBegegnungSpielplan($bestaetigen): void
: $begegnung->spielort_id) . "\"";
$begegnung->spielort_name = loadResult($db, $spielortQuery);
if (isJson()) {
$response = JSON_sportsmanager::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus);
JSON_sportsmanager::JSON($response);
@@ -10558,6 +10593,7 @@ function adminSaveBegegnungSpielplan(): void
$erneut_oeffnen = $jInput->get('erneut_oeffnen', 0, 'INT');
$heim_team_id = $jInput->get('heim_team_id', 0, 'INT');
$gast_team_id = $jInput->get('gast_team_id', 0, 'INT');
$loeschen = $jInput->getString('loeschen', '');
if ($jInput->get('cancel', false, 'BOOL')) {
if ($bestaetigen == 1) {
@@ -10579,6 +10615,13 @@ function adminSaveBegegnungSpielplan(): void
$benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungId); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert
//Spielbericht komplett loeschen
if ($benutzer_ist_moderator && $loeschen !== '') {
adminDeleteMatchReportBegegnung($id,$veranstaltungId);
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id, Text::_('COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED'));
}
$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"
. "\n FROM #__sportsmanager_begegnung"
@@ -10929,6 +10972,32 @@ function adminSaveBegegnungSpielplan(): void
abortWithError($db->stderr(true));
}
// Spielbericht auf Fehler (doppelte Einträge) überprüfen
$query = "DELETE t1"
. "\n FROM #__sportsmanager_teamspiel t1"
. "\n INNER JOIN #__sportsmanager_teamspiel t2"
. "\n ON t1.begegnung_id = t2.begegnung_id"
. "\n AND t1.teamspiel_nummer = t2.teamspiel_nummer"
. "\n AND t1.teamspiel_id < t2.teamspiel_id"
. "\n WHERE t1.begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
// In Historie eintragen, wenn doppelte Einträge gelöscht wurden
$deleted = $db->getAffectedRows();
if ($deleted > 0) {
$query = "INSERT INTO #__sportsmanager_begegnung_historie"
. "\n (begegnung_historie_id, begegnung_id, aktion, team_id, user_id, eingetragen)"
. "\n VALUES (NULL, $id, 13, NULL, NULL, NOW());";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
}
// Benachrichtigung schreiben
$heim_team = null;
$gast_team = null;
@@ -11016,6 +11085,70 @@ function adminSaveBegegnungSpielplan(): void
}
}
function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void
{
$db = getDatabase();
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id);
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
$query = "UPDATE #__sportsmanager_begegnung"
. "\n SET heim_punkte = NULL,"
. "\n gast_punkte = NULL,"
. "\n heim_spielpunkte = NULL,"
. "\n gast_spielpunkte = NULL"
. "\n WHERE begegnung_id = $id";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id AND aktion IN (6,7,8,9,10,13);";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
spielerstatistikAktualisieren(0, $veranstaltungId);
teamstatistikAktualisieren($veranstaltungId);
// Elo-bezogene Auswertungen aktualisieren, falls für die Veranstaltung aktiviert
$query = "SELECT elo_wertung FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = " . $veranstaltungId . " LIMIT 1;";
$db->setQuery($query);
$eloWertung = (int) $db->loadResult();
if ($eloWertung === 1) {
// Startdatum der Veranstaltung für Elo-Berechnung ermitteln
$query = "SELECT erster_tag FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = " . $veranstaltungId . " LIMIT 1;";
$db->setQuery($query);
$aktualisieren_ab_datum = $db->loadResult();
// Funktionen mit korrekten Parametern aufrufen
wannGespieltAktualisieren();
eloAktualisieren($aktualisieren_ab_datum);
einstufungAktualisieren();
}
$query = "INSERT INTO #__sportsmanager_begegnung_historie"
. "\n (begegnung_historie_id,begegnung_id,aktion,user_id,eingetragen)"
. "\n VALUES (NULL,$id,12,$user_id,NOW());";
$db->setQuery($query);
if (!$db->execute()) {
abortWithError($db->stderr(true));
}
return;
}
#[NoReturn] function adminBegegnungSpielplanHeimtausch(): void
{
$db = getDatabase();
@@ -11122,6 +11255,24 @@ function adminSaveBegegnungSpielplan(): void
if (!$db->execute()) {
die($db->stderr(true));
}
$encrypted_pin = $db->escape($jInput->get('pin', '', 'RAW'));
$pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA");
$query = "SELECT team_id FROM #__sportsmanager_team"
. "\n WHERE pin = " . $db->quote($pin) . " AND veranstaltung_id = $veranstaltungId;";
$team_id = loadResult($db, $query);
if (empty($user_id) OR !empty($team_id)) $user_id = "NULL";
if (empty($team_id)) $team_id = "NULL";
$query = "INSERT INTO #__sportsmanager_begegnung_historie"
. "\n (begegnung_historie_id,begegnung_id,aktion,team_id,user_id,eingetragen)"
. "\n VALUES (NULL,$id,11,$team_id,$user_id,NOW());";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungId . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungId . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : ''));
@@ -12678,6 +12829,12 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
die($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_ordnungsstrafen WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;";
$db->setQuery($query);
if (!$db->execute()) {
@@ -5503,10 +5503,12 @@ function updateDatabase(): void
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
$query = "ALTER TABLE `#__sportsmanager_veranstaltung` ADD COLUMN IF NOT EXISTS `regelwerke_id` INT(11) NOT NULL DEFAULT '0' AFTER `bezeichnung`;";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
$columns = $db->getTableColumns('#__sportsmanager_veranstaltung');
if (!array_key_exists('regelwerke_id', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_veranstaltung` ADD COLUMN `regelwerke_id` INT(11) NOT NULL DEFAULT '0' AFTER `bezeichnung`;";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '114'"
. "\n WHERE name = 'datenbank_version'";
@@ -5519,13 +5521,18 @@ function updateDatabase(): void
if ($datenbank_version < 115) {
// Erweiterung Tabelle #__sportsmanager_verschieberegel
$query = "ALTER TABLE `#__sportsmanager_verschieberegel`"
."\n ADD COLUMN IF NOT EXISTS `begruendung_erforderlich` INT(1) NOT NULL DEFAULT 0 AFTER `ablehnen`,"
."\n ADD COLUMN IF NOT EXISTS `vereine_berechtigt` INT(1) NOT NULL DEFAULT 1 AFTER `begruendung_erforderlich`,"
."\n ADD COLUMN IF NOT EXISTS `verband_berechtigt` INT(1) NOT NULL DEFAULT 0 AFTER `vereine_berechtigt`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
$columns = $db->getTableColumns('#__sportsmanager_verschieberegel');
if (!array_key_exists('begruendung_erforderlich', $columns)
|| !array_key_exists('vereine_berechtigt', $columns)
|| !array_key_exists('verband_berechtigt', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_verschieberegel`"
. "\n ADD COLUMN `begruendung_erforderlich` INT(1) NOT NULL DEFAULT 0 AFTER `ablehnen`,"
. "\n ADD COLUMN `vereine_berechtigt` INT(1) NOT NULL DEFAULT 1 AFTER `begruendung_erforderlich`,"
. "\n ADD COLUMN `verband_berechtigt` INT(1) NOT NULL DEFAULT 0 AFTER `vereine_berechtigt`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "INSERT IGNORE INTO `#__sportsmanager_email_vorlagen` (`email_vorlagen_id`, `vorlage`) VALUES (NULL, 'Spielverlegung');";
@@ -5543,20 +5550,28 @@ function updateDatabase(): void
if ($datenbank_version < 116) {
$query = "ALTER TABLE `#__sportsmanager_spielort`"
. "\n ADD IF NOT EXISTS `telefon` VARCHAR(64) NULL DEFAULT NULL AFTER `url`,"
. "\n ADD IF NOT EXISTS `email` VARCHAR(64) NULL DEFAULT NULL AFTER `telefon`,"
. "\n ADD IF NOT EXISTS `ruhetage` VARCHAR(64) NULL DEFAULT NULL AFTER `email`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
$columns = $db->getTableColumns('#__sportsmanager_spielort');
if (!array_key_exists('telefon', $columns)
|| !array_key_exists('email', $columns)
|| !array_key_exists('ruhetage', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_spielort`"
. "\n ADD `telefon` VARCHAR(64) NULL DEFAULT NULL AFTER `url`,"
. "\n ADD `email` VARCHAR(64) NULL DEFAULT NULL AFTER `telefon`,"
. "\n ADD `ruhetage` VARCHAR(64) NULL DEFAULT NULL AFTER `email`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "ALTER TABLE `#__sportsmanager_team`"
. "\n ADD IF NOT EXISTS `trainingstage` VARCHAR(64) NULL DEFAULT NULL AFTER `heimspielort_id`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
$columns = $db->getTableColumns('#__sportsmanager_team');
if (!array_key_exists('trainingstage', $columns)){
$query = "ALTER TABLE `#__sportsmanager_team`"
. "\n ADD `trainingstage` VARCHAR(64) NULL DEFAULT NULL AFTER `heimspielort_id`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "UPDATE #__sportsmanager_einstellungen"
@@ -5581,10 +5596,15 @@ function updateDatabase(): void
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "ALTER TABLE #__sportsmanager_veranstaltung"
. "\n ADD IF NOT EXISTS explizite_strafen tinyint(4) DEFAULT '0' AFTER elo_wertung";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
$columns = $db->getTableColumns('#__sportsmanager_veranstaltung');
if (!array_key_exists('explizite_strafen', $columns)) {
$query = "ALTER TABLE #__sportsmanager_veranstaltung"
. "\n ADD explizite_strafen tinyint(4) DEFAULT '0' AFTER elo_wertung";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "UPDATE #__sportsmanager_einstellungen SET wert = '117' WHERE name = 'datenbank_version'";
$db->setQuery($query);
@@ -1832,14 +1832,15 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag)
{
$gesamtpunkte = 1000;
$anzahlSpiele = 1000;
$platz = 0;
$punktgleicheMannschaften = [];
$korrekturen = [];
$bufferplatz = [];
foreach($teams AS $team){
$bufferplatz[$team->team_id]['platz'] = $team->platz;
if (($gesamtpunkte != $team->gesamtpunkte) OR ($anzahlSpiele != $team->anzahl_spiele)){
$gesamtpunkte = $team->gesamtpunkte;
$anzahlSpiele = $team->anzahl_spiele;
@@ -1851,10 +1852,54 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag)
$korrekturen[$platz] = $punktgleicheMannschaften[$platz];
}
}
if (!empty($korrekturen)){
foreach($korrekturen AS $key => $korrektur){
$teamsKorrektur = getTabelleSpieltag($veranstaltung,$spieltag,$korrektur,$key-1);
foreach($teamsKorrektur AS $teamKorrektur){
$teamKorrektur->platz_alt = $bufferplatz[$teamKorrektur->team_id]['platz'];
}
if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7){
usort($teamsKorrektur, fn($a, $b) =>
[(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_differenz, (float)$b->punkte_differenz, (int)$a->platz_alt]
<=>
[(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_differenz, (float)$a->punkte_differenz, (int)$b->platz_alt]
);
}
else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8){
usort($teamsKorrektur, fn($a, $b) =>
[(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, (int)$a->platz_alt]
<=>
[(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, (int)$b->platz_alt]
);
}
else if ($veranstaltung->tabellenwertung == 10){
usort($teamsKorrektur, fn($a, $b) =>
[(float)$b->spielpunkte_differenz, (float)$b->punkte_differenz, (int)$a->platz_alt]
<=>
[(float)$a->spielpunkte_differenz, (float)$a->punkte_differenz, (int)$b->platz_alt]
);
}
else if ($veranstaltung->tabellenwertung == 11){
usort($teamsKorrektur, fn($a, $b) =>
[(float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, (int)$a->platz_alt]
<=>
[(float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, (int)$b->platz_alt]
);
}
else {
usort($teamsKorrektur, fn($a, $b) =>
[(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (int)$a->platz_alt]
<=>
[(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (int)$b->platz_alt]
);
}
$neuerPlatz = $key;
foreach ($teamsKorrektur as $teamKorrektur) {
$teamKorrektur->platz = $neuerPlatz++;
}
foreach($teamsKorrektur AS $teamKorrektur){
foreach($teams AS $team){
if ($team->team_id == $teamKorrektur->team_id){
@@ -6028,6 +6073,56 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea
}
}
function halloffameAktualisieren(): void
{
//Beim Löschen von Spieler bzw. Vereine werden die entsprechenden ids in Hall of Fame und Verbandsorgane gelöscht
$db = getDatabase();
// spieler1_id prüfen
$query = "UPDATE #__sportsmanager_mitglied_von_halloffame h"
. "\n LEFT JOIN #__sportsmanager_spieler s ON s.spieler_id = h.spieler1_id"
. "\n SET h.spieler1_id = NULL"
. "\n WHERE h.spieler1_id IS NOT NULL"
. "\n AND s.spieler_id IS NULL;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
// spieler2_id prüfen
$query = "UPDATE #__sportsmanager_mitglied_von_halloffame h"
. "\n LEFT JOIN #__sportsmanager_spieler s ON s.spieler_id = h.spieler2_id"
. "\n SET h.spieler2_id = NULL"
. "\n WHERE h.spieler2_id IS NOT NULL"
. "\n AND s.spieler_id IS NULL;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
// verein_id prüfen
$query = "UPDATE #__sportsmanager_mitglied_von_halloffame h"
. "\n LEFT JOIN #__sportsmanager_verein v ON v.verein_id = h.verein_id"
. "\n SET h.verein_id = NULL"
. "\n WHERE h.verein_id IS NOT NULL"
. "\n AND v.verein_id IS NULL;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
// Verbandsorgan-Spieler prüfen
$query = "UPDATE #__sportsmanager_mitglied_von_verbandsorgan h"
. "\n LEFT JOIN #__sportsmanager_spieler s ON s.spieler_id = h.spieler_id"
. "\n SET h.spieler_id = NULL"
. "\n WHERE h.spieler_id IS NOT NULL"
. "\n AND s.spieler_id IS NULL;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
function wannGespieltAktualisieren(): void
{
$db = getDatabase();
@@ -1709,7 +1709,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_MATCHDAY_SELECT'); ?>"
class="uk-select uk-form-width-medium" name="spieltag" size="1"
onChange="document.adminForm.submit();">
onChange="this.form.submit();">
<?php
foreach ($spieltage as $s) {
echo "<option value=\"" . $s->spieltag . "\"" . ($s->spieltag == $spieltag ? " selected" : "") . ">" . htmlentities_utf8(Rundenbezeichnung($s->spieltag, $veranstaltung->unterteilung == 0)) . "</option>";
@@ -4023,6 +4023,7 @@ static function verbandsorgane($titel, $beschreibung, $rows, $organisation_zeige
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
@@ -4061,6 +4062,7 @@ static function verbandsorgane($titel, $beschreibung, $rows, $organisation_zeige
}
?>
</table>
</div>
<?php
}
@@ -4088,6 +4090,7 @@ static function verbandsorganeDetails($titel, $beschreibung, $verbandsorgan, $ro
<?php
}
echo "<div class='uk-overflow-auto'>";
echo "<H1>" . $verbandsorgan->verbandsorgan . "</H1>";
echo $verbandsorgan->beschreibung;
@@ -4136,6 +4139,7 @@ static function verbandsorganeDetails($titel, $beschreibung, $verbandsorgan, $ro
<?php
}
?>
</div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
@@ -4161,6 +4165,7 @@ static function halloffame($titel, $beschreibung, $rows): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
@@ -4187,6 +4192,7 @@ static function halloffame($titel, $beschreibung, $rows): void
}
?>
</table>
</div>
<?php
}
?>
@@ -4217,7 +4223,7 @@ static function halloffameDetails($titel, $beschreibung, $rows, $halloffame): vo
if ($rows != null) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
@@ -4320,6 +4326,7 @@ static function halloffameDetails($titel, $beschreibung, $rows, $halloffame): vo
<?php
}
?>
</div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
@@ -6198,10 +6205,6 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
<?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT'); ?>
-</strong></th>
<th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_RATE'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_RATE_SHORTCUT'); ?></strong></th>
<th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_WON'); ?>">
@@ -6212,6 +6215,10 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
<?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS_SHORTCUT'); ?> -</strong>
</th>
<th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_RATE'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_RATE_SHORTCUT'); ?></strong>
</th>
<th nowrap title="<?php echo Text::_('COM_SPORTSMANAGER_VICTORIES'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_VICTORIES_SHORTCUT'); ?></strong>
</th>
@@ -6288,6 +6295,7 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
</td>
<?php
}
$spiele_gesamt = $row->siege + $row->niederlagen + $row->unentschieden;
?>
<td nowrap
style="text-align: center"><?php echo $row->siege + $row->niederlagen + $row->unentschieden; ?></td>
@@ -6295,10 +6303,10 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
style="text-align: center"><?php echo ($spielerstatistik->tabellenwertung == 0 ? "<strong>" : "") . $row->spielpunkte_gewonnen . ($spielerstatistik->tabellenwertung == 0 ? "<strong>" : ""); ?></strong></td>
<td nowrap
style="text-align: center"><?php echo $row->spielpunkte_verloren; ?></td>
<td nowrap
style="text-align: center"><?php echo ($row->spielpunkte_gewonnen > 0 || $row->spielpunkte_verloren > 0) ? round($row->spielpunkte_gewonnen * 100 / ($row->spielpunkte_gewonnen + $row->spielpunkte_verloren)) . "%" : "-"; ?></td>
<td nowrap style="text-align: center"><?php echo $row->punkte_gewonnen; ?></td>
<td nowrap style="text-align: center"><?php echo $row->punkte_verloren; ?></td>
<td nowrap
style="text-align: center"><?php echo ($spiele_gesamt > 0) ? round((($row->siege * 2 + $row->unentschieden) / ($spiele_gesamt * 2)) * 100) . "%" : "-"; ?></td>
<td nowrap style="text-align: center"><?php echo $row->siege; ?></td>
<td nowrap style="text-align: center"><?php echo $row->unentschieden; ?></td>
<td nowrap style="text-align: center"><?php echo $row->niederlagen; ?></td>
@@ -7087,6 +7087,7 @@ class HTML_sportsmanager_admin
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>" style='width: 100%;'>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap><strong>ID</strong></th>
@@ -7137,6 +7138,7 @@ class HTML_sportsmanager_admin
}
?>
</table>
</div>
<?php
}
}
@@ -7365,7 +7367,7 @@ class HTML_sportsmanager_admin
</tr>
</table>
</form>
<div class="uk-overflow-auto">
<div class="uk-overflow-auto">
<table class="uk-table-shrink contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>" style='width: 100%;'>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap style='text-align: center; width: 60px;'><STRONG>ID</STRONG></th>
@@ -7432,7 +7434,8 @@ class HTML_sportsmanager_admin
}
}
?>
</table></div>
</table>
</div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
@@ -7552,7 +7555,7 @@ class HTML_sportsmanager_admin
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 400px;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left; width: 250px;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_ASSOCIATION_BODIES'); ?></strong></th>
@@ -7585,7 +7588,7 @@ class HTML_sportsmanager_admin
}
?>
</table>
</div>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<input type="submit" value="<?php echo Text::_('COM_SPORTSMANAGER_EXPORT'); ?>" class="button"
onclick="const t = this.form.task;
@@ -7732,6 +7735,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 800px;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left; width: 240px;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_MEMBER'); ?></strong></th>
@@ -7770,6 +7774,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -7951,6 +7956,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
@@ -7985,6 +7991,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -8123,7 +8130,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
<?php
if ($rows != null) {
?>
<div class="uk-overflow-auto">
<table style='border-collapse: collapse;'
class="uk-table-hover uk-table-divider uk-table-middle dtfl-table-medium contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
@@ -8253,6 +8260,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -8489,6 +8497,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
if (count($rows) > 0) {
?>
<div class="uk-overflow-auto">
<table style='width: 100%;' class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th style='text-align: left;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_RULEBOOK'); ?></strong></th>
@@ -8523,6 +8532,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
}
?>
</table>
</div>
<?php
}
}
@@ -11093,7 +11103,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
?>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_begegnung_heimtausch&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"><?php echo Text::_('COM_SPORTSMANAGER_HOME_EXCHANGE'); ?></a></small>
href="<?php echo SportsManagerURL('&task=admin_begegnung_heimtausch&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_SWAP_MATCH'); ?>');">
<?php echo Text::_('COM_SPORTSMANAGER_HOME_EXCHANGE'); ?></a></small>
</td>
<td nowrap><small><a
href="<?php echo SportsManagerURL('&task=admin_begegnung_remove&veranstaltungid=' . $veranstaltung->veranstaltung_id . '&id=' . $row->begegnung_id); ?>"
@@ -11462,6 +11474,9 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
8 => Text::_('COM_SPORTSMANAGER_MODIFIED_RESULTS'),
9 => Text::_('COM_SPORTSMANAGER_LIVE_RESULTS'),
10 => Text::_('COM_SPORTSMANAGER_REJECTED_SHIFT'),
11 => Text::_('COM_SPORTSMANAGER_SWAP_MATCH'),
12 => Text::_('COM_SPORTSMANAGER_MATCH_REPORT_DELETED'),
13 => Text::_('COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED'),
default => Text::_('COM_SPORTSMANAGER_PROPOSED_APPOINTMENT'),
};
?>
@@ -11562,6 +11577,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
?>
<input type="submit" name="heimrecht_tauschen"
value="<?php echo Text::_('COM_SPORTSMANAGER_ADVANTAGE_HOME'); ?>"
onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_SWAP_MATCH'); ?>');"
class="button"/>
<?php
}
@@ -11995,12 +12011,13 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
$js_pruefung .= "if (!spieler_eingetragen()) { if (!confirm('" . ($spielernamen == 1 ? Text::_('COM_SPORTSMANAGER_NO_PLAYERS_FOR_DOUBLES') : Text::_('COM_SPORTSMANAGER_NOT_ALL_PLAYERS_FROM_REGISTERED')) . " " . Text::_('COM_SPORTSMANAGER_WANT_TO_SAVE_RESULT') . "')) return false; } ";
?>
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>"
class="button"<?php if (!empty($js_pruefung)) echo " onclick=\"" . $js_pruefung . "return true;\""; ?> />
class="button"<?php if (!empty($js_pruefung)) echo " onclick=\"" . $js_pruefung . "return true;\""; ?> />
<input type="submit" name="loeschen" value="<?php echo Text::_('COM_SPORTSMANAGER_DELETE'); ?>"
class="button" onclick="return confirm('<?php echo Text::_('COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT'); ?>');" />
<?php
}
?>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>"
class="button"/>
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>" class="button"/>
<input type="hidden" name="task" value="admin_begegnung_spielplan_save"/>
<input type="hidden" name="id" value="<?php echo($begegnung != null ? $begegnung->begegnung_id : "0"); ?>"/>
<input type="hidden" name="veranstaltungid" value="<?php echo $veranstaltung->veranstaltung_id; ?>"/>
@@ -12020,7 +12037,6 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
static function adminBegegnungenGenerieren($veranstaltung, $rows): void
{
//geändert am 07.03.2025 von Jürgen Meyer
global $params;
$anzahlteams = count($rows);
if ($anzahlteams % 2)
@@ -299,7 +299,7 @@ COM_SPORTSMANAGER_PLAYER_STATISTICS="Spielerstatistiken"
COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="LI"
COM_SPORTSMANAGER_WON="gewonnen"
COM_SPORTSMANAGER_LOST="verloren"
COM_SPORTSMANAGER_RATE="Quote"
COM_SPORTSMANAGER_RATE="Siegquote"
COM_SPORTSMANAGER_RATE_SHORTCUT="Q"
COM_SPORTSMANAGER_NO_CLUB="Kein Verein"
COM_SPORTSMANAGER_RATING="Wertung"
@@ -1093,3 +1093,9 @@ COM_SPORTSMANAGER_REALLY_REMOVE_HALL_OF_FAME_YEAR="Willst Du wirklich dieses Hal
COM_SPORTSMANAGER_YEARS="Jahre"
COM_SPORTSMANAGER_ADD_HALL_OF_FAME_YEAR="Hall of Fame Jahr hinzuf&uuml;gen"
COM_SPORTSMANAGER_NO_ENTRY="kein Eintrag"
COM_SPORTSMANAGER_REALLY_SWAP_MATCH="Willst Du wirklich das Heimrecht tauschen?"
COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch"
COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit allen historischen Eintr&auml;gen gel&ouml;scht. Willst du den Spielbericht wirklich l&ouml;schen?"
COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Spielbericht gel&ouml;scht"
COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gel&ouml;scht!"
COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur"
@@ -299,7 +299,7 @@ COM_SPORTSMANAGER_PLAYER_STATISTICS="Player statistics"
COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="PI"
COM_SPORTSMANAGER_WON="won"
COM_SPORTSMANAGER_LOST="lost"
COM_SPORTSMANAGER_RATE="Rate"
COM_SPORTSMANAGER_RATE="Winning rate"
COM_SPORTSMANAGER_RATE_SHORTCUT="R"
COM_SPORTSMANAGER_NO_CLUB="No club"
COM_SPORTSMANAGER_RATING="Rating"
@@ -1093,3 +1093,9 @@ COM_SPORTSMANAGER_REALLY_REMOVE_HALL_OF_FAME_YEAR="Are you sure you want to dele
COM_SPORTSMANAGER_YEARS="Years"
COM_SPORTSMANAGER_ADD_HALL_OF_FAME_YEAR="Add Hall of Fame Year"
COM_SPORTSMANAGER_NO_ENTRY="no entry"
COM_SPORTSMANAGER_REALLY_SWAP_MATCH="Do you really want to swap the home advantage?"
COM_SPORTSMANAGER_SWAP_MATCH="Swap home advantage"
COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="The match report and all its history will be deleted. Are you sure you want to delete the match report?"
COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Match report deleted"
COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="The match report has been successfully deleted!"
COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected"