Verschiebereln erweitert. Kategoriefilter optimiert.

This commit is contained in:
Jürgen Meyer
2025-12-25 13:20:54 +01:00
parent 275693ecb3
commit db80f584cd
7 changed files with 490 additions and 387 deletions
@@ -4601,6 +4601,9 @@ function adminEditVerschiebenModus(): void
$termine_minimal = $jInput->get('termine_minimal', 1, 'INT');
$termine_maximal = $jInput->get('termine_maximal', 3, 'INT');
$ablehnen = $jInput->get('ablehnen', 0, 'INT');
$begruendung_erforderlich = $jInput->get('begruendung_erforderlich', 0, 'INT');
$vereine_berechtigt = $jInput->get('vereine_berechtigt', 0, 'INT');
$verband_berechtigt = $jInput->get('verband_berechtigt', 0, 'INT');
if ($termine_minimal > 0 && $termine_maximal > 0 && $termine_minimal > $termine_maximal) {
$t = $termine_minimal;
@@ -4609,7 +4612,11 @@ function adminEditVerschiebenModus(): void
}
if ($id == 0)
$query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen) VALUES ('$bezeichnung', '$initial_ohne_termin', '$keine_gegenvorschlaege', '$vorlaufzeit_tage', '$termine_minimal', '$termine_maximal', '$ablehnen');";
$query = "INSERT INTO #__sportsmanager_verschieberegel"
. "\n (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal,"
. "\n termine_maximal, ablehnen, begruendung_erforderlich, vereine_berechtigt, verband_berechtigt)"
. "\n VALUES ('$bezeichnung', '$initial_ohne_termin', '$keine_gegenvorschlaege', '$vorlaufzeit_tage', '$termine_minimal',"
. "\n '$termine_maximal', '$ablehnen', '$begruendung_erforderlich', '$vereine_berechtigt', '$verband_berechtigt');";
else {
$query = "UPDATE #__sportsmanager_verschieberegel"
. "\n SET bezeichnung = '$bezeichnung',"
@@ -4618,7 +4625,10 @@ function adminEditVerschiebenModus(): void
. "\n vorlaufzeit_tage = '$vorlaufzeit_tage',"
. "\n termine_minimal = '$termine_minimal',"
. "\n termine_maximal = '$termine_maximal',"
. "\n ablehnen = '$ablehnen'"
. "\n ablehnen = '$ablehnen',"
. "\n begruendung_erforderlich = '$begruendung_erforderlich',"
. "\n vereine_berechtigt = '$vereine_berechtigt',"
. "\n verband_berechtigt = '$verband_berechtigt'"
. "\n WHERE verschieberegel_id = $id";
}
$db->setQuery($query);
@@ -5516,6 +5516,27 @@ 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));
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '115'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($termin_aktionen_email_setzen) {
$query = "SELECT aktion_user_id, termin_aktion_id"
. "\n FROM #__sportsmanager_termin_aktion";
@@ -185,17 +185,45 @@ function individualwettbewerbFilter($prefix): string
function kategorieFilter($prefix, $suffix = ""): string
{
global $params;
$kategorien = explode(",", $params->get('kategorien'));
$filter = "";
foreach ($kategorien as $s) {
$kategorie = intval(trim($s));
if ($kategorie == 0)
continue;
if (!empty($filter))
$filter .= ", ";
$filter .= $kategorie;
$result = [];
foreach ($kategorien as $item) {
$item = trim($item);
if ($item === '') continue;
// Prüfen, ob es ein Bereich ist
if (strpos($item, '-') !== false) {
$rangeParts = explode('-', $item);
// genau 2 Teile für einen gültigen Bereich
if (count($rangeParts) !== 2) continue;
$start = intval(trim($rangeParts[0]));
$end = intval(trim($rangeParts[1]));
if ($start <= 0 || $end <= 0 || $start > $end) continue;
for ($i = $start; $i <= $end; $i++) {
$result[$i] = true; // Duplikate vermeiden
}
return empty($filter) ? "" : (" " . $prefix . " (" . $filter . ") " . $suffix);
} else {
$num = intval($item);
if ($num > 0) {
$result[$num] = true;
}
}
}
if (empty($result)) {
return "";
}
$filter = array_keys($result);
sort($filter, SORT_NUMERIC);
return " $prefix (" . implode(", ", $filter) . ") $suffix";
}
function turnierFilter($prefix): string
@@ -5122,11 +5122,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%">
<tr>
<td nowrap style="width: 60%; vertical-align: top">
<div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%">
<table style="width: 100%">
<tr>
<td nowrap style="width: 20%; text-align: right">
<?php echo Text::_('COM_SPORTSMANAGER_ORIGINALY_SCHEDULED'); ?>:
@@ -5218,7 +5214,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
</script>
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_DAY') . ' ' . $termin ?>"
class="uk-select uk-form-width-medium"
class="uk-select uk-form-width-small"
name="datum_tag_<?php echo $termin; ?>" size="1"
onChange="termin_changed_<?php echo $termin; ?>();">
<?php
@@ -5234,7 +5230,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
</select>
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MONTH') . ' ' . $termin ?>"
class="uk-select uk-form-width-medium"
class="uk-select uk-form-width-small"
name="datum_monat_<?php echo $termin; ?>" size="1"
onChange="termin_changed_<?php echo $termin; ?>();">
<?php
@@ -5248,7 +5244,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
</select>
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_YEAR') . ' ' . $termin ?>"
class="uk-select uk-form-width-medium"
class="uk-select uk-form-width-small"
name="datum_jahr_<?php echo $termin; ?>" size="1"
onChange="termin_changed_<?php echo $termin; ?>();">
<?php
@@ -5261,7 +5257,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
</select>
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_HOUR') . ' ' . $termin ?>"
class="uk-select uk-form-width-medium"
class="uk-select uk-form-width-small"
name="uhrzeit_stunden_<?php echo $termin; ?>" size="1"
onChange="termin_changed_<?php echo $termin; ?>();">
<?php
@@ -5276,7 +5272,7 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
</select>
<select
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MINUTE') . ' ' . $termin ?>"
class="uk-select uk-form-width-medium"
class="uk-select uk-form-width-small"
name="uhrzeit_minuten_<?php echo $termin; ?>" size="1"
onChange="termin_changed_<?php echo $termin; ?>();">
<?php
@@ -5367,10 +5363,6 @@ function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $
?>
</table>
</div>
</td>
</tr>
</table>
</div>
<?php
if ($berechtigt_anfordern) {
@@ -4978,11 +4978,7 @@ class HTML_sportsmanager_admin
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%">
<tr>
<td nowrap style="width: 60%; vertical-align: top">
<div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%">
<table style="width: 100%">
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
@@ -5103,12 +5099,62 @@ class HTML_sportsmanager_admin
</td>
</tr>
<tr>
<td nowrap colspan="2">&nbsp;
<td nowrap style="width: 20%; text-align: right">
<label
for="reason_required"><?php echo Text::_('COM_SPORTSMANAGER_REASON_REQUIRED'); ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="begruendung_erforderlich"
id="reason_required" size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_NO'), Text::_('COM_SPORTSMANAGER_YES'));
for ($i = 0; $i <= 1; $i++) {
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->begruendung_erforderlich == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
}
?>
</select>
</td>
</tr>
</table>
</div>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
for="club_entitlement"><?php echo Text::_('COM_SPORTSMANAGER_CLUB_ENTITLEMENT'); ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="vereine_berechtigt"
id="club_entitlement" size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_NO'), Text::_('COM_SPORTSMANAGER_YES'));
for ($i = 0; $i <= 1; $i++) {
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->vereine_berechtigt == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td nowrap style="width: 20%; text-align: right">
<label
for="association_entitlement"><?php echo Text::_('COM_SPORTSMANAGER_ASSOCIATION_ENTITLEMENT'); ?>
:</label>
</td>
<td nowrap>
<select class="uk-select uk-form-width-medium" name="verband_berechtigt"
id="association_entitlement" size="1">
<?php
$typ = array(Text::_('COM_SPORTSMANAGER_NO'), Text::_('COM_SPORTSMANAGER_YES'));
for ($i = 0; $i <= 1; $i++) {
echo "<option value=\"" . $i . "\"" . ($row != null ? ($row->verband_berechtigt == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($typ[$i]) . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td nowrap colspan="2">&nbsp;
</td>
</tr>
</table>
@@ -886,6 +886,9 @@ COM_SPORTSMANAGER_INITIAL_APPOINTMENT_SUGGESTIONS="Initiale Terminvorschl&auml;g
COM_SPORTSMANAGER_REQUESTING_TEAM="Beantragende Mannschaft"
COM_SPORTSMANAGER_OPPONENT_TEAM="Gegnerische Mannschaft"
COM_SPORTSMANAGER_AGAINST_PROPOSALS_ALLOWED="Gegensvorschl&auml;ge zul&auml;ssig"
COM_SPORTSMANAGER_REASON_REQUIRED="Begr&uuml;ndung erforderlich"
COM_SPORTSMANAGER_CLUB_ENTITLEMENT="Berechtigung Vereine"
COM_SPORTSMANAGER_ASSOCIATION_ENTITLEMENT="Berechtigung Verband"
COM_SPORTSMANAGER_LEAD_TIME="Vorlaufzeit"
COM_SPORTSMANAGER_APPOINTMENT_PROPOSALS_MINIMAL="Terminvorschl&auml;ge minimal"
COM_SPORTSMANAGER_APPOINTMENT_PROPOSALS_MAXIMUM="Terminvorschl&auml;ge maximal"
@@ -886,6 +886,9 @@ COM_SPORTSMANAGER_INITIAL_APPOINTMENT_SUGGESTIONS="Initial appointment suggestio
COM_SPORTSMANAGER_REQUESTING_TEAM="Requesting team"
COM_SPORTSMANAGER_OPPONENT_TEAM="Opponent team"
COM_SPORTSMANAGER_AGAINST_PROPOSALS_ALLOWED="Against proposals allowed"
COM_SPORTSMANAGER_REASON_REQUIRED="Reason required"
COM_SPORTSMANAGER_CLUB_ENTITLEMENT="Club entitlement"
COM_SPORTSMANAGER_ASSOCIATION_ENTITLEMENT="Association_entitlement"
COM_SPORTSMANAGER_LEAD_TIME="Lead time"
COM_SPORTSMANAGER_APPOINTMENT_PROPOSALS_MINIMAL="Appointment proposals minimal"
COM_SPORTSMANAGER_APPOINTMENT_PROPOSALS_MAXIMUM="Appointment proposals maximum"