Menüstruktur für admin Spielverlegungen erstellt

This commit is contained in:
Jürgen Meyer
2025-12-29 17:45:21 +01:00
parent 4686f5d8db
commit 7253426b51
6 changed files with 277 additions and 20 deletions
@@ -4544,6 +4544,94 @@ function adminEditTeamspielmodus(): void
redirectSportsManagerURL('&task=admin_teamspiel_modi'); redirectSportsManagerURL('&task=admin_teamspiel_modi');
} }
function adminSpielverlegungen(): void
{
$db = getDatabase();
global $params;
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$filter_status = $jInput->get('filter_status', '', 'RAW');
$filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT');
if ($filter_saison_id == 0)
$filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT');
$query = "SELECT saison_id, saisonbezeichnung"
. "\n FROM #__sportsmanager_saison"
. "\n ORDER BY saisonbezeichnung DESC";
$saisons = loadObjectList($db, $query);
if (empty($filter_saison_id))
$filter_saison_id = $saisons[0]->saison_id;
if (empty($filter_status))
$filter_status = "offen,genehmigt,abgelehnt";
$query = "SELECT"
. "\n t1.begegnung_id, t1.beantragt, t1.Begruendung AS Begruendung_beantragt, t1.Termin_alt,"
. "\n t2.genehmigt, t2.Termin_neu, t2.Begruendung AS Begruendung_genehmigt,"
. "\n t3.abgelehnt, t3.Begruendung AS Begruendung_abgelehnt,"
. "\n t5.teamname AS Heim, t6.teamname AS Gast, t7.bezeichnung AS Liga, t8.teamname AS beantragt_von,"
// Ermittlung Status
. "\n CASE"
. "\n WHEN t3.abgelehnt IS NOT NULL AND (t2.genehmigt IS NULL OR t3.abgelehnt > t2.genehmigt)"
. "\n THEN 'abgelehnt'"
. "\n WHEN t2.genehmigt IS NOT NULL"
. "\n THEN 'genehmigt'"
. "\n ELSE 'offen'"
. "\n END AS status"
// Beantragt
. "\n FROM ("
. "\n SELECT begegnung_id,"
. "\n MIN(eingetragen) AS beantragt,"
. "\n MIN(zeitpunkt) AS Termin_alt,"
. "\n MAX(kommentar) AS Begruendung,"
. "\n MAX(team_id) AS team_id"
. "\n FROM #__sportsmanager_begegnung_historie"
. "\n WHERE aktion IN (2,3)"
. "\n GROUP BY begegnung_id"
. "\n ) AS t1"
// Genehmigt
. "\n LEFT JOIN ("
. "\n SELECT begegnung_id,"
. "\n MAX(eingetragen) AS genehmigt,"
. "\n MAX(zeitpunkt) AS Termin_neu,"
. "\n MAX(kommentar) AS Begruendung"
. "\n FROM #__sportsmanager_begegnung_historie"
. "\n WHERE aktion = 1"
. "\n GROUP BY begegnung_id"
. "\n ) AS t2 ON t2.begegnung_id = t1.begegnung_id"
// Abgelehnt
. "\n LEFT JOIN ("
. "\n SELECT begegnung_id,"
. "\n MAX(eingetragen) AS abgelehnt,"
. "\n MAX(kommentar) AS Begruendung"
. "\n FROM #__sportsmanager_begegnung_historie"
. "\n WHERE aktion = 10"
. "\n GROUP BY begegnung_id"
. "\n ) AS t3 ON t3.begegnung_id = t1.begegnung_id"
// Sonstige Infos
. "\n LEFT JOIN #__sportsmanager_begegnung AS t4 ON t4.begegnung_id = t1.begegnung_id"
. "\n LEFT JOIN #__sportsmanager_team AS t5 ON t5.team_id = t4.heim_team_id"
. "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t4.gast_team_id"
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t7 ON t7.veranstaltung_id = t5.veranstaltung_id"
. "\n LEFT JOIN #__sportsmanager_team AS t8 ON t8.team_id = t1.team_id"
// Filter
. "\n WHERE t7.saison_id = '$filter_saison_id'"
. "\n " . kategorieFilter("AND t7.kategorie IN")
. "\n HAVING status in ('" . str_replace(",", "','", $filter_status) . "')"
. "\n ORDER BY t1.beantragt DESC;";
$spielverlegungen = loadObjectList($db, $query);
HTML_sportsmanager_admin::adminSpielverlegungen($spielverlegungen,$saisons,$filter_saison_id);
}
function adminVerschiebenModi(): void function adminVerschiebenModi(): void
{ {
$db = getDatabase(); $db = getDatabase();
@@ -6851,9 +6939,16 @@ function adminEditEmailVorlage($vorlage): void
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
$row = $rows[0]; $row = $rows[0];
if ($vorlage == 'Ordnungsstrafe'){
$vars = "Ansprechpartner, SPO, GO, Regelwerk, Verstoss, Begegnung, Liga, Spieltag, $vars = "Ansprechpartner, SPO, GO, Regelwerk, Verstoss, Begegnung, Liga, Spieltag,
<br>Spieldatum, Verein, Gebuehr, Zusatztext, Erweitert, Aussteller"; <br>Spieldatum, Verein, Gebuehr, Zusatztext, Erweitert, Aussteller";
HTML_sportsmanager_admin::adminEditEmailVorlage($vorlage,$row,$vars); $back = 'admin_ordnungsstrafen';
}
if ($vorlage == 'Spielverlegung'){
$vars = "Alter_Termin, Neuer_Termin";
$back = 'admin_spielverlegungen';
}
HTML_sportsmanager_admin::adminEditEmailVorlage($vorlage,$row,$vars,$back);
} }
function adminSaveEmailVorlage(): void function adminSaveEmailVorlage(): void
@@ -6863,8 +6958,10 @@ function adminSaveEmailVorlage(): void
if (!benutzerZugriff("benutzerVeranstalterModerator")) if (!benutzerZugriff("benutzerVeranstalterModerator"))
keinZugriff(); keinZugriff();
$back = $db->escape(trim($jInput->get('back', '', 'RAW')));
if ($jInput->get('cancel', false, 'BOOL')) { if ($jInput->get('cancel', false, 'BOOL')) {
redirectSportsManagerURL('&task=admin_ordnungsstrafen'); redirectSportsManagerURL('&task=' . $back);
} }
$vorlage = $db->escape(trim($jInput->get('vorlage', '', 'RAW'))); $vorlage = $db->escape(trim($jInput->get('vorlage', '', 'RAW')));
@@ -6884,7 +6981,7 @@ function adminSaveEmailVorlage(): void
die($db->stderr(true)); die($db->stderr(true));
} }
redirectSportsManagerURL('&task=admin_ordnungsstrafen'); redirectSportsManagerURL('&task=' . $back);
} }
function adminEditVeranstaltung(): void function adminEditVeranstaltung(): void
@@ -11342,20 +11439,66 @@ function adminBegegnungenExportForm(): void
foreach ($rows as $value) { foreach ($rows as $value) {
// letze Änderung $Bestaetigt = [];
$Bestaetigt = [];
$Moderator = [];
// Endergebnis vorgeschlagen
$query = " $query = "
SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von
FROM #__sportsmanager_begegnung_historie AS t1 FROM #__sportsmanager_begegnung_historie AS t1
LEFT JOIN #__users AS t2 ON t1.user_id = t2.id LEFT JOIN #__users AS t2 ON t1.user_id = t2.id
WHERE begegnung_id = " . $value->ID . " WHERE begegnung_id = " . $value->ID . "
AND aktion IN (5,6,7,8,9) AND aktion IN (6)
ORDER BY eingetragen DESC ORDER BY eingetragen DESC
LIMIT 1; LIMIT 1;
"; ";
$Bestaetigt = loadObjectList($db, $query);
if (!empty($Bestaetigt)) {
$value->vorgeschlagen_um = $Bestaetigt[0]->gespeichert_um;
$value->vorgeschlagen_von = $Bestaetigt[0]->gespeichert_von;
} else {
$value->vorgeschlagen_um = $Bestaetigt[0]->gespeichert_um;
$value->vorgeschlagen_von = $Bestaetigt[0]->gespeichert_von;
}
$letzterEintrag = loadObjectList($db, $query); // Endergebnis bestätigen Gegner
$value->gespeichert_um = $letzterEintrag[0]->gespeichert_um; $query = "
$value->gespeichert_von = $letzterEintrag[0]->gespeichert_von; SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von
FROM #__sportsmanager_begegnung_historie AS t1
LEFT JOIN #__users AS t2 ON t1.user_id = t2.id
WHERE begegnung_id = " . $value->ID . "
AND aktion IN (7)
ORDER BY eingetragen DESC
LIMIT 1;
";
$Bestaetigt = loadObjectList($db, $query);
if (!empty($Bestaetigt)) {
$value->bestaetigt_um = $Bestaetigt[0]->gespeichert_um;
$value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von;
} else {
$value->bestaetigt_um = $Bestaetigt[0]->gespeichert_um;
$value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von;
}
// Endergebnis bestätigen Moderator
$query = "
SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von
FROM #__sportsmanager_begegnung_historie AS t1
LEFT JOIN #__users AS t2 ON t1.user_id = t2.id
WHERE begegnung_id = " . $value->ID . "
AND aktion IN (8)
ORDER BY eingetragen DESC
LIMIT 1;
";
$Moderator = loadObjectList($db, $query);
if (!empty($Moderator)) {
$value->moderator_um = $Moderator[0]->gespeichert_um;
$value->moderator_von = $Moderator[0]->gespeichert_von;
} else {
$value->moderator_um = $Moderator[0]->gespeichert_um;
$value->moderator_von = $Moderator[0]->gespeichert_von;
}
// Spielbericht // Spielbericht
$query = " $query = "
@@ -215,6 +215,9 @@ if ($task == "spielerbild") {
case 'admin_verschieben_modus_remove': case 'admin_verschieben_modus_remove':
adminRemoveVerschiebenModus(); adminRemoveVerschiebenModus();
break; break;
case 'admin_spielverlegungen';
adminSpielverlegungen();
break;
case 'admin_kategorien': case 'admin_kategorien':
adminKategorien(); adminKategorien();
break; break;
@@ -398,6 +401,9 @@ if ($task == "spielerbild") {
case 'admin_ordnungsstrafen_vorlage': case 'admin_ordnungsstrafen_vorlage':
adminEditEmailVorlage('Ordnungsstrafe'); adminEditEmailVorlage('Ordnungsstrafe');
break; break;
case 'admin_spielverlegung_vorlage';
adminEditEmailVorlage('Spielverlegung');
break;
case 'admin_email_vorlage_save': case 'admin_email_vorlage_save':
adminSaveEmailVorlage(); adminSaveEmailVorlage();
break; break;
@@ -4104,7 +4110,13 @@ function spielverlegungen(): void
$filter_status = $jInput->get('filter_status', '', 'RAW'); $filter_status = $jInput->get('filter_status', '', 'RAW');
if (empty($filter_status)) if (empty($filter_status))
$filter_status = "offen,genehmigt,abgelehnt"; $filter_status = "offen,genehmigt";
$query = "SELECT saison_id, saisonbezeichnung"
. "\n FROM #__sportsmanager_saison"
. "\n ORDER BY saisonbezeichnung DESC LIMIT 1";
$saisons = loadObjectList($db, $query);
$filter_saison_id = $saisons[0]->saison_id;
$query = "SELECT" $query = "SELECT"
. "\n t1.begegnung_id, t1.beantragt, t1.Begruendung AS Begruendung_beantragt, t1.Termin_alt," . "\n t1.begegnung_id, t1.beantragt, t1.Begruendung AS Begruendung_beantragt, t1.Termin_alt,"
@@ -4162,7 +4174,8 @@ $query = "SELECT"
. "\n LEFT JOIN #__sportsmanager_team AS t8 ON t8.team_id = t1.team_id" . "\n LEFT JOIN #__sportsmanager_team AS t8 ON t8.team_id = t1.team_id"
// Filter // Filter
. "\n " . kategorieFilter("WHERE t7.kategorie IN") . "\n WHERE t7.saison_id = '$filter_saison_id'"
. "\n " . kategorieFilter("AND t7.kategorie IN")
. "\n HAVING status in ('" . str_replace(",", "','", $filter_status) . "')" . "\n HAVING status in ('" . str_replace(",", "','", $filter_status) . "')"
. "\n ORDER BY t1.beantragt DESC;"; . "\n ORDER BY t1.beantragt DESC;";
@@ -3965,7 +3965,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): 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'); ?>">
<td nowrap style='text-align: center;'> <td nowrap style='text-align: center;'>
<?php echo str_replace(" ", "<br>", $row->Termin_alt); ?> <?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_alt))); ?>
</td> </td>
<td nowrap style='text-align: center;'> <td nowrap style='text-align: center;'>
<?php echo htmlentities_utf8($row->Liga); ?> <?php echo htmlentities_utf8($row->Liga); ?>
@@ -3984,7 +3984,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): void
?> ?>
</td> </td>
<td nowrap style='text-align: center;'> <td nowrap style='text-align: center;'>
<?php echo str_replace(" ", "<br>", $row->Termin_neu); ?> <?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_neu))); ?>
</td> </td>
<td nowrap style='text-align: left;'> <td nowrap style='text-align: left;'>
<?php echo htmlentities_utf8($row->Begruendung_beantragt); ?> <?php echo htmlentities_utf8($row->Begruendung_beantragt); ?>
@@ -191,7 +191,7 @@ class HTML_sportsmanager_admin
if (benutzerZugriff("verschieberegeln_aendern")) { if (benutzerZugriff("verschieberegeln_aendern")) {
?> ?>
<td style="padding-right: 15px" nowrap> <td style="padding-right: 15px" nowrap>
<a href="<?php echo SportsManagerURL('&task=admin_verschieben_modi'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_POSTPONE_RULES'); ?></a> <a href="<?php echo SportsManagerURL('&task=admin_spielverlegungen'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_MATCH_RESCHEDULINGS'); ?></a>
</td> </td>
<?php <?php
$Spalte_Nr = self::checkZeilenumbruch($Spalte_Nr, $max_Spalten); $Spalte_Nr = self::checkZeilenumbruch($Spalte_Nr, $max_Spalten);
@@ -4925,7 +4925,7 @@ class HTML_sportsmanager_admin
<table style="border-spacing: 10px"> <table style="border-spacing: 10px">
<tr> <tr>
<td nowrap><a <td nowrap><a
href="<?php echo SportsManagerURL('&task=admin_uebersicht'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_BACK'); ?></a> href="<?php echo SportsManagerURL('&task=admin_spielverlegungen'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_BACK'); ?></a>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -7237,6 +7237,104 @@ class HTML_sportsmanager_admin
<?php <?php
} }
static function adminSpielverlegungen($rows,$saisons,$filter_saison_id): void
{
global $params;
?>
<style>
td, th {
padding-left: 8px;
}
</style>
<div
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_DISCIPLINARY_FINES'); ?>
: <?php echo Text::_('COM_SPORTSMANAGER_JOOMLA_MANAGEMENT'); ?></div>
<table style="border-spacing: 10px">
<tr>
<td nowrap><a
href="<?php echo SportsManagerURL('&task=admin_uebersicht'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_BACK'); ?></a>
</td>
</tr>
<?php if (benutzerZugriff("benutzerVeranstalterModerator")){ ?>
<tr>
<td nowrap><a
href="<?php echo SportsManagerURL('&task=admin_verschieben_modi'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_POSTPONE_RULES'); ?></a>
</td>
<td nowrap><a
href="<?php echo SportsManagerURL('&task=admin_spielverlegung_vorlage'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_TEMPLATE'); ?></a>
</td>
</tr>
<?php } ?>
</table>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr>
<td nowrap>
<label for="filter_saison_id"><?php echo Text::_('COM_SPORTSMANAGER_SEASON'); ?>:</label>
<select class="uk-form-width-small" name="filter_saison_id" id="filter_saison_id" size="1"
onChange="document.adminForm.submit();">
<?php
foreach ($saisons as $saison)
echo "<option value=\"" . $saison->saison_id . "\" " . ($filter_saison_id == $saison->saison_id ? "selected" : "") . ">" . htmlentities_utf8($saison->saisonbezeichnung) . "</option>";
?>
</select>
</td>
</tr>
</table>
<input type="hidden" name="task" value="admin_spielverlegungen"/>
</form>
<div class="uk-overflow-auto">
<table class="uk-table-shrink contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>" style='width: 900px;'>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap style='text-align: center; width: 120px;'><STRONG><?php echo Text::_('COM_SPORTSMANAGER_OLD_DATE'); ?></STRONG></th>
<th nowrap style='text-align: center; width: 180px;'><STRONG><?php echo Text::_('COM_SPORTSMANAGER_COMPETITION'); ?></STRONG></th>
<th nowrap style='text-align: center; width: 200px;'><STRONG><?php echo Text::_('COM_SPORTSMANAGER_MATCH'); ?></STRONG></th>
<th nowrap style='text-align: center; width: 120px;'><STRONG><?php echo Text::_('COM_SPORTSMANAGER_NEW_DATE'); ?></STRONG></th>
<th nowrap style='text-align: left; width: 280px;'><STRONG><?php echo Text::_('COM_SPORTSMANAGER_COMMENT'); ?></STRONG></th>
</tr>
<?php
if (count($rows) > 0) {
$k = 0;
foreach ($rows as $row) {
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
<td nowrap style='text-align: center;'>
<?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_alt))); ?>
</td>
<td nowrap style='text-align: center;'>
<?php echo htmlentities_utf8($row->Liga); ?>
</td>
<td nowrap style='text-align: center;'>
<?php
if ($row->Heim == $row->beantragt_von)
echo "<u>" . htmlentities_utf8($row->Heim) . "</u>";
else
echo htmlentities_utf8($row->Heim);
echo "<br>";
if ($row->Gast == $row->beantragt_von)
echo "<u>" . htmlentities_utf8($row->Gast) . "</u>";
else
echo htmlentities_utf8($row->Gast);
?>
</td>
<td nowrap style='text-align: center;'>
<?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_neu))); ?>
</td>
<td nowrap style='text-align: left;'>
<?php echo htmlentities_utf8($row->Begruendung_beantragt); ?>
</td>
</tr>
<?php
}
}
?>
</table></div>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
static function adminRegelwerke($rows): void static function adminRegelwerke($rows): void
{ {
global $params; global $params;
@@ -7542,7 +7640,7 @@ class HTML_sportsmanager_admin
<?php <?php
} }
static function adminEditEmailVorlage($vorlage,$row,$vars): void static function adminEditEmailVorlage($vorlage,$row,$vars,$back): void
{ {
global $params; global $params;
?> ?>
@@ -7622,6 +7720,7 @@ class HTML_sportsmanager_admin
<input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"/> <input type="submit" name="save" value="<?php echo Text::_('COM_SPORTSMANAGER_SAVE'); ?>" class="button"/>
<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_email_vorlage_save"/> <input type="hidden" name="task" value="admin_email_vorlage_save"/>
<input type="hidden" name="back" value="<?php echo $back; ?>"/>
</form> </form>
<?php <?php
} }
@@ -1063,3 +1063,4 @@ COM_SPORTSMANAGER_EMAIL_WAS_NOT_SEND="Die E-Mail wurde nicht versendet"
COM_SPORTSMANAGER_OLD_DATE="Alter Termin" COM_SPORTSMANAGER_OLD_DATE="Alter Termin"
COM_SPORTSMANAGER_NEW_DATE="Neuer Termin" COM_SPORTSMANAGER_NEW_DATE="Neuer Termin"
COM_SPORTSMANAGER_REASON_GAME_APPOINTMENT="Verlegungsgrund" COM_SPORTSMANAGER_REASON_GAME_APPOINTMENT="Verlegungsgrund"
COM_SPORTSMANAGER_MATCH_RESCHEDULINGS="Spielverlegungen"
@@ -1063,3 +1063,4 @@ COM_SPORTSMANAGER_EMAIL_WAS_NOT_SEND="E-Mail was not sent"
COM_SPORTSMANAGER_OLD_DATE="Old Date" COM_SPORTSMANAGER_OLD_DATE="Old Date"
COM_SPORTSMANAGER_NEW_DATE="New Date" COM_SPORTSMANAGER_NEW_DATE="New Date"
COM_SPORTSMANAGER_REASON_GAME_APPOINTMENT="Appointment reason" COM_SPORTSMANAGER_REASON_GAME_APPOINTMENT="Appointment reason"
COM_SPORTSMANAGER_MATCH_RESCHEDULINGS="Match rescheduling"