diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php
index cd7bae3..8ec62c3 100644
--- a/src/structure/components/com_sportsmanager/admin.php
+++ b/src/structure/components/com_sportsmanager/admin.php
@@ -10410,6 +10410,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;
@@ -10593,6 +10597,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 && $jInput->get('loeschen', false, 'BOOL')) {
+ adminDeleteMatchReportBegegnung($id);
+ 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"
@@ -11030,6 +11041,54 @@ function adminSaveBegegnungSpielplan(): void
}
}
+function adminDeleteMatchReportBegegnung($id): 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);";
+ $db->setQuery($query);
+ if (!$db->execute()) {
+ abortWithError($db->stderr(true));
+ }
+
+ spielerstatistikAktualisieren(0, $veranstaltungId);
+ teamstatistikAktualisieren($veranstaltungId);
+
+ $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();
diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
index 64cf33d..18671cc 100644
--- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
+++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
@@ -11475,6 +11475,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void
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'),
default => Text::_('COM_SPORTSMANAGER_PROPOSED_APPOINTMENT'),
};
?>
@@ -12009,12 +12010,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; } ";
?>
/>
+ class="button" />
+
-
+
"/>
@@ -12034,7 +12036,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)
diff --git a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini
index c859f17..3fa74f3 100644
--- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini
+++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini
@@ -1094,4 +1094,7 @@ COM_SPORTSMANAGER_YEARS="Jahre"
COM_SPORTSMANAGER_ADD_HALL_OF_FAME_YEAR="Hall of Fame Jahr hinzufügen"
COM_SPORTSMANAGER_NO_ENTRY="kein Eintrag"
COM_SPORTSMANAGER_REALLY_SWAP_MATCH="Willst Du wirklich das Heimrecht tauschen?"
-COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch"
\ No newline at end of file
+COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch"
+COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit allen historischen Einträgen gelöscht. Willst du den Spielbericht wirklich löschen?"
+COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Spielbericht gelöscht"
+COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gelöscht!"
\ No newline at end of file
diff --git a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini
index 429dae9..e7c39f8 100644
--- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini
+++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini
@@ -1094,4 +1094,7 @@ 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"
\ No newline at end of file
+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!"
\ No newline at end of file