From c1763536c905bda22cdf179fdc1980cdda72c7b9 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Tue, 24 Mar 2026 01:38:18 +0100 Subject: [PATCH] fix: refactor the update php to allow different databases --- .../com_sportsmanager/database/update.php | 90 +++++++++++-------- 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index e965805..0fa7438 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -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,19 +5521,24 @@ 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');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } - + $query = "UPDATE #__sportsmanager_einstellungen" . "\n SET wert = '115'" . "\n WHERE name = 'datenbank_version'"; @@ -5540,25 +5547,33 @@ function updateDatabase(): void die($db->stderr(true)); } } - + 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" . "\n SET wert = '116'" . "\n WHERE name = 'datenbank_version'"; @@ -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); @@ -5608,7 +5628,7 @@ function updateDatabase(): void if (!$db->execute()) { die($db->stderr(true)); } - + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_mitglied_von_verbandsorgan` (" . "\n `mitglied_von_verbandsorgan_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `verbandsorgane_id` int(11) DEFAULT NULL," @@ -5629,7 +5649,7 @@ function updateDatabase(): void if (!$db->execute()) { die($db->stderr(true)); } - + $query = "UPDATE #__sportsmanager_einstellungen" . "\n SET wert = '118'" . "\n WHERE name = 'datenbank_version'"; @@ -5678,7 +5698,7 @@ function updateDatabase(): void if (!$db->execute()) { die($db->stderr(true)); } - + $query = "UPDATE #__sportsmanager_einstellungen" . "\n SET wert = '119'" . "\n WHERE name = 'datenbank_version'";