mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
Abfragen optimiert
This commit is contained in:
@@ -4566,69 +4566,79 @@ function adminSpielverlegungen(): void
|
||||
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;";
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id,"
|
||||
. "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt,"
|
||||
. "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga,"
|
||||
. "\n t3.teamname AS Heim, t4.teamname AS Gast, t6.teamname AS beantragt_von, 'offen' AS status"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t3.team_id = t2.heim_team_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t4 ON t4.team_id = t2.gast_team_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t5.veranstaltung_id = t4.veranstaltung_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t1.team_id"
|
||||
. "\n WHERE t1.aktion = 2"
|
||||
. "\n AND t5.saison_id = '$filter_saison_id'"
|
||||
. "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;";
|
||||
$spielverlegungen = loadObjectList($db, $query);
|
||||
|
||||
$last_id = "";
|
||||
foreach ($spielverlegungen as $key => $spielverlegung) {
|
||||
if ($spielverlegung->begegnung_id == $last_id) {
|
||||
unset($spielverlegungen[$key]);
|
||||
} else {
|
||||
$last_id = $spielverlegung->begegnung_id;
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt,"
|
||||
. "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id"
|
||||
. "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;";
|
||||
|
||||
$genehmigt = loadObjectList($db, $query);
|
||||
|
||||
if (!empty($genehmigt)) {
|
||||
$spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id;
|
||||
$spielverlegung->genehmigt = $genehmigt[0]->genehmigt;
|
||||
$spielverlegung->Termin_neu = $genehmigt[0]->Termin_neu;
|
||||
$spielverlegung->genehmigt_von = $genehmigt[0]->genehmigt_von;
|
||||
$spielverlegung->genehmigt_verein = $genehmigt[0]->genehmigt_verein;
|
||||
$spielverlegung->status = "genehmigt";
|
||||
} else {
|
||||
$spielverlegung->genehmigt_id = "";
|
||||
$spielverlegung->genehmigt = "";
|
||||
$spielverlegung->Termin_neu = "";
|
||||
$spielverlegung->genehmigt_von = "";
|
||||
$spielverlegung->genehmigt_verein = "";
|
||||
}
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS abgelehnt_id, t1.eingetragen AS abgelehnt,"
|
||||
. "\n t1.user_id AS abgelehnt_von, t1.team_id as abgelehnt_verein,"
|
||||
. "\n t1.kommentar AS Begruendung_abgelehnt"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id"
|
||||
. "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;";
|
||||
|
||||
$abgelehnt = loadObjectList($db, $query);
|
||||
|
||||
if (!empty($abgelehnt)) {
|
||||
$spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id;
|
||||
$spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt;
|
||||
$spielverlegung->abgelehnt_von = $abgelehnt[0]->abgelehnt_von;
|
||||
$spielverlegung->abgelehnt_verein = $abgelehnt[0]->abgelehnt_verein;
|
||||
$spielverlegung->Begruendung_abgelehnt = $abgelehnt[0]->Begruendung_abgelehnt;
|
||||
$spielverlegung->status = "abgelehnt";
|
||||
} else {
|
||||
$spielverlegung->abgelehnt_id = "";
|
||||
$spielverlegung->abgelehnt = "";
|
||||
$spielverlegung->abgelehnt_von = "";
|
||||
$spielverlegung->abgelehnt_verein = "";
|
||||
$spielverlegung->Begruendung_abgelehnt = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HTML_sportsmanager_admin::adminSpielverlegungen($spielverlegungen,$saisons,$filter_saison_id);
|
||||
}
|
||||
|
||||
|
||||
@@ -4118,69 +4118,82 @@ function spielverlegungen(): void
|
||||
$saisons = loadObjectList($db, $query);
|
||||
$filter_saison_id = $saisons[0]->saison_id;
|
||||
|
||||
$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;";
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id,"
|
||||
. "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt,"
|
||||
. "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga,"
|
||||
. "\n t3.teamname AS Heim, t4.teamname AS Gast, t6.teamname AS beantragt_von, 'offen' AS status"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t3.team_id = t2.heim_team_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t4 ON t4.team_id = t2.gast_team_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t5.veranstaltung_id = t4.veranstaltung_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t1.team_id"
|
||||
. "\n WHERE t1.aktion = 2"
|
||||
. "\n AND t5.saison_id = '$filter_saison_id'"
|
||||
. kategorieFilter("AND t5.kategorie IN")
|
||||
. "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;";
|
||||
$spielverlegungen = loadObjectList($db, $query);
|
||||
|
||||
$last_id = "";
|
||||
foreach ($spielverlegungen as $key => $spielverlegung) {
|
||||
if ($spielverlegung->begegnung_id == $last_id) {
|
||||
unset($spielverlegungen[$key]);
|
||||
} else {
|
||||
$last_id = $spielverlegung->begegnung_id;
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt,"
|
||||
. "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id"
|
||||
. "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;";
|
||||
|
||||
$genehmigt = loadObjectList($db, $query);
|
||||
|
||||
if (!empty($genehmigt)) {
|
||||
$spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id;
|
||||
$spielverlegung->genehmigt = $genehmigt[0]->genehmigt;
|
||||
$spielverlegung->Termin_neu = $genehmigt[0]->Termin_neu;
|
||||
$spielverlegung->genehmigt_von = $genehmigt[0]->genehmigt_von;
|
||||
$spielverlegung->genehmigt_verein = $genehmigt[0]->genehmigt_verein;
|
||||
$spielverlegung->status = "genehmigt";
|
||||
} else {
|
||||
$spielverlegung->genehmigt_id = "";
|
||||
$spielverlegung->genehmigt = "";
|
||||
$spielverlegung->Termin_neu = "";
|
||||
$spielverlegung->genehmigt_von = "";
|
||||
$spielverlegung->genehmigt_verein = "";
|
||||
}
|
||||
|
||||
$query = "SELECT t1.begegnung_historie_id AS abgelehnt_id, t1.eingetragen AS abgelehnt,"
|
||||
. "\n t1.user_id AS abgelehnt_von, t1.team_id as abgelehnt_verein,"
|
||||
. "\n t1.kommentar AS Begruendung_abgelehnt"
|
||||
. "\n FROM #__sportsmanager_begegnung_historie AS t1"
|
||||
. "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id"
|
||||
. "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id"
|
||||
. "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;";
|
||||
|
||||
$abgelehnt = loadObjectList($db, $query);
|
||||
|
||||
if (!empty($abgelehnt)) {
|
||||
$spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id;
|
||||
$spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt;
|
||||
$spielverlegung->abgelehnt_von = $abgelehnt[0]->abgelehnt_von;
|
||||
$spielverlegung->abgelehnt_verein = $abgelehnt[0]->abgelehnt_verein;
|
||||
$spielverlegung->Begruendung_abgelehnt = $abgelehnt[0]->Begruendung_abgelehnt;
|
||||
$spielverlegung->status = "abgelehnt";
|
||||
} else {
|
||||
$spielverlegung->abgelehnt_id = "";
|
||||
$spielverlegung->abgelehnt = "";
|
||||
$spielverlegung->abgelehnt_von = "";
|
||||
$spielverlegung->abgelehnt_verein = "";
|
||||
$spielverlegung->Begruendung_abgelehnt = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$spielverlegungen = array_values($spielverlegungen);
|
||||
|
||||
if (isJson()) {
|
||||
echo json_encode($spielverlegungen);
|
||||
} else {
|
||||
|
||||
@@ -3984,7 +3984,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): void
|
||||
?>
|
||||
</td>
|
||||
<td nowrap style='text-align: center;'>
|
||||
<?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_neu))); ?>
|
||||
<?php echo $row->Termin_neu == "" ? "" : 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); ?>
|
||||
|
||||
@@ -7320,7 +7320,7 @@ class HTML_sportsmanager_admin
|
||||
?>
|
||||
</td>
|
||||
<td nowrap style='text-align: center;'>
|
||||
<?php echo str_replace(" ", "<br>", date('d.m.Y h:i', strtotime($row->Termin_neu))); ?>
|
||||
<?php echo $row->Termin_neu == "" ? "" : 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); ?>
|
||||
|
||||
Reference in New Issue
Block a user