mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
16574 lines
808 KiB
PHP
16574 lines
808 KiB
PHP
<?php
|
|
/*
|
|
* Sports Manager (C) 2006-2020, Sven Nickel
|
|
*/
|
|
|
|
// kein direkter Zugriff
|
|
use JetBrains\PhpStorm\NoReturn;
|
|
use Joomla\Archive\Zip;
|
|
use Joomla\CMS\Application\SiteApplication;
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Log\Log;
|
|
use Joomla\CMS\Mail\MailerFactoryInterface;
|
|
use Joomla\Filesystem\File;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\Filesystem\Folder;
|
|
|
|
defined('_JEXEC') or die('Restricted access');
|
|
require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php';
|
|
require_once JPATH_SITE . '/components/com_sportsmanager/database/init.php';
|
|
|
|
function UhrzeitWandlerDE(string $input): string {
|
|
// mögliche Datumsformate
|
|
$formats = [
|
|
'Y-m-d H:i',
|
|
'd.m.Y H:i',
|
|
'd.m.Y H:i:s',
|
|
];
|
|
|
|
foreach ($formats as $format) {
|
|
$dt = DateTime::createFromFormat($format, $input);
|
|
|
|
// prüfen, ob Parsing erfolgreich war UND das Datum exakt passt
|
|
if ($dt && $dt->format($format) === $input) {
|
|
return $dt->format('Y-m-d H:i:s');
|
|
}
|
|
}
|
|
|
|
// falls kein bekanntes Format -> Original zurückgeben
|
|
return $input;
|
|
}
|
|
|
|
function validateDate($date, $format = 'Y-m-d H:i:s'): bool
|
|
{
|
|
$d = DateTime::createFromFormat($format, $date);
|
|
return $d && $d->format($format) == $date;
|
|
}
|
|
|
|
function detectFileEncoding(string $filename): string {
|
|
$handle = fopen($filename, "r");
|
|
if (!$handle) {
|
|
throw new Exception("Datei konnte nicht geöffnet werden: $filename");
|
|
}
|
|
|
|
// Erstes Stück der Datei lesen (nicht alles, reicht für Erkennung)
|
|
$sample = fread($handle, 1000);
|
|
fclose($handle);
|
|
|
|
// Encoding bestimmen
|
|
$encoding = mb_detect_encoding($sample, ['UTF-8', 'ISO-8859-1', 'Windows-1252'], true);
|
|
|
|
return $encoding ?: 'UTF-8'; // Fallback auf UTF-8
|
|
}
|
|
|
|
function adminUebersicht(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator())
|
|
keinZugriff(true);
|
|
|
|
$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 (count($saisons) != 0) {
|
|
$gefunden = false;
|
|
foreach ($saisons as $saison) {
|
|
if ($saison->saison_id == $filter_saison_id) {
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$gefunden)
|
|
$filter_saison_id = $saisons[0]->saison_id;
|
|
}
|
|
|
|
$beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_veranstaltungen) {
|
|
$query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen"
|
|
. "\n FROM #__sportsmanager_veranstaltung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id"
|
|
. "\n WHERE " . veranstaltungFilter("t1.veranstaltung_id IN")
|
|
. ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie";
|
|
} else {
|
|
$query = "SELECT t1.*, t2.veranstalterbezeichnung, t2.veranstalterkuerzel,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_team AS tt1 WHERE tt1.veranstaltung_id = t1.veranstaltung_id) AS teams,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_team AS tt2 ON tt1.heim_team_id = tt2.team_id WHERE tt2.veranstaltung_id = t1.veranstaltung_id) AS begegnungen"
|
|
. "\n FROM #__sportsmanager_veranstaltung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 ON t1.veranstalter_id = t2.veranstalter_id"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie";
|
|
}
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) + (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb AS t2 WHERE t1.bestenliste_id = t2.bestenliste_id) AS veranstaltungen"
|
|
. "\n FROM #__sportsmanager_bestenliste AS t1"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie";
|
|
$spielerstatistiken = loadObjectList($db, $query);
|
|
$beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_turniere) {
|
|
$query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl"
|
|
. "\n FROM #__sportsmanager_turnier"
|
|
. "\n LEFT JOIN (SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin USING (turnier_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE " . turnierFilter("#__sportsmanager_turnier.turnier_id IN")
|
|
. ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
|
|
. "\n GROUP BY turnier_id"
|
|
. "\n ORDER BY erster_tag DESC, turnierbezeichnung";
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_turnier.*, veranstalterbezeichnung, veranstalterkuerzel, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen, COUNT(turnierdisziplin_id) AS disziplinen_anzahl, COALESCE(SUM(meldung_vorhanden), 0) AS disziplinen_mit_meldung_anzahl"
|
|
. "\n FROM #__sportsmanager_turnier"
|
|
. "\n LEFT JOIN (SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel, IF(EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id), 1, 0) AS meldung_vorhanden FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin USING (turnier_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n GROUP BY turnier_id"
|
|
. "\n ORDER BY erster_tag DESC, turnierbezeichnung";
|
|
}
|
|
$turniere = loadObjectList($db, $query);
|
|
$beschraenkter_zugriff_individualwettbewerbe = benutzerZugriff("individualwettbewerbe_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_individualwettbewerbe) {
|
|
$query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE " . individualwettbewerbFilter("individualwettbewerb_id IN")
|
|
. ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY reihenfolge, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_individualwettbewerb.*, veranstalterbezeichnung, veranstalterkuerzel,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id) AS spiele"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY reihenfolge, bezeichnung, kategorie";
|
|
}
|
|
$individualwettbewerbe = loadObjectList($db, $query);
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin AS t2 WHERE t1.rangliste_id = t2.rangliste_id) AS turnierdisziplinen"
|
|
. "\n FROM #__sportsmanager_rangliste AS t1"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, t1.bezeichnung, t1.kategorie";
|
|
$ranglisten = loadObjectList($db, $query);
|
|
$statistik = array();
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_saison), 1, 0)";
|
|
$statistik["saisons"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel_modus), 1, 0)";
|
|
$statistik["teamspielmodi"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstalter), 1, 0)";
|
|
$statistik["veranstalter"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_system), 1, 0)";
|
|
$statistik["ranglistensysteme"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin), 1, 0)";
|
|
$statistik["turnierdisziplinen"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb), 1, 0)";
|
|
$statistik["individualwettbewerbe"] = loadResult($db, $query);
|
|
|
|
HTML_sportsmanager_admin::adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, isExternalDatabase());
|
|
}
|
|
|
|
function adminVerteiler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verteiler_aendern") && !benutzerZugriff("verteiler_lesen"))
|
|
keinZugriff(true);
|
|
|
|
$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 (count($saisons) != 0) {
|
|
$gefunden = false;
|
|
foreach ($saisons as $saison) {
|
|
if ($saison->saison_id == $filter_saison_id) {
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$gefunden)
|
|
$filter_saison_id = $saisons[0]->saison_id;
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_verteiler"
|
|
. "\n ORDER BY bezeichnung";
|
|
$verteiler = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$organisationen = loadObjectList($db, $query);
|
|
$organisationen_mailverteiler = array();
|
|
foreach ($organisationen as $organisation) {
|
|
$query = "SELECT vorname, nachname, email"
|
|
. "\n FROM #__sportsmanager_vereinsansprechpartner"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n WHERE " . ($organisation->veranstalter_id != null ? "veranstalter_id = $organisation->veranstalter_id" : "ISNULL(veranstalter_id)")
|
|
. " AND NOT ausgetreten AND email != ''"
|
|
. "\n ORDER BY vorname, nachname, email";
|
|
$rows = loadObjectList($db, $query);
|
|
$organisationen_mailverteiler[$organisation->veranstalter_id] = "";
|
|
$organisationen_mailverteiler[$organisation->veranstalter_id . "p"] = "";
|
|
foreach ($rows as $row) {
|
|
$organisationen_mailverteiler[$organisation->veranstalter_id] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id]) ? "; " : "") . $row->email;
|
|
$organisationen_mailverteiler[$organisation->veranstalter_id . "p"] .= (!empty($organisationen_mailverteiler[$organisation->veranstalter_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">";
|
|
}
|
|
}
|
|
|
|
$query = "SELECT t1.*, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_veranstaltung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. ($filter_saison_id != 0 ? "\n WHERE saison_id = $filter_saison_id" : "")
|
|
. "\n ORDER BY t1.reihenfolge, t1.letzter_tag DESC, bezeichnung, t1.kategorie";
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
$veranstaltungen_mailverteiler = array();
|
|
foreach ($veranstaltungen as $veranstaltung) {
|
|
$query = "SELECT vorname, nachname, email"
|
|
. "\n FROM #__sportsmanager_teamansprechpartner, #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND #__sportsmanager_teamansprechpartner.team_id = #__sportsmanager_team.team_id AND email != ''"
|
|
. "\n ORDER BY vorname, nachname, email";
|
|
$rows = loadObjectList($db, $query);
|
|
$veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] = "";
|
|
$veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] = "";
|
|
foreach ($rows as $row) {
|
|
$veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id]) ? "; " : "") . $row->email;
|
|
$veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"] .= (!empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"]) ? "; " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">";
|
|
}
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, benutzerZugriff("verteiler_aendern"));
|
|
}
|
|
|
|
function adminEditVerteiler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verteiler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == null)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_verteiler WHERE verteiler_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditVerteiler($row);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVerteiler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verteiler_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_verteiler');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$verteiler = $db->escape(trim($jInput->get('verteiler', '', 'RAW')));
|
|
if ($id == 0)
|
|
$query = "INSERT INTO #__sportsmanager_verteiler (bezeichnung, verteiler) VALUES ('$bezeichnung', '$verteiler');";
|
|
else {
|
|
$query = "UPDATE #__sportsmanager_verteiler"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n verteiler = '$verteiler'"
|
|
. "\n WHERE verteiler_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
redirectSportsManagerURL('&task=admin_verteiler');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVerteiler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verteiler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_verteiler WHERE verteiler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_verteiler');
|
|
}
|
|
|
|
function adminRechnungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("rechnungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$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 (count($saisons) == 0)
|
|
die("Wrong id!");
|
|
|
|
$gefunden = false;
|
|
$filter_saison = null;
|
|
foreach ($saisons as $saison) {
|
|
if ($saison->saison_id == $filter_saison_id) {
|
|
$filter_saison = $saison;
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$gefunden) {
|
|
$filter_saison_id = $saisons[0]->saison_id;
|
|
$filter_saison = $saisons[0];
|
|
}
|
|
|
|
$query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung,"
|
|
. " (SELECT COUNT(*) FROM #__sportsmanager_rechnung_spieler WHERE #__sportsmanager_rechnung_spieler.rechnung_id = #__sportsmanager_rechnung.rechnung_id) AS mitglieder"
|
|
. "\n FROM #__sportsmanager_rechnung"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
|
|
. "\n WHERE saison_id = $filter_saison_id"
|
|
. "\n ORDER BY bezeichnung, zuordnungbezeichnung, notiz";
|
|
$rechnungen = loadObjectList($db, $query);
|
|
$query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung,"
|
|
. " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0,"
|
|
. "\n (SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_veranstalter AS va1"
|
|
. "\n LEFT JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)"
|
|
. "\n WHERE va1.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))"
|
|
. "),"
|
|
. "\n (SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_verein AS ve1"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)"
|
|
. "\n WHERE ve1.verein_id = #__sportsmanager_verein.verein_id AND NOT ve1.ausgetreten AND NOT mve1.ausgetreten AND mve1.spieler_id NOT IN (SELECT DISTINCT spieler_id FROM #__sportsmanager_rechnung AS re1 INNER JOIN #__sportsmanager_rechnung_spieler AS res1 ON re1.rechnung_id = res1.rechnung_id WHERE saison_id = $filter_saison_id))"
|
|
. ") AS neuzugaenge"
|
|
. "\n FROM #__sportsmanager_rechnung"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
|
|
. "\n WHERE saison_id = $filter_saison_id"
|
|
. "\n HAVING neuzugaenge > 0"
|
|
. "\n ORDER BY zuordnungbezeichnung";
|
|
$neuzugaenge = loadObjectList($db, $query);
|
|
$query = "SELECT DISTINCT IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalter_id, #__sportsmanager_verein.verein_id) AS zuordnung_id, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung,"
|
|
. " IF(ISNULL(#__sportsmanager_verein.verein_id), IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 0,"
|
|
. "\n (SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_veranstalter AS va1"
|
|
. "\n INNER JOIN #__sportsmanager_verein AS ve1 USING (veranstalter_id)"
|
|
. "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)"
|
|
. "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)"
|
|
. "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)"
|
|
. "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id)"
|
|
. "),"
|
|
. "\n (SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_verein AS ve1"
|
|
. "\n INNER JOIN #__sportsmanager_mitglied_von_verein AS mve1 USING (verein_id)"
|
|
. "\n INNER JOIN #__sportsmanager_rechnung_spieler USING (spieler_id)"
|
|
. "\n INNER JOIN #__sportsmanager_rechnung USING (rechnung_id)"
|
|
. "\n WHERE #__sportsmanager_rechnung.saison_id = $filter_saison_id AND #__sportsmanager_rechnung.verein_id = #__sportsmanager_verein.verein_id)"
|
|
. ") AS mitglieder"
|
|
. "\n FROM #__sportsmanager_rechnung"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
|
|
. "\n WHERE saison_id = $filter_saison_id"
|
|
. "\n ORDER BY zuordnungbezeichnung";
|
|
$aufsummierung = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminRechnungen($rechnungen, $neuzugaenge, $aufsummierung, $filter_saison);
|
|
}
|
|
|
|
function adminEditRechnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("rechnungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == null)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT #__sportsmanager_rechnung.*, IF(ISNULL(#__sportsmanager_verein.verein_id), #__sportsmanager_veranstalter.veranstalterbezeichnung, #__sportsmanager_verein.vereinsname) AS zuordnungbezeichnung"
|
|
. "\n FROM #__sportsmanager_rechnung"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter ON #__sportsmanager_rechnung.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id"
|
|
. "\n WHERE rechnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
$query = "SELECT #__sportsmanager_verein.verein_id, #__sportsmanager_verein.veranstalter_id, vereinsname, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE NOT ausgetreten"
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditRechnung($row, $veranstalter, $vereine);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveRechnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("rechnungen_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_rechnungen');
|
|
}
|
|
|
|
$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 (count($saisons) != 0) {
|
|
$gefunden = false;
|
|
foreach ($saisons as $saison) {
|
|
if ($saison->saison_id == $filter_saison_id) {
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$gefunden)
|
|
$filter_saison_id = $saisons[0]->saison_id;
|
|
}
|
|
|
|
if ($filter_saison_id == 0)
|
|
die ("Wrong id");
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$notiz = $db->escape(trim($jInput->get('notiz', '', 'RAW')));
|
|
$veranstalterId = $db->escape($jInput->get('veranstalterid', 0, 'RAW'));
|
|
$mitgliedsstatus = $jInput->get('mitgliedsstatus', 0, 'INT');
|
|
$wertungskategorie = $jInput->get('wertungskategorie', 0, 'INT');
|
|
if ($id == 0) {
|
|
$filter_mitgliedsstatus = "";
|
|
for ($i = 1; $i <= 3; $i++) {
|
|
if (pow(2, $i) & $mitgliedsstatus) {
|
|
if (!empty($filter_mitgliedsstatus))
|
|
$filter_mitgliedsstatus .= " OR ";
|
|
$filter_mitgliedsstatus .= "mitgliedsstatus = " . $i;
|
|
}
|
|
}
|
|
if (!empty($filter_mitgliedsstatus))
|
|
$filter_mitgliedsstatus = " AND (" . $filter_mitgliedsstatus . ")";
|
|
$filter_kategorie = "";
|
|
if ($wertungskategorie != 15) {
|
|
$kategorien = array();
|
|
foreach (array(1 => "H", 2 => "D", 4 => "J", 8 => "S") as $b => $wert) {
|
|
if ($b & $wertungskategorie)
|
|
$kategorien[] = "\"" . $wert . "\"";
|
|
}
|
|
$jahr = date("Y");
|
|
if (!empty($kategorien))
|
|
$filter_kategorie = " AND IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) IN (" . implode(", ", $kategorien) . ")";
|
|
else
|
|
$filter_kategorie = " AND FALSE";
|
|
}
|
|
if (strlen($veranstalterId) > 1 && $veranstalterId[0] == "v") {
|
|
$verein_id = substr($veranstalterId, 1);
|
|
$query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus', '$wertungskategorie');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)"
|
|
. "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if (strlen($veranstalterId) > 1 && $veranstalterId[0] == "a") {
|
|
$veranstalter_id = substr($veranstalterId, 1);
|
|
$query = "SELECT verein_id, (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE veranstalter_id = $veranstalter_id AND not ausgetreten"
|
|
. "\n ORDER BY mitglieder, vereinsname";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
foreach ($veranstalter as $row) {
|
|
$verein_id = $row->verein_id;
|
|
$query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus', '$wertungskategorie');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)"
|
|
. "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_id" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else if ($veranstalterId == "0") {
|
|
$query = "SELECT veranstalter_id, (SELECT COUNT(*) FROM #__sportsmanager_verein LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY mitglieder, veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
foreach ($veranstalter as $row) {
|
|
$veranstalterId = $row->veranstalter_id;
|
|
$query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterId', '$mitgliedsstatus', '$wertungskategorie');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)"
|
|
. "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterId AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
$query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus, wertungskategorie) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterId', '$mitgliedsstatus', '$wertungskategorie');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
$query = "INSERT INTO #__sportsmanager_rechnung_spieler (spieler_id, rechnung_id)"
|
|
. "\n SELECT DISTINCT #__sportsmanager_mitglied_von_verein.spieler_id, '$id'"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (veranstalter_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE #__sportsmanager_veranstalter.veranstalter_id = $veranstalterId AND NOT #__sportsmanager_verein.ausgetreten" . $filter_mitgliedsstatus . $filter_kategorie . " AND spieler_id NOT IN (SELECT DISTINCT #__sportsmanager_rechnung_spieler.spieler_id FROM #__sportsmanager_rechnung INNER JOIN #__sportsmanager_rechnung_spieler ON #__sportsmanager_rechnung.rechnung_id = #__sportsmanager_rechnung_spieler.rechnung_id WHERE saison_id = $filter_saison_id)";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_rechnung"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n notiz = '$notiz'"
|
|
. "\n WHERE rechnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_rechnungen');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveRechnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("rechnungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rechnung_spieler WHERE rechnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rechnung WHERE rechnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_rechnungen');
|
|
}
|
|
|
|
function adminEinstellungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("basiseinstellungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_einstellungen";
|
|
$rows = loadObjectList($db, $query);
|
|
$einstellungen = array();
|
|
foreach ($rows as $row)
|
|
$einstellungen[$row->name] = $row->wert;
|
|
|
|
HTML_sportsmanager_admin::adminEinstellungen($einstellungen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveEinstellungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("basiseinstellungen_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$basis_spielernr = $db->escape(trim($jInput->get('basis_spielernr', '', 'RAW')));
|
|
$ansprechpartner_ausblenden = $jInput->get('ansprechpartner_ausblenden', 0, 'INT');
|
|
$ansprechpartner_spielerdaten = $jInput->get('ansprechpartner_spielerdaten', 0, 'INT');
|
|
$ansprechpartner_importieren = $jInput->get('ansprechpartner_importieren', 0, 'INT');
|
|
$ansprechpartner_exportieren = $jInput->get('ansprechpartner_exportieren', 0, 'INT');
|
|
$spielerliste_elo = $jInput->get('spielerliste_elo', 0, 'INT');
|
|
$lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT');
|
|
$anzahl_mitglieder_zeigen = $jInput->get('anzahl_mitglieder_zeigen', 0, 'INT');
|
|
$verband_anzeigen = $jInput->get('verband_anzeigen', 0, 'INT');
|
|
$spalte_mitglieder_zeigen = $jInput->get('spalte_mitglieder_zeigen', 0, 'INT');
|
|
$turnierbaum_zeigen = $jInput->get('turnierbaum_zeigen', 0, 'INT');
|
|
$termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT');
|
|
$enableEmailReminders = $jInput->get('enable_email_reminders', 0, 'INT');
|
|
|
|
$spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT');
|
|
|
|
$api_push_key = $jInput->get('api_push_key', '', 'RAW');
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'basis_spielernr'"
|
|
. ", wert = '$basis_spielernr'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'termine_beantragen'"
|
|
. ", wert = '$termine_beantragen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'spielerliste_elo'"
|
|
. ", wert = '$spielerliste_elo'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'lizenz_anzeigen'"
|
|
. ", wert = '$lizenz_anzeigen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'anzahl_mitglieder_zeigen'"
|
|
. ", wert = '$anzahl_mitglieder_zeigen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'verband_anzeigen'"
|
|
. ", wert = '$verband_anzeigen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'spalte_mitglieder_zeigen'"
|
|
. ", wert = '$spalte_mitglieder_zeigen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'turnierbaum_zeigen'"
|
|
. ", wert = '$turnierbaum_zeigen'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'ansprechpartner_ausblenden'"
|
|
. ", wert = '$ansprechpartner_ausblenden'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'ansprechpartner_spielerdaten'"
|
|
. ", wert = '$ansprechpartner_spielerdaten'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'ansprechpartner_importieren'"
|
|
. ", wert = '$ansprechpartner_importieren'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'ansprechpartner_exportieren'"
|
|
. ", wert = '$ansprechpartner_exportieren'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'spielerimport_persoenliche_daten_vorauswahl'"
|
|
. ", wert = '$spielerimport_persoenliche_daten_vorauswahl'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen SET name = 'api_push_key', wert = '$api_push_key'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen SET name = 'enable_email_reminders', wert = '$enableEmailReminders'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminDatenbank(): void
|
|
{
|
|
$db = getDatabase(true);
|
|
|
|
if (!benutzerZugriff("basiseinstellungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_einstellungen";
|
|
$rows = loadObjectList($db, $query);
|
|
$einstellungen = array();
|
|
foreach ($rows as $row)
|
|
$einstellungen[$row->name] = $row->wert;
|
|
|
|
HTML_sportsmanager_admin::adminDatenbank($einstellungen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveDatenbank(): void
|
|
{
|
|
$db = getDatabase(true);
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("basiseinstellungen_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$database_driver = $db->escape(trim($jInput->get('database_driver', '', 'RAW')));
|
|
$database_host = $db->escape(trim($jInput->get('database_host', '', 'RAW')));
|
|
$database_user = $db->escape(trim($jInput->get('database_user', '', 'RAW')));
|
|
$database_password = $db->escape(trim($jInput->get('database_password', '', 'RAW')));
|
|
$database_database = $db->escape(trim($jInput->get('database_database', '', 'RAW')));
|
|
$database_prefix = $db->escape(trim($jInput->get('database_prefix', '', 'RAW')));
|
|
$joomla_path = $db->escape(trim($jInput->get('joomla_path', '', 'RAW')));
|
|
$joomla_path = $joomla_path == "/" && $joomla_path != "\\" ? $joomla_path : rtrim(rtrim($joomla_path, "\\"), "/");
|
|
$joomla_url = $db->escape(trim($jInput->get('joomla_url', '', 'RAW')));
|
|
if (strlen($joomla_url) > 0 && !str_ends_with($joomla_url, "/"))
|
|
$joomla_url .= "/";
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_driver'"
|
|
. ", wert = '$database_driver'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_host'"
|
|
. ", wert = '$database_host'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_user'"
|
|
. ", wert = '$database_user'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_password'"
|
|
. ", wert = '$database_password'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_database'"
|
|
. ", wert = '$database_database'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'database_prefix'"
|
|
. ", wert = '$database_prefix'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'joomla_path'"
|
|
. ", wert = '$joomla_path'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "REPLACE #__sportsmanager_einstellungen"
|
|
. "\n SET name = 'joomla_url'"
|
|
. ", wert = '$joomla_url'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminSpieler($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren");
|
|
$ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren");
|
|
$ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten");
|
|
$ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3";
|
|
$ansprechpartner_bilder_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else if (benutzerVereinModerator())
|
|
$beschraenkter_zugriff = 2;
|
|
else
|
|
keinZugriff(true);
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
if (empty($filter))
|
|
$filter = $jInput->get('spezialfilter', '', 'RAW');
|
|
|
|
$anzahlSpieler = array();
|
|
$query = "SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($beschraenkter_zugriff == 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else if ($beschraenkter_zugriff == 2)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 1 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$anzahlSpieler["aktiv"] = loadResult($db, $query);
|
|
$jahr = date("Y");
|
|
$anzahlSpieler["J aktiv"] = loadResult($db, $query . "\n WHERE " . ($jahr - 18) . " <= geburtsjahr");
|
|
$anzahlSpieler["S aktiv"] = loadResult($db, $query . "\n WHERE " . ($jahr - 50) . " > geburtsjahr");
|
|
$anzahlSpieler["H aktiv"] = loadResult($db, $query . "\n WHERE geschlecht = 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))");
|
|
$anzahlSpieler["D aktiv"] = loadResult($db, $query . "\n WHERE geschlecht <> 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))");
|
|
|
|
$query = "SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($beschraenkter_zugriff == 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else if ($beschraenkter_zugriff == 2)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 2 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$anzahlSpieler["eingeschraenkt"] = loadResult($db, $query);
|
|
|
|
$query = "SELECT COUNT(DISTINCT spieler_id)"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($beschraenkter_zugriff == 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else if ($beschraenkter_zugriff == 2)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND mitgliedsstatus = 3 AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$anzahlSpieler["passiv"] = loadResult($db, $query);
|
|
|
|
$search = stripslashes($filter);
|
|
if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT") {
|
|
$jahr = date("Y");
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr,"
|
|
. "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen,"
|
|
. "\n vereinsname"
|
|
. "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n GROUP BY nachname, vorname"
|
|
. "\n HAVING identische_namen > 1) AS identische_namen"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname)"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$rows = loadObjectList($db, $query);
|
|
} else if ($beschraenkter_zugriff == 0 && $search == "_____DOPPELT_JAHR") {
|
|
$jahr = date("Y");
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr,"
|
|
. "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen,"
|
|
. "\n vereinsname"
|
|
. "\n FROM (SELECT COUNT(*) AS identische_namen, nachname, vorname, geburtsjahr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n GROUP BY nachname, vorname, geburtsjahr"
|
|
. "\n HAVING identische_namen > 1) AS identische_namen"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (nachname, vorname, geburtsjahr)"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n ORDER BY nachname, vorname, geburtsjahr";
|
|
$rows = loadObjectList($db, $query);
|
|
} else if ($beschraenkter_zugriff == 0 && $search == "_____KEINE_SPIELERNR") {
|
|
$jahr = date("Y");
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr,"
|
|
. "\n IF (ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen,"
|
|
. "\n vereinsname"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n WHERE #__sportsmanager_spieler.spielernr = ''"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$rows = loadObjectList($db, $query);
|
|
} else if ($search != "" && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) {
|
|
$searchEscapedWildcards = str_contains($search, "*") ? ($db->escape(trim(mb_strtolower(str_replace("*", "%", $search), 'UTF-8')))) : ("%" . $db->escape(trim(mb_strtolower($search, 'UTF-8'))) . "%");
|
|
$searchEscaped = $db->escape(trim($search));
|
|
|
|
$jahr = date("Y");
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr,"
|
|
. "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen,"
|
|
. "\n vereinsname"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else if ($beschraenkter_zugriff == 2)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else
|
|
$query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id";
|
|
$query .= "\n WHERE (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')";
|
|
$query .= "\n ORDER BY nachname, vorname LIMIT 101";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 100) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Mehr als 100 Spieler gefunden, bitte genaueren Filter verwenden.");
|
|
}
|
|
} else if ($anzahlSpieler["aktiv"] <= 100 && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) {
|
|
$jahr = date("Y");
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, aktueller_verein_id, spielernr, lizenznr, geburtsjahr,"
|
|
. "\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teamspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS turniermeldungen,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_mitglied_von_team.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS teammitgliedschaften,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = #__sportsmanager_spieler.spieler_id OR heim_spieler_2_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_1_id = #__sportsmanager_spieler.spieler_id OR gast_spieler_2_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbspiele,"
|
|
. "\n IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE #__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id = #__sportsmanager_spieler.spieler_id), 1, 0) AS individualwettbewerbausgangsplatzierungen,"
|
|
. "\n vereinsname"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else if ($beschraenkter_zugriff == 2)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("#__sportsmanager_verein.verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
else
|
|
$query .= "\n LEFT JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id";
|
|
$query .= "\n ORDER BY nachname, vorname LIMIT 101";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 100)
|
|
$rows = null;
|
|
} else
|
|
$rows = null;
|
|
|
|
HTML_sportsmanager_admin::adminSpieler($filter, $rows, $anzahlSpieler, $admin_uebersicht, $beschraenkter_zugriff, $ansprechpartner_importieren, $ansprechpartner_exportieren, $ansprechpartner_spielerdaten_bearbeiten, $ansprechpartner_bilder_bearbeiten);
|
|
}
|
|
|
|
function adminEditSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten");
|
|
$ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten)
|
|
$beschraenkter_zugriff = 2;
|
|
else
|
|
keinZugriff(true);
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0)
|
|
$spieler = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$spieler = $rows[0];
|
|
else
|
|
$spieler = null;
|
|
}
|
|
|
|
if ($beschraenkter_zugriff != 0) {
|
|
if ($id == 0)
|
|
keinZugriff(true);
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query = "SELECT IF(EXISTS(
|
|
SELECT 1 FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein
|
|
WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id
|
|
AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "
|
|
AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten
|
|
AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id
|
|
AND NOT #__sportsmanager_verein.ausgetreten),1, 0)";
|
|
else // $beschraenkter_zugriff == 2
|
|
$query = "SELECT IF(EXISTS(
|
|
SELECT 1 FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein
|
|
WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id
|
|
AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "
|
|
AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten
|
|
AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id
|
|
AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n == 0)
|
|
keinZugriff(true);
|
|
}
|
|
|
|
// Vereine ermitteln
|
|
$query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, ausgetreten AS verein_ausgetreten, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
$vereinsmitgliedschaften = null;
|
|
if (!empty($id)) {
|
|
$query = "SELECT DISTINCT verein_id, mitgliedsstatus"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n INNER JOIN (SELECT verein_id, mitgliedsstatus FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id) AS mitgliedschaft USING (verein_id)"
|
|
. "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, vereinsname";
|
|
$vereinsmitgliedschaften = loadObjectList($db, $query);
|
|
}
|
|
|
|
// Nächste Spieler-Nr. ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0)
|
|
die("Fehler: Inkonsistenz in den MySQL-Tabellen!");
|
|
$naechste_spielernr = $rows[0]->wert;
|
|
if (empty($naechste_spielernr))
|
|
$naechste_spielernr = "1";
|
|
|
|
for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) {
|
|
if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9')
|
|
break;
|
|
}
|
|
$spielernr_praefix = substr($naechste_spielernr, 0, $i + 1);
|
|
|
|
$query = "SELECT spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'"
|
|
. "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0) {
|
|
$naechste_spielernr = $rows[0]->spielernr;
|
|
for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) {
|
|
if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') {
|
|
$naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1);
|
|
break;
|
|
}
|
|
if ($naechste_spielernr[$i] <= '8') {
|
|
$naechste_spielernr[$i] = $naechste_spielernr[$i] + 1;
|
|
break;
|
|
}
|
|
$naechste_spielernr[$i] = '0';
|
|
}
|
|
if ($i < 0)
|
|
$naechste_spielernr = "1" . $naechste_spielernr;
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditSpieler($spieler, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_spielerdaten = einstellungswert("ansprechpartner_spielerdaten");
|
|
$ansprechpartner_spielerdaten_bearbeiten = $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2" || $ansprechpartner_spielerdaten == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_spielerdaten_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else if (benutzerVereinModerator() && $ansprechpartner_spielerdaten_bearbeiten)
|
|
$beschraenkter_zugriff = 2;
|
|
else
|
|
keinZugriff();
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vorname = $db->escape(trim($jInput->get('vorname', '', 'RAW')));
|
|
$nachname = $db->escape(trim($jInput->get('nachname', '', 'RAW')));
|
|
$lizenz = $db->escape(trim($jInput->get('lizenz', '', 'RAW')));
|
|
$pseudonym = $db->escape(trim($jInput->get('pseudonym', '', 'RAW')));
|
|
$geschlecht = $db->escape(trim($jInput->get('geschlecht', 'M', 'RAW')));
|
|
$geburtsjahr = $jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%d", $jInput->get('datum_jahr', 0, 'INT'));
|
|
$strasse = $db->escape(trim($jInput->get('strasse', '', 'RAW')));
|
|
$plz = $db->escape(trim($jInput->get('plz', '', 'RAW')));
|
|
$ort = $db->escape(trim($jInput->get('ort', '', 'RAW')));
|
|
$landeskennung = $db->escape(trim($jInput->get('landeskennung', '', 'RAW')));
|
|
$telefon = $db->escape(trim($jInput->get('telefon', '', 'RAW')));
|
|
$mobil = $db->escape(trim($jInput->get('mobil', '', 'RAW')));
|
|
$email = $db->escape(trim($jInput->get('email', '', 'RAW')));
|
|
$spielernr = $db->escape(trim($jInput->get('spielernr', '', 'RAW')));
|
|
$lizenznr = $db->escape(trim($jInput->get('lizenznr', '', 'RAW')));
|
|
$bild_ausblenden = $jInput->get('bild_ausblenden', 0, 'INT');
|
|
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
|
|
$elo_startwert_einzel = max(min($jInput->get('elo_startwert_einzel', 0, 'INT'), 9999), 0);
|
|
$elo_startwert_doppel = max(min($jInput->get('elo_startwert_doppel', 0, 'INT'), 9999), 0);
|
|
$vereinsauswahl_anzahl = $jInput->get('vereinsauswahl_anzahl', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id);
|
|
}
|
|
|
|
$vereinsmitgliedschaften = array();
|
|
$verein_mitgliedsstatus = array();
|
|
for ($i = 0; $i < $vereinsauswahl_anzahl; $i++) {
|
|
$verein_id = $jInput->get('verein_id_' . $i, 0, 'INT');
|
|
if (empty($verein_id))
|
|
continue;
|
|
$vereinsmitgliedschaften[] = $verein_id;
|
|
$verein_mitgliedsstatus[] = $jInput->get('verein_mitgliedsstatus_' . $i, 0, 'INT');
|
|
}
|
|
|
|
if ($beschraenkter_zugriff != 0) {
|
|
if ($id == 0)
|
|
keinZugriff(true);
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query = "SELECT IF(EXISTS(
|
|
SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein
|
|
WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id
|
|
AND " . veranstalterFilter("#__sportsmanager_verein.veranstalter_id IN") . "
|
|
AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten
|
|
AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id
|
|
AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)";
|
|
else // $beschraenkter_zugriff == 2
|
|
$query = "SELECT IF(EXISTS(
|
|
SELECT * FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein
|
|
WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id
|
|
AND " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "
|
|
AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten
|
|
AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id
|
|
AND NOT #__sportsmanager_verein.ausgetreten), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n == 0)
|
|
keinZugriff();
|
|
}
|
|
|
|
if (strlen($spielernr) > 0) {
|
|
$query = "SELECT COUNT(*) FROM #__sportsmanager_spieler WHERE spielernr = '$spielernr' AND spieler_id != $id";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_PLAYER_NO_USED'));
|
|
}
|
|
}
|
|
|
|
$rangliste_aktualisieren = false;
|
|
$elo_aktualisieren = false;
|
|
// Vereinsmitgliedschaften prüfen und ggf. aktualisieren
|
|
if ($id != 0 && !$beschraenkter_zugriff) {
|
|
$query = "SELECT verein_id, #__sportsmanager_mitglied_von_verein.ausgetreten, mitgliedsstatus"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n INNER JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id";
|
|
$bestehende_vereinsmitgliedschaften = loadObjectList($db, $query);
|
|
foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) {
|
|
$ist_mitglied = false;
|
|
foreach ($vereinsmitgliedschaften as $verein_id) {
|
|
if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) {
|
|
$ist_mitglied = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_mitglied) {
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $bestehende_vereinsmitgliedschaft->verein_id AND spieler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
$mitgliedsstatus = null;
|
|
foreach ($vereinsmitgliedschaften as $index => $verein_id) {
|
|
$ist_mitglied = false;
|
|
foreach ($bestehende_vereinsmitgliedschaften as $bestehende_vereinsmitgliedschaft) {
|
|
if ($bestehende_vereinsmitgliedschaft->verein_id == $verein_id) {
|
|
$ist_mitglied = true;
|
|
$mitgliedsstatus = $bestehende_vereinsmitgliedschaft->mitgliedsstatus;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_mitglied) {
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE verein_id = $verein_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else if ($mitgliedsstatus != $verein_mitgliedsstatus[$index]) {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET mitgliedsstatus = '" . ($verein_mitgliedsstatus[$index]) . "',"
|
|
. "\n ausgetreten = " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE")
|
|
. "\n WHERE verein_id = $verein_id AND spieler_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($id == 0 && !$beschraenkter_zugriff) {
|
|
$query = "INSERT INTO #__sportsmanager_spieler "
|
|
. "(vorname, nachname, lizenz, pseudonym, geschlecht, geburtsjahr, strasse, plz, ort, landeskennung, telefon, mobil, email, spielernr, lizenznr, elo_einzel_startwert, elo_doppel_startwert, bild_ausblenden) "
|
|
. "VALUES ('$vorname', "
|
|
. "'$nachname', "
|
|
. "'$lizenz', "
|
|
. "'$pseudonym', "
|
|
. "'$geschlecht', "
|
|
. ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . ", "
|
|
. "'$strasse', "
|
|
. "'$plz', "
|
|
. "'$ort', "
|
|
. "'$landeskennung', "
|
|
. "'$telefon', "
|
|
. "'$mobil', "
|
|
. "'$email', "
|
|
. "'$spielernr', "
|
|
. "'$lizenznr', "
|
|
. "'$elo_startwert_einzel', "
|
|
. "'$elo_startwert_doppel', "
|
|
. ($bild_ausblenden ? "TRUE" : "FALSE") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
// Vereinsmitgliedschaften erzeugen
|
|
foreach ($vereinsmitgliedschaften as $index => $verein_id) {
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE verein_id = $verein_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$id', '$verein_id', '" . ($verein_mitgliedsstatus[$index]) . "', " . ($verein_mitgliedsstatus[$index] == 0 ? "TRUE" : "FALSE") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$spieler = null;
|
|
if ($id != 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2")) {
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Der Spieler existiert nicht mehr!");
|
|
}
|
|
$spieler = $rows[0];
|
|
|
|
if ($spieler->elo_einzel_startwert != $elo_startwert_einzel || $spieler->elo_doppel_startwert != $elo_startwert_doppel)
|
|
$elo_aktualisieren = true;
|
|
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET pseudonym = '$pseudonym',"
|
|
. "\n strasse = '$strasse',"
|
|
. "\n plz = '$plz',"
|
|
. "\n ort = '$ort',"
|
|
. "\n landeskennung = '$landeskennung',"
|
|
. "\n telefon = '$telefon',"
|
|
. "\n mobil = '$mobil',"
|
|
. "\n bild_ausblenden = " . ($bild_ausblenden ? "TRUE" : "FALSE") . ",";
|
|
if (!$beschraenkter_zugriff) {
|
|
$query .= "\n vorname = '$vorname',"
|
|
. "\n nachname = '$nachname',"
|
|
. "\n lizenz = '$lizenz',"
|
|
. "\n geschlecht = '$geschlecht',"
|
|
. "\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : "'$geburtsjahr'") . ","
|
|
. "\n spielernr = '$spielernr',"
|
|
. "\n lizenznr = '$lizenznr',"
|
|
. "\n elo_einzel_startwert = " . ($elo_startwert_einzel == null ? "NULL" : "'$elo_startwert_einzel'") . ","
|
|
. "\n elo_doppel_startwert = " . ($elo_startwert_doppel == null ? "NULL" : "'$elo_startwert_doppel'") . ",";
|
|
}
|
|
$query .= "\n email = '$email'"
|
|
. "\n WHERE spieler_id = $id";
|
|
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($geburtsjahr != $spieler->geburtsjahr || $geschlecht != $spieler->geschlecht)
|
|
$rangliste_aktualisieren = true;
|
|
}
|
|
|
|
if ($elo_aktualisieren)
|
|
eloAktualisieren($spieler->erstmals_gespielt);
|
|
|
|
if ($bildbeibehalten == 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3")) {
|
|
bildLoeschen('spieler', $id);
|
|
|
|
if (!empty($_FILES["bild"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT'));
|
|
}
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler';
|
|
if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED'));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
aktuellerVereinAktualisieren($id);
|
|
if ($rangliste_aktualisieren) {
|
|
ranglisteAktualisieren(0, 0, $id);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE spieler_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE heim_spieler_1_id = $id OR heim_spieler_2_id = $id OR gast_spieler_1_id = $id OR gast_spieler_2_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE spieler_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("spieler", $id);
|
|
|
|
spielerstatistikAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter));
|
|
}
|
|
|
|
#[NoReturn] function adminGroomingMehrfacheMitgliedschaften(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT spieler_id, COUNT(*) AS mehrfach"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n GROUP BY spieler_id, verein_id"
|
|
. "\n HAVING mehrfach > 1"
|
|
. "\n ORDER BY spieler_id";
|
|
$mitglieder = loadObjectList($db, $query);
|
|
foreach ($mitglieder as $mitglied) {
|
|
$query = "SELECT mitglied_von_verein_id, verein_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n WHERE spieler_id = $mitglied->spieler_id"
|
|
. "\n ORDER BY verein_id, ausgetreten, mitgliedsstatus";
|
|
$rows = loadObjectList($db, $query);
|
|
$mitglied_verein_id = -1;
|
|
foreach ($rows as $row) {
|
|
if ($mitglied_verein_id != $row->verein_id) {
|
|
$mitglied_verein_id = $row->verein_id;
|
|
continue;
|
|
}
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminSpielerZusammenlegenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
|
|
$query = "SELECT spieler_id, vorname, nachname, spielernr, aktueller_verein_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n ORDER BY nachname, vorname, spielernr, aktueller_verein_id";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielerZusammenlegen($spieler, $filter);
|
|
}
|
|
|
|
#[NoReturn] function adminSpielerZusammenlegen(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff();
|
|
|
|
$spieler_beizubehalten_id = $jInput->get('spieler_beizubehalten_id', 0, 'INT');
|
|
$spieler_zu_entfernen_id = $jInput->get('spieler_zu_entfernen_id', 0, 'INT');
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter));
|
|
}
|
|
|
|
if ($spieler_beizubehalten_id == $spieler_zu_entfernen_id) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spieler gewählt werden");
|
|
}
|
|
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_beizubehalten_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter), "Beizubehaltender Spieler existiert nicht.");
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id, "Zu entfernender Spieler existiert nicht.");
|
|
}
|
|
$spieler_zu_entfernen = $rows[0];
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_punkte"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler"
|
|
. "\n SET spieler_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET heim_spieler_1_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET heim_spieler_2_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET gast_spieler_1_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET gast_spieler_2_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET heim_spieler_1_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET heim_spieler_2_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET gast_spieler_1_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET gast_spieler_2_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT DISTINCT individualwettbewerb_id"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$individualwettbewerbe = loadObjectList($db, $query);
|
|
foreach ($individualwettbewerbe as $individualwettbewerb) {
|
|
$individualwettbewerbId = $individualwettbewerb->individualwettbewerb_id;
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY platz";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
$platzierungen = array();
|
|
foreach ($ausgangsplatzierungen as $ausgangsplatzierung)
|
|
$platzierungen[] = $ausgangsplatzierung->spieler_id;
|
|
|
|
$spieler_beizubehalten_platzierung = in_array($spieler_beizubehalten_id, $platzierungen);
|
|
$spieler_zu_entfernen_platzierung = array_search($spieler_zu_entfernen_id, $platzierungen);
|
|
if ($spieler_beizubehalten_platzierung !== false && $spieler_zu_entfernen_platzierung !== false)
|
|
array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1);
|
|
else if ($spieler_beizubehalten_platzierung === false)
|
|
array_splice($platzierungen, $spieler_zu_entfernen_platzierung, 1, $spieler_beizubehalten_id);
|
|
|
|
$platzierungen_uebrig = $platzierungen;
|
|
foreach ($ausgangsplatzierungen as $platzierung_vorhanden) {
|
|
$index = array_search($platzierung_vorhanden->spieler_id, $platzierungen);
|
|
if ($index !== false) {
|
|
$platz = $index + 1;
|
|
if ($platzierung_vorhanden->platz != $platz) {
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET platz = '$platz'"
|
|
. "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig);
|
|
unset($platzierungen_uebrig[$index_uebrig]);
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($platzierungen_uebrig as $platzierung_uebrig) {
|
|
$index = array_search($platzierung_uebrig, $platzierungen);
|
|
$platz = $index + 1;
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET individualwettbewerb_id = '$individualwettbewerbId',"
|
|
. "\n spieler_id = '$platzierung_uebrig',"
|
|
. "\n platz = '$platz'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_team"
|
|
. "\n SET spieler_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT mitglied_von_verein_id, verein_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n WHERE spieler_id = $spieler_beizubehalten_id OR spieler_id = $spieler_zu_entfernen_id"
|
|
. "\n ORDER BY verein_id, ausgetreten, IF(spieler_id = $spieler_beizubehalten_id, 0, 1), mitgliedsstatus";
|
|
$rows = loadObjectList($db, $query);
|
|
$mitglied_verein_id = -1;
|
|
foreach ($rows as $row) {
|
|
if ($mitglied_verein_id != $row->verein_id) {
|
|
$mitglied_verein_id = $row->verein_id;
|
|
continue;
|
|
}
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = '$row->mitglied_von_verein_id';";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET spieler_id = $spieler_beizubehalten_id"
|
|
. "\n WHERE spieler_id = $spieler_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler';
|
|
$neues_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_beizubehalten_id . '.';
|
|
|
|
if (!(file_exists($neues_bild_pfad . 'png') && is_file($neues_bild_pfad . 'png')) && !(file_exists($neues_bild_pfad . 'jpg') && is_file($neues_bild_pfad . 'jpg'))) {
|
|
$altes_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_zu_entfernen_id . '.';
|
|
|
|
if (file_exists($altes_bild_pfad . 'png') && is_file($altes_bild_pfad . 'png'))
|
|
File::copy($altes_bild_pfad . 'png', $neues_bild_pfad . 'png');
|
|
else if (file_exists($altes_bild_pfad . 'jpg') && is_file($altes_bild_pfad . 'jpg'))
|
|
File::copy($altes_bild_pfad . 'jpg', $neues_bild_pfad . 'jpg');
|
|
}
|
|
|
|
bildLoeschen("spieler", $spieler_zu_entfernen_id);
|
|
|
|
if (!empty($spieler_zu_entfernen->erstmals_gespielt)) {
|
|
wannGespieltAktualisieren();
|
|
individualwettbewerbTabelleAktualisieren();
|
|
eloAktualisieren($spieler_zu_entfernen->erstmals_gespielt);
|
|
}
|
|
spielerstatistikAktualisieren();
|
|
aktuellerVereinAktualisieren($spieler_beizubehalten_id);
|
|
ranglisteAktualisieren();
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id);
|
|
}
|
|
|
|
function adminRemoveInaktiveSpielerForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, lizenznr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id"
|
|
. "\n WHERE ISNULL(aktueller_verein_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)"
|
|
. "\n AND ISNULL(teamspiel1.heim_spieler_1_id)"
|
|
. "\n AND ISNULL(teamspiel2.heim_spieler_2_id)"
|
|
. "\n AND ISNULL(teamspiel3.gast_spieler_1_id)"
|
|
. "\n AND ISNULL(teamspiel4.gast_spieler_2_id)"
|
|
. "\n AND ISNULL(individualspiel1.heim_spieler_1_id)"
|
|
. "\n AND ISNULL(individualspiel2.heim_spieler_2_id)"
|
|
. "\n AND ISNULL(individualspiel3.gast_spieler_1_id)"
|
|
. "\n AND ISNULL(individualspiel4.gast_spieler_2_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminRemoveInaktiveSpieler($spieler, $filter);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveInaktiveSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff();
|
|
|
|
$spieler_beizubehalten_ids = $jInput->get('spielerids', array(), 'ARRAY');
|
|
$filter = $jInput->get('filter', '', 'RAW');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter));
|
|
}
|
|
|
|
$query = "SELECT #__sportsmanager_spieler.spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_ausgangsplatzierung USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_team USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel1 ON #__sportsmanager_spieler.spieler_id = teamspiel1.heim_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel2 ON #__sportsmanager_spieler.spieler_id = teamspiel2.heim_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel3 ON #__sportsmanager_spieler.spieler_id = teamspiel3.gast_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_teamspiel AS teamspiel4 ON #__sportsmanager_spieler.spieler_id = teamspiel4.gast_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel1 ON #__sportsmanager_spieler.spieler_id = individualspiel1.heim_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel2 ON #__sportsmanager_spieler.spieler_id = individualspiel2.heim_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel3 ON #__sportsmanager_spieler.spieler_id = individualspiel3.gast_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb_spiel AS individualspiel4 ON #__sportsmanager_spieler.spieler_id = individualspiel4.gast_spieler_2_id"
|
|
. "\n WHERE ISNULL(aktueller_verein_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_individualwettbewerb_ausgangsplatzierung.spieler_id)"
|
|
. "\n AND ISNULL(#__sportsmanager_mitglied_von_team.team_id)"
|
|
. "\n AND ISNULL(teamspiel1.heim_spieler_1_id)"
|
|
. "\n AND ISNULL(teamspiel2.heim_spieler_2_id)"
|
|
. "\n AND ISNULL(teamspiel3.gast_spieler_1_id)"
|
|
. "\n AND ISNULL(teamspiel4.gast_spieler_2_id)"
|
|
. "\n AND ISNULL(individualspiel1.heim_spieler_1_id)"
|
|
. "\n AND ISNULL(individualspiel2.heim_spieler_2_id)"
|
|
. "\n AND ISNULL(individualspiel3.gast_spieler_1_id)"
|
|
. "\n AND ISNULL(individualspiel4.gast_spieler_2_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$spieler = loadObjectList($db, $query);
|
|
$bilder_spieler_ids = array();
|
|
|
|
foreach ($spieler as $s) {
|
|
$id = $s->spieler_id;
|
|
|
|
if (in_array($id, $spieler_beizubehalten_ids))
|
|
continue;
|
|
|
|
$bilder_spieler_ids[] = $id;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE spieler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
spielerstatistikAktualisieren();
|
|
|
|
foreach ($bilder_spieler_ids as $id)
|
|
bildLoeschen("spieler", $id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter));
|
|
}
|
|
|
|
function adminImportSpielerForm(): void
|
|
{
|
|
$ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren");
|
|
|
|
if (!benutzerZugriff("spieler_aendern") && !(($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()))
|
|
keinZugriff(true);
|
|
|
|
HTML_sportsmanager_admin::adminImportSpieler();
|
|
}
|
|
|
|
function adminImportSpielerDetailsForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren");
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
$query = "SELECT DISTINCT session_id"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
adminDeleteSpielerImport($row->session_id);
|
|
}
|
|
|
|
if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED'));
|
|
}
|
|
|
|
$handle = fopen($_FILES["daten"]["tmp_name"], "r");
|
|
if (!$handle) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE'));
|
|
}
|
|
if (feof($handle)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_FILE_IS_EMPTY'));
|
|
}
|
|
|
|
$titelzeile = chop(utf8_encode(fgets($handle, 4096)));
|
|
if (str_starts_with($titelzeile, "sep=")) {
|
|
$trennzeichen = substr($titelzeile, 4);
|
|
if ($trennzeichen == "") // TAB am Ende wird aus irgendwelchen Gründen weggekürzt
|
|
$trennzeichen = "\t";
|
|
$titelzeile = chop(utf8_encode(fgets($handle, 4096)));
|
|
} else if ($titelzeile == "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM")
|
|
$trennzeichen = "#";
|
|
else if (str_contains($titelzeile, "\t"))
|
|
$trennzeichen = "\t";
|
|
else if (str_contains($titelzeile, ";"))
|
|
$trennzeichen = ";";
|
|
else
|
|
$trennzeichen = ",";
|
|
|
|
$spalte = array();
|
|
|
|
if (str_starts_with($titelzeile, ";All licensees") || str_starts_with($titelzeile, ";All validated licensees")) {
|
|
// ITSF-Export
|
|
$lizenz_import = true;
|
|
$buffer = $titelzeile;
|
|
while (!feof($handle) && !str_contains($buffer, "Profession"))
|
|
$buffer = chop(utf8_encode(fgets($handle, 4096)));
|
|
$spalte["nachname"] = 3;
|
|
$spalte["vorname"] = 2;
|
|
$spalte["geschlecht"] = 1;
|
|
$spalte["spielernr"] = 6;
|
|
$spalte["lizenznr"] = 0;
|
|
$spalte["geburtsjahr"] = 5;
|
|
} else {
|
|
$lizenz_import = false;
|
|
$titel = explode($trennzeichen, strtolower($titelzeile));
|
|
|
|
foreach ($titel as $index => $bezeichnung) {
|
|
$bezeichnung = trim($bezeichnung);
|
|
$len = strlen($bezeichnung);
|
|
if ($len >= 2 && $bezeichnung[0] == '"' && $bezeichnung[$len - 1] == '"')
|
|
$bezeichnung = trim(str_replace('""', '"', substr($bezeichnung, 1, $len - 2)));
|
|
|
|
if ($bezeichnung == "name" || $bezeichnung == "nachname")
|
|
$spalte["nachname"] = $index;
|
|
else if ($bezeichnung == "vorname")
|
|
$spalte["vorname"] = $index;
|
|
else if ($bezeichnung == "name, vorname" || $bezeichnung == "name,vorname")
|
|
$spalte["name,vorname"] = $index;
|
|
else if ($bezeichnung == "pseudonym")
|
|
$spalte["pseudonym"] = $index;
|
|
else if ($bezeichnung == "geschlecht" || $bezeichnung == "anrede")
|
|
$spalte["geschlecht"] = $index;
|
|
else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr." || $bezeichnung == "spielerpass")
|
|
$spalte["spielernr"] = $index;
|
|
else if ($bezeichnung == "spielernr alt" || $bezeichnung == "spielernr. alt" || $bezeichnung == "spielernr_alt")
|
|
$spalte["spielernr_alt"] = $index;
|
|
else if ($bezeichnung == "lizenznr" || $bezeichnung == "lizenznr.")
|
|
$spalte["lizenznr"] = $index;
|
|
else if ($bezeichnung == "organisation")
|
|
$spalte["organisation"] = $index;
|
|
else if ($bezeichnung == "vereinssitz")
|
|
$spalte["vereinssitz"] = $index;
|
|
else if ($bezeichnung == "vereinsname" || $bezeichnung == "verein")
|
|
$spalte["vereinsname"] = $index;
|
|
else if ($bezeichnung == "geburtsdatum")
|
|
$spalte["geburtsdatum"] = $index;
|
|
else if ($bezeichnung == "geburtsjahr")
|
|
$spalte["geburtsjahr"] = $index;
|
|
else if ($bezeichnung == "email" || $bezeichnung == "e-mail")
|
|
$spalte["email"] = $index;
|
|
else if (str_starts_with($bezeichnung, "stra"))
|
|
$spalte["strasse"] = $index;
|
|
else if ($bezeichnung == "plz/ort")
|
|
$spalte["plz/ort"] = $index;
|
|
else if ($bezeichnung == "plz")
|
|
$spalte["plz"] = $index;
|
|
else if ($bezeichnung == "ort")
|
|
$spalte["ort"] = $index;
|
|
else if ($bezeichnung == "landeskennung")
|
|
$spalte["landeskennung"] = $index;
|
|
else if ($bezeichnung == "telefon")
|
|
$spalte["telefon"] = $index;
|
|
else if ($bezeichnung == "mobil")
|
|
$spalte["mobil"] = $index;
|
|
else if ($bezeichnung == "austritt" || $bezeichnung == "ausgetreten")
|
|
$spalte["ausgetreten"] = $index;
|
|
else if ($bezeichnung == "mitgliedsstatus")
|
|
$spalte["mitgliedsstatus"] = $index;
|
|
}
|
|
|
|
if (((!isset($spalte["nachname"]) || !isset($spalte["vorname"])) && !isset($spalte["name,vorname"])) || !isset($spalte["spielernr"])) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Die übergebene Datei ist keine Spielerdatei.");
|
|
}
|
|
}
|
|
|
|
$session_id = date('Y-m-d H:i:s');
|
|
|
|
while (!feof($handle)) {
|
|
$buffer = chop(utf8_encode(fgets($handle, 4096)));
|
|
$daten = explode($trennzeichen, $buffer);
|
|
|
|
foreach ($daten as $index => $wert) {
|
|
$wert = trim($wert);
|
|
$len = strlen($wert);
|
|
if ($len < 2 || $wert[$len - 1] != '"' || !($wert[0] == '"' || ($wert[0] == '=' && $wert[1] == '"')))
|
|
$daten[$index] = $wert;
|
|
else if ($wert[0] == '"')
|
|
$daten[$index] = trim(str_replace('""', '"', substr($wert, 1, $len - 2)));
|
|
else
|
|
$daten[$index] = trim(str_replace('""', '"', substr($wert, 2, $len - 3)));
|
|
}
|
|
|
|
if (isset($spalte["vorname"]) && isset($spalte["nachname"]) && isset($daten[$spalte["vorname"]]) && isset($daten[$spalte["nachname"]])) {
|
|
$nachname = $daten[$spalte["nachname"]];
|
|
$vorname = $daten[$spalte["vorname"]];
|
|
} else if (isset($spalte["name,vorname"]) && isset($daten[$spalte["name,vorname"]])) {
|
|
$pos = strpos($daten[$spalte["name,vorname"]], ",");
|
|
if ($pos === false)
|
|
continue;
|
|
$nachname = trim(substr($daten[$spalte["name,vorname"]], 0, $pos));
|
|
$vorname = trim(substr($daten[$spalte["name,vorname"]], $pos + 1));
|
|
} else
|
|
continue;
|
|
|
|
if ($vorname == "" || $nachname == "")
|
|
continue;
|
|
|
|
$mitgliedsstatus = 1;
|
|
if (isset($spalte["mitgliedsstatus"]) && !empty($daten[$spalte["mitgliedsstatus"]])) {
|
|
$s = strtolower($daten[$spalte["mitgliedsstatus"]]);
|
|
if ($s == "ausgetreten")
|
|
$mitgliedsstatus = 0;
|
|
else if ($s == "passiv")
|
|
$mitgliedsstatus = 3;
|
|
else if (str_starts_with($s, "eingeschr"))
|
|
$mitgliedsstatus = 2;
|
|
} else if (isset($spalte["ausgetreten"]) && !empty($daten[$spalte["ausgetreten"]])) {
|
|
if (strtolower($daten[$spalte["ausgetreten"]]) == "ja")
|
|
$mitgliedsstatus = 0;
|
|
}
|
|
|
|
if ($mitgliedsstatus == 0)
|
|
continue;
|
|
|
|
$geschlecht = isset($spalte["geschlecht"]) && isset($daten[$spalte["geschlecht"]]) ? (($daten[$spalte["geschlecht"]][0] == "M" || $daten[$spalte["geschlecht"]][0] == "m" || $daten[$spalte["geschlecht"]][0] == "H" || $daten[$spalte["geschlecht"]][0] == "h") ? "M" : "W") : "M";
|
|
$spielernr = isset($daten[$spalte["spielernr"]]) ? trim($daten[$spalte["spielernr"]]) : "";
|
|
if (!empty($spielernr) && !ctype_digit(substr($spielernr, strlen($spielernr) - 1, 1)))
|
|
$spielernr = "";
|
|
$spielernr_alt = isset($spalte["spielernr_alt"]) && isset($daten[$spalte["spielernr_alt"]]) ? trim($daten[$spalte["spielernr_alt"]]) : "";
|
|
$lizenznr = isset($spalte["lizenznr"]) && isset($daten[$spalte["lizenznr"]]) ? $daten[$spalte["lizenznr"]] : "";
|
|
if (!empty($lizenznr) && !ctype_digit(substr($lizenznr, strlen($lizenznr) - 1, 1)))
|
|
$lizenznr = "";
|
|
$pseudonym = isset($spalte["pseudonym"]) && isset($daten[$spalte["pseudonym"]]) ? $daten[$spalte["pseudonym"]] : "";
|
|
$organisation = isset($spalte["organisation"]) && isset($daten[$spalte["organisation"]]) ? $daten[$spalte["organisation"]] : "";
|
|
$vereinssitz = isset($spalte["vereinssitz"]) && isset($daten[$spalte["vereinssitz"]]) ? $daten[$spalte["vereinssitz"]] : "";
|
|
$vereinsname = isset($spalte["vereinsname"]) && isset($daten[$spalte["vereinsname"]]) ? $daten[$spalte["vereinsname"]] : "";
|
|
$geburtsdatum = isset($spalte["geburtsdatum"]) && isset($daten[$spalte["geburtsdatum"]]) ? normalisiertesDatum($daten[$spalte["geburtsdatum"]]) : null;
|
|
$geburtsjahr = isset($spalte["geburtsjahr"]) && isset($daten[$spalte["geburtsjahr"]]) ? $daten[$spalte["geburtsjahr"]] : null;
|
|
if (empty($geburtsjahr) || !ctype_digit($geburtsjahr) || $geburtsjahr < 1800)
|
|
$geburtsjahr = null;
|
|
$email = isset($spalte["email"]) && isset($daten[$spalte["email"]]) ? $daten[$spalte["email"]] : "";
|
|
$strasse = isset($spalte["strasse"]) && isset($daten[$spalte["strasse"]]) ? $daten[$spalte["strasse"]] : "";
|
|
if (isset($spalte["plz/ort"]) && isset($daten[$spalte["plz/ort"]])) {
|
|
$pos = strpos($daten[$spalte["plz/ort"]], ' ');
|
|
if (!$pos) {
|
|
$plz = "";
|
|
$ort = "";
|
|
} else {
|
|
$plz = substr($daten[$spalte["plz/ort"]], 0, $pos);
|
|
$ort = substr($daten[$spalte["plz/ort"]], $pos + 1);
|
|
}
|
|
} else {
|
|
$plz = "";
|
|
$ort = "";
|
|
}
|
|
if (isset($spalte["plz"]))
|
|
$plz = $daten[$spalte["plz"]] ?? "";
|
|
if (isset($spalte["ort"]))
|
|
$ort = $daten[$spalte["ort"]] ?? "";
|
|
$landeskennung = isset($spalte["landeskennung"]) && isset($daten[$spalte["landeskennung"]]) ? $daten[$spalte["landeskennung"]] : "";
|
|
$telefon = isset($spalte["telefon"]) && isset($daten[$spalte["telefon"]]) ? $daten[$spalte["telefon"]] : "";
|
|
$mobil = isset($spalte["mobil"]) && isset($daten[$spalte["mobil"]]) ? $daten[$spalte["mobil"]] : "";
|
|
|
|
$query = "INSERT #__sportsmanager_spieler_import"
|
|
. "\n SET session_id = '" . $db->escape($session_id) . "',"
|
|
. "\n vorname = '" . $db->escape($vorname) . "',"
|
|
. "\n nachname = '" . $db->escape($nachname) . "',"
|
|
. "\n spielernr = '" . $db->escape($spielernr) . "'";
|
|
if (isset($spalte["spielernr_alt"]))
|
|
$query .= ",\n spielernr_alt = '" . $db->escape($spielernr_alt) . "'";
|
|
if (isset($spalte["lizenznr"]))
|
|
$query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'";
|
|
if (isset($spalte["pseudonym"]))
|
|
$query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'";
|
|
$query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'";
|
|
if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"]))
|
|
$query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? ($geburtsdatum == null ? "NULL" : ("YEAR('" . $db->escape($geburtsdatum) . "')")) : ("'" . $db->escape($geburtsjahr) . "'"));
|
|
if (isset($spalte["strasse"]))
|
|
$query .= ",\n strasse = '" . $db->escape($strasse) . "'";
|
|
if (isset($spalte["plz"]))
|
|
$query .= ",\n plz = '" . $db->escape($plz) . "'";
|
|
if (isset($spalte["ort"]))
|
|
$query .= ",\n ort = '" . $db->escape($ort) . "'";
|
|
if (isset($spalte["landeskennung"]))
|
|
$query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'";
|
|
if (isset($spalte["telefon"]))
|
|
$query .= ",\n telefon = '" . $db->escape($telefon) . "'";
|
|
if (isset($spalte["mobil"]))
|
|
$query .= ",\n mobil = '" . $db->escape($mobil) . "'";
|
|
if (isset($spalte["email"]))
|
|
$query .= ",\n email = '" . $db->escape($email) . "'";
|
|
if (isset($spalte["vereinsname"]))
|
|
$query .= ",\n vereinsname = '" . $db->escape($vereinsname) . "'";
|
|
if (isset($spalte["vereinssitz"]))
|
|
$query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'";
|
|
if (isset($spalte["organisation"]))
|
|
$query .= ",\n veranstalterbezeichnung = '" . $db->escape($organisation) . "'";
|
|
$query .= ",\n mitgliedsstatus = '" . $mitgliedsstatus . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
// if (!isset($veranstalter_import[$organisation]))
|
|
// $veranstalter_import[$organisation] = TRUE;
|
|
}
|
|
fclose($handle);
|
|
|
|
if ($lizenz_import) {
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''";
|
|
$lizenzen_aktualisiert = loadResult($db, $query);
|
|
|
|
$query = "UPDATE #__sportsmanager_spieler_import"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spielernr)"
|
|
. "\n SET #__sportsmanager_spieler.lizenznr = #__sportsmanager_spieler_import.lizenznr"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr <> '' AND #__sportsmanager_spieler_import.lizenznr <> ''";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
adminDeleteSpielerImport($session_id);
|
|
|
|
HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen());
|
|
|
|
return;
|
|
}
|
|
|
|
$spalten = array();
|
|
if (isset($spalte["pseudonym"]))
|
|
$spalten[] = "pseudonym";
|
|
if (isset($spalte["geschlecht"]))
|
|
$spalten[] = "geschlecht";
|
|
$spalten[] = "spielernr";
|
|
if (isset($spalte["spielernr_alt"]))
|
|
$spalten[] = "spielernr_alt";
|
|
if (isset($spalte["lizenznr"]))
|
|
$spalten[] = "lizenznr";
|
|
if (isset($spalte["organisation"]))
|
|
$spalten[] = "organisation";
|
|
if (isset($spalte["vereinssitz"]))
|
|
$spalten[] = "vereinssitz";
|
|
if (isset($spalte["vereinsname"]))
|
|
$spalten[] = "vereinsname";
|
|
if (isset($spalte["geburtsdatum"]))
|
|
$spalten[] = "geburtsdatum";
|
|
if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"]))
|
|
$spalten[] = "geburtsjahr";
|
|
if (isset($spalte["email"]))
|
|
$spalten[] = "email";
|
|
if (isset($spalte["strasse"]))
|
|
$spalten[] = "strasse";
|
|
if (isset($spalte["strasse"]))
|
|
$spalten[] = "strasse";
|
|
if (isset($spalte["plz/ort"]) || isset($spalte["plz"]))
|
|
$spalten[] = "plz";
|
|
if (isset($spalte["plz/ort"]) || isset($spalte["ort"]))
|
|
$spalten[] = "ort";
|
|
if (isset($spalte["landeskennung"]))
|
|
$spalten[] = "landeskennung";
|
|
if (isset($spalte["telefon"]))
|
|
$spalten[] = "telefon";
|
|
if (isset($spalte["mobil"]))
|
|
$spalten[] = "mobil";
|
|
$spalten[] = "mitgliedsstatus";
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter";
|
|
if ($beschraenkter_zugriff)
|
|
$query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN");
|
|
$query .= "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
$query = "SELECT DISTINCT veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter_import = loadObjectList($db, $query);
|
|
$veranstalter_zugehoerigkeit = array();
|
|
foreach ($veranstalter_import as $v) {
|
|
$query = "SELECT #__sportsmanager_veranstalter.veranstalter_id, COUNT(*) AS spieler"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n INNER JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr"
|
|
. "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)"
|
|
. "\n INNER JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND #__sportsmanager_spieler_import.spielernr != '' AND " . (empty($v->veranstalterbezeichnung) ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v->veranstalterbezeichnung) . "'")) . " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten"
|
|
. "\n GROUP BY #__sportsmanager_veranstalter.veranstalter_id"
|
|
. "\n ORDER BY spieler DESC"
|
|
. "\n LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0)
|
|
$veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] = $rows[0]->veranstalter_id;
|
|
}
|
|
|
|
$query = "SELECT DISTINCT vereinsname, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'";
|
|
$vereine_import = loadObjectList($db, $query);
|
|
if (!$beschraenkter_zugriff && count($vereine_import) == 1) {
|
|
$verein_import = $vereine_import[0]->vereinsname;
|
|
$query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE NOT ausgetreten"
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
} else {
|
|
$verein_import = "";
|
|
$vereine = array();
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminImportSpielerDetails($beschraenkter_zugriff, $ansprechpartner_importieren, $veranstalter, $veranstalter_import, $veranstalter_zugehoerigkeit, $session_id, implode(",", $spalten), $verein_import, $vereine, einstellungswert("spielerimport_persoenliche_daten_vorauswahl"));
|
|
}
|
|
|
|
function adminDeleteSpielerImport($session_id): void
|
|
{
|
|
$db = getDatabase();
|
|
$query = "DELETE FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
function adminImportSpielerVorschau(): void
|
|
{
|
|
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren");
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$session_id = $jInput->get('session_id', '', 'RAW');
|
|
|
|
$query = "SELECT DISTINCT veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter_import = loadObjectList($db, $query);
|
|
$spalten = array();
|
|
foreach (explode(",", $jInput->get('spalten', '', 'RAW')) as $s)
|
|
$spalten[$s] = true;
|
|
$veranstalter = array();
|
|
$n = 1;
|
|
foreach ($veranstalter_import as $v) {
|
|
$veranstalter_id = $jInput->get('veranstalter_' . $n . '_id', '', 'INT');
|
|
if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id)))
|
|
$veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id;
|
|
else
|
|
$veranstalter[$v->veranstalterbezeichnung] = "";
|
|
$n++;
|
|
}
|
|
|
|
//check Passnummer auf gueltiges Format
|
|
$query = "SELECT nachname, vorname, spielernr, spielernr_alt"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'"
|
|
. "\n AND ((spielernr NOT REGEXP '^[0-9]{2}-[0-9]{4,6}$' AND spielernr <> '')"
|
|
. "\n OR (spielernr_alt NOT REGEXP '^[0-9]{2}-[0-9]{4,6}$' AND spielernr_alt <> ''));";
|
|
|
|
$spielerfehler = loadObjectList($db, $query);
|
|
if (count($spielerfehler) > 0) {
|
|
adminDeleteSpielerImport($session_id);
|
|
HTML_sportsmanager_admin::adminImportSpielerFehler($spielerfehler, $fehler="Passnummer");
|
|
return;
|
|
}
|
|
|
|
$spielernr_aendern = false;
|
|
if (isset($spalten["spielernr_alt"])) {
|
|
$query = "SELECT nachname, vorname, spielernr, spielernr_alt"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != ''"
|
|
. "\n LIMIT 1";
|
|
$spielervergleich = loadObjectList($db, $query);
|
|
if (count($spielervergleich) > 0) {
|
|
$spielernr_aendern = true;
|
|
$s1 = $spielervergleich[0];
|
|
$query = "SELECT nachname, vorname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE spielernr = '$s1->spielernr'";
|
|
$spieler = loadObjectList($db, $query);
|
|
if (count($spieler) > 0) {
|
|
$s2 = $spieler[0];
|
|
if ($s1->vorname == $s2->vorname && $s1->nachname == $s2->nachname) {
|
|
$query = "UPDATE #__sportsmanager_spieler_import"
|
|
. "\n SET spielernr_alt = NULL";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$spielernr_aendern = false;
|
|
}
|
|
}
|
|
if ($spielernr_aendern) {
|
|
$query = "SELECT nachname, vorname, bestand.spielernr"
|
|
. "\n FROM"
|
|
. "\n (SELECT nachname, vorname, spielernr, spielernr_alt"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import"
|
|
. "\n INNER JOIN"
|
|
. "\n (SELECT spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n ) AS bestand"
|
|
. "\n ON bestand.spielernr = import.spielernr"
|
|
. "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$konflikte = loadObjectList($db, $query);
|
|
if (count($konflikte) > 0) {
|
|
adminDeleteSpielerImport($session_id);
|
|
HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte, $fehler="konflikt");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt,"
|
|
. "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) AS namensgleich"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr")
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'"
|
|
. "\n HAVING namensgleich > 0 OR NOT ISNULL(nachname_alt) OR NOT ISNULL(vorname_alt)"
|
|
// "namensgleich" kann in der "ORDER"-Anweisung" nicht verwendet werden, da MySQL 5.0.x dies nicht akzeptiert
|
|
. "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS t1 WHERE (#__sportsmanager_spieler_import.vorname = t1.vorname AND #__sportsmanager_spieler_import.nachname = t1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(t1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = t1.geburtsjahr))), 0) > 0 DESC, nachname, vorname";
|
|
$spieler_import = loadObjectList($db, $query);
|
|
$import_verweigern = false;
|
|
if ($beschraenkter_zugriff) {
|
|
foreach ($spieler_import as $s) {
|
|
if ($s->namensgleich > 0) {
|
|
$import_verweigern = true;
|
|
break;
|
|
}
|
|
$p1 = $p2 = 100;
|
|
if ($s->nachname_alt != null)
|
|
similar_text($s->nachname, $s->nachname_alt, $p1);
|
|
if ($s->vorname_alt != null)
|
|
similar_text($s->vorname, $s->vorname_alt, $p2);
|
|
if (floor($p1) < 75 && floor($p2) < 75) {
|
|
$p1 = $p2 = 100;
|
|
if ($s->nachname_alt != null)
|
|
similar_text($s->vorname, $s->nachname_alt, $p1);
|
|
if ($s->vorname_alt != null)
|
|
similar_text($s->nachname, $s->vorname_alt, $p2);
|
|
if (floor($p1) < 75 && floor($p2) < 75) {
|
|
$import_verweigern = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!$import_verweigern) {
|
|
$query = "SELECT SUM(IF(ISNULL(spieler_id), 0, 1)) AS zugeordnet, SUM(IF(ISNULL(spieler_id), 1, 0)) AS nicht_zugeordnet"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND " . ($spielernr_aendern ? "IF(NOT ISNULL(#__sportsmanager_spieler_import.spielernr_alt) AND #__sportsmanager_spieler_import.spielernr_alt != '', #__sportsmanager_spieler_import.spielernr_alt = #__sportsmanager_spieler.spielernr, #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr)" : "#__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr")
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'";
|
|
$spieler_zugeordnet = loadObjectList($db, $query);
|
|
if (count($spieler_zugeordnet) > 0 && $spieler_zugeordnet[0]->nicht_zugeordnet > ($spieler_zugeordnet[0]->zugeordnet / 2))
|
|
$import_verweigern = true;
|
|
}
|
|
}
|
|
|
|
if ($import_verweigern) {
|
|
adminDeleteSpielerImport($session_id);
|
|
}
|
|
HTML_sportsmanager_admin::adminImportSpielerVorschau($import_verweigern, $spieler_import, $veranstalter, $session_id, $jInput->get('persoenliche_daten', 0, 'INT'), $jInput->get('lizenznr_beibehalten', 0, 'INT'), $jInput->get('spalten', '', 'RAW'));
|
|
}
|
|
|
|
function adminImportSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren");
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
|
|
if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1)
|
|
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
|
else
|
|
$persoenliche_daten = 0;
|
|
$lizenznr_beibehalten = $jInput->get('lizenznr_beibehalten', 0, 'INT');
|
|
|
|
$session_id = $jInput->get('session_id', '', 'RAW');
|
|
$query = "SELECT DISTINCT veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "'"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter_import = loadObjectList($db, $query);
|
|
$spalten = array();
|
|
foreach (explode(",", $jInput->get('spalten', '', 'RAW')) as $s)
|
|
$spalten[$s] = true;
|
|
$veranstalter = array();
|
|
$n = 1;
|
|
$verein_explizit = 0;
|
|
foreach ($veranstalter_import as $v) {
|
|
if (isset($_POST["veranstalter_" . $n . "_id"])) {
|
|
$veranstalter_id = $jInput->get('veranstalter_' . $n . '_id', '', 'INT');
|
|
if (!$beschraenkter_zugriff || (!empty($veranstalter_id) && benutzerVeranstalterModerator($veranstalter_id))) {
|
|
if ($veranstalter_id == "")
|
|
$veranstalter_id = -1;
|
|
else if ($veranstalter_id < 0) {
|
|
$verein_explizit = abs($veranstalter_id);
|
|
break;
|
|
} else
|
|
$veranstalter_id = intval($veranstalter_id);
|
|
$veranstalter[$v->veranstalterbezeichnung] = $veranstalter_id;
|
|
} else {
|
|
$veranstalter[$v->veranstalterbezeichnung] = -1;
|
|
}
|
|
}
|
|
$n++;
|
|
}
|
|
|
|
/*
|
|
* TODO: Importinhalt um Spielernummern ergänzen, dann UPDATE aller gegebenen Spalten. So kein Vorgehen Spieler für Spieler erforderlich.
|
|
* Immer Spieler neu hinzufügen, wenn Spieler über Spielernr. nicht gefunden werden konnte, d.h.
|
|
* wenn keine Spielernr. vorhanden, dann Spielernr. generieren
|
|
* sonst Spielernr. übernehmen
|
|
*/
|
|
if (isset($spalten["spielernr_alt"])) {
|
|
$query = "SELECT nachname, vorname, bestand.spielernr"
|
|
. "\n FROM"
|
|
. "\n (SELECT nachname, vorname, spielernr, spielernr_alt"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '') AS import"
|
|
. "\n INNER JOIN"
|
|
. "\n (SELECT spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n ) AS bestand"
|
|
. "\n ON bestand.spielernr = import.spielernr"
|
|
. "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_spieler_import AS it1 WHERE spielernr_alt = bestand.spielernr AND spielernr != spielernr_alt AND NOT ISNULL(spielernr) AND NOT ISNULL(spielernr_alt) AND spielernr != '' AND spielernr_alt != '')"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$konflikte = loadObjectList($db, $query);
|
|
if (count($konflikte) > 0) {
|
|
HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte, $fehler="konflikt");
|
|
return;
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(spielernr_alt) AND spielernr_alt != '' AND spielernr_alt = #__sportsmanager_spieler.spielernr"
|
|
. "\n SET #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND mitgliedsstatus <> 0 AND #__sportsmanager_spieler.spielernr = #__sportsmanager_spieler_import.spielernr_alt";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT IF(EXISTS("
|
|
. "\n SELECT * FROM #__sportsmanager_spieler"
|
|
. "\n INNER JOIN #__sportsmanager_spieler_import ON NOT ISNULL(#__sportsmanager_spieler_import.spielernr) AND #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr"
|
|
. "\n WHERE #__sportsmanager_spieler_import.geschlecht != #__sportsmanager_spieler.geschlecht OR #__sportsmanager_spieler_import.geburtsjahr != #__sportsmanager_spieler.geburtsjahr"
|
|
. "\n), 1, 0)";
|
|
$kategorie_potentiell_geaendert = loadResult($db, $query);
|
|
|
|
$query = "SELECT #__sportsmanager_spieler_import.*, #__sportsmanager_spieler.spieler_id, IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL) AS nachname_alt, IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL) AS vorname_alt,"
|
|
. "\n IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt1 WHERE (#__sportsmanager_spieler_import.vorname = tt1.vorname AND #__sportsmanager_spieler_import.nachname = tt1.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt1.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt1.geburtsjahr))), 0) AS namensgleich"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_spieler_import.spielernr != '' AND #__sportsmanager_spieler_import.spielernr = #__sportsmanager_spieler.spielernr"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND 1 = 1"
|
|
. "\n ORDER BY IF(#__sportsmanager_spieler_import.spielernr = '', (SELECT COUNT(*) FROM #__sportsmanager_spieler AS tt2 WHERE (#__sportsmanager_spieler_import.vorname = tt2.vorname AND #__sportsmanager_spieler_import.nachname = tt2.nachname AND ((ISNULL(#__sportsmanager_spieler_import.geburtsjahr) AND ISNULL(tt2.geburtsjahr)) OR #__sportsmanager_spieler_import.geburtsjahr = tt2.geburtsjahr))), 0) > 0 DESC, IF(NOT ISNULL(IF(#__sportsmanager_spieler.nachname != #__sportsmanager_spieler_import.nachname, #__sportsmanager_spieler.nachname, NULL)) OR NOT ISNULL(IF(#__sportsmanager_spieler.vorname != #__sportsmanager_spieler_import.vorname, #__sportsmanager_spieler.vorname, NULL)), 0, 1), nachname, vorname";
|
|
$spieler_import = loadObjectList($db, $query);
|
|
if (empty($verein_explizit)) {
|
|
// Alle Vereinsmitgliedschaften des Verbandes vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können
|
|
foreach ($veranstalter as $veranstalterId) {
|
|
if ($veranstalterId != -1) {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n SET mitgliedsstatus = 0,"
|
|
. "\n #__sportsmanager_mitglied_von_verein.ausgetreten = TRUE"
|
|
. "\n WHERE " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
} else if ($verein_explizit != -1) {
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
|
|
// Alle Vereinsmitgliedschaften des Vereins vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET mitgliedsstatus = 0,"
|
|
. "\n ausgetreten = TRUE"
|
|
. "\n WHERE verein_id = $verein_explizit";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Nächste Spieler-Nr. ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0)
|
|
die("Fehler: Inkonsistenz in den MySQL-Tabellen!");
|
|
$naechste_spielernr = $rows[0]->wert;
|
|
if (empty($naechste_spielernr))
|
|
$naechste_spielernr = "1";
|
|
|
|
for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) {
|
|
if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9')
|
|
break;
|
|
}
|
|
$spielernr_praefix = substr($naechste_spielernr, 0, $i + 1);
|
|
|
|
$query = "SELECT spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE Left(spielernr, " . strlen($spielernr_praefix) . ") = '" . $db->escape($spielernr_praefix) . "'"
|
|
. "\n ORDER BY LENGTH(spielernr) DESC, spielernr DESC"
|
|
. "\n LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0) {
|
|
$naechste_spielernr = $rows[0]->spielernr;
|
|
for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) {
|
|
if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') {
|
|
$naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1);
|
|
break;
|
|
}
|
|
if ($naechste_spielernr[$i] <= '8') {
|
|
$naechste_spielernr[$i] = $naechste_spielernr[$i] + 1;
|
|
break;
|
|
}
|
|
// $naechste_spielernr[$i] == '9'
|
|
$naechste_spielernr[$i] = '0';
|
|
}
|
|
if ($i < 0)
|
|
$naechste_spielernr = "1" . $naechste_spielernr;
|
|
}
|
|
|
|
$aktualisierungen = 0;
|
|
$spielerHinzugefuegt = array();
|
|
$vereineHinzugefuegt = 0;
|
|
$vereineManuell = array();
|
|
$spielerIdsHinzugefuegt = array();
|
|
|
|
$organisation = -1;
|
|
$veranstalterId = -1;
|
|
foreach ($spieler_import as $t) {
|
|
// wenn der Spieler ausgetreten ist, dann nicht prüfen
|
|
$mitgliedsstatus = $t->mitgliedsstatus;
|
|
if ($mitgliedsstatus == 0)
|
|
continue;
|
|
|
|
if (empty($verein_explizit)) {
|
|
if ($organisation != $t->veranstalterbezeichnung) {
|
|
$organisation = $t->veranstalterbezeichnung;
|
|
$veranstalterId = $veranstalter[$organisation] ?? -1;
|
|
}
|
|
if ($veranstalterId == -1)
|
|
continue;
|
|
}
|
|
|
|
$spieler_id = $t->spieler_id;
|
|
$nachname = $t->nachname;
|
|
$vorname = $t->vorname;
|
|
$name = $t->vorname . " " . $t->nachname;
|
|
$geschlecht = $t->geschlecht;
|
|
$lizenznr = $t->lizenznr;
|
|
$pseudonym = $t->pseudonym;
|
|
$vereinsname = $t->vereinsname;
|
|
$geburtsjahr = $t->geburtsjahr;
|
|
$email = $t->email;
|
|
$strasse = $t->strasse;
|
|
$plz = $t->plz;
|
|
$ort = $t->ort;
|
|
$landeskennung = $t->landeskennung;
|
|
$telefon = $t->telefon;
|
|
$mobil = $t->mobil;
|
|
$spielernr = $t->spielernr;
|
|
|
|
if ($spieler_id == null && !empty($spielernr) && isset($spielerIdsHinzugefuegt[$spielernr]))
|
|
$spieler_id = $spielerIdsHinzugefuegt[$spielernr]; // Wenn Spieler schon hinzugefügt wurde, dann vorhandenen Eintrag verwenden; verhindert doppeltes Hinterlegen von Spielernr.
|
|
|
|
// Wenn kein Vereinsname angegeben ist, aber eine Organisation gewählt wurde, dann Spieler nicht ergänzen
|
|
if ($spieler_id == null && empty($vereinsname) && empty($verein_explizit))
|
|
continue;
|
|
|
|
// Spieler aktualisieren bzw. ergänzen
|
|
if ($spieler_id != null) { // Spieler aktualisieren
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET vorname = '" . $db->escape($vorname) . "',"
|
|
. "\n nachname = '" . $db->escape($nachname) . "'";
|
|
//. "\n spielernr = '" . $db->escape($spielernr) . "'";
|
|
if (isset($spalten["lizenznr"]) && ($lizenznr_beibehalten == 0 || !empty($lizenznr)))
|
|
$query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'";
|
|
if (isset($spalten["pseudonym"]))
|
|
$query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'";
|
|
if (isset($spalten["geschlecht"]))
|
|
$query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'";
|
|
if ((isset($spalten["geburtsdatum"]) || isset($spalten["geburtsjahr"])) && $geburtsjahr != null)
|
|
$query .= ",\n geburtsjahr = " . ("'" . $db->escape($geburtsjahr) . "'");
|
|
if ($persoenliche_daten == 2) {
|
|
if (isset($spalten["strasse"]))
|
|
$query .= ",\n strasse = '" . $db->escape($strasse) . "'";
|
|
if (isset($spalten["plz"]))
|
|
$query .= ",\n plz = '" . $db->escape($plz) . "'";
|
|
if (isset($spalten["ort"]))
|
|
$query .= ",\n ort = '" . $db->escape($ort) . "'";
|
|
if (isset($spalten["landeskennung"]))
|
|
$query .= ",\n landeskennung = '" . $db->escape($landeskennung) . "'";
|
|
if (isset($spalten["telefon"]))
|
|
$query .= ",\n telefon = '" . $db->escape($telefon) . "'";
|
|
if (isset($spalten["mobil"]))
|
|
$query .= ",\n mobil = '" . $db->escape($mobil) . "'";
|
|
if (isset($spalten["email"]))
|
|
$query .= ",\n email = '" . $db->escape($email) . "'";
|
|
}
|
|
$query .= "\n WHERE spieler_id = $spieler_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$aktualisierungen++;
|
|
} else { // Spieler ergänzen
|
|
// Neuen Spieler anlegen
|
|
$query = "INSERT #__sportsmanager_spieler"
|
|
. "\n SET vorname = '" . $db->escape($vorname) . "'"
|
|
. ",\n nachname = '" . $db->escape($nachname) . "'"
|
|
. ",\n spielernr = '" . $db->escape(!empty($spielernr) ? $spielernr : $naechste_spielernr) . "'"
|
|
. ",\n lizenznr = '" . $db->escape($lizenznr) . "'"
|
|
. ",\n geschlecht = '" . $db->escape($geschlecht) . "'"
|
|
. ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'"));
|
|
if ($persoenliche_daten == 2)
|
|
$query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"
|
|
. ",\n strasse = '" . $db->escape($strasse) . "'"
|
|
. ",\n plz = '" . $db->escape($plz) . "'"
|
|
. ",\n ort = '" . $db->escape($ort) . "'"
|
|
. ",\n landeskennung = '" . $db->escape($landeskennung) . "'"
|
|
. ",\n telefon = '" . $db->escape($telefon) . "'"
|
|
. ",\n mobil = '" . $db->escape($mobil) . "'"
|
|
. ",\n email = '" . $db->escape($email) . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$spieler_id = $db->insertid();
|
|
|
|
$spielerHinzugefuegt[] = array($nachname, $vorname, !empty($spielernr) ? $spielernr : $naechste_spielernr);
|
|
$spielerIdsHinzugefuegt[!empty($spielernr) ? $spielernr : $naechste_spielernr] = $spieler_id;
|
|
|
|
if (empty($spielernr)) {
|
|
do {
|
|
for ($i = strlen($naechste_spielernr) - 1; $i >= 0; $i--) {
|
|
if ($naechste_spielernr[$i] < '0' || $naechste_spielernr[$i] > '9') {
|
|
$naechste_spielernr = substr($naechste_spielernr, 0, $i + 1) . "1" . substr($naechste_spielernr, $i + 1);
|
|
break;
|
|
}
|
|
if ($naechste_spielernr[$i] <= '8') {
|
|
$naechste_spielernr[$i] = $naechste_spielernr[$i] + 1;
|
|
break;
|
|
}
|
|
$naechste_spielernr[$i] = '0';
|
|
}
|
|
if ($i < 0)
|
|
$naechste_spielernr = "1" . $naechste_spielernr;
|
|
} while (isset($spielerIdsHinzugefuegt[$naechste_spielernr]));
|
|
}
|
|
}
|
|
|
|
// Wenn nicht ausgetreten und Vereisname angegeben, dann Vereinsmitgliedschaft herstellen
|
|
if (!empty($vereinsname) || !empty($verein_explizit)) {
|
|
// Prüfen, ob Vereinsmitgliedschaft besteht
|
|
if (!empty($verein_explizit)) {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n WHERE spieler_id = $spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0) {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET mitgliedsstatus = '$mitgliedsstatus',"
|
|
. "\n ausgetreten = FALSE"
|
|
. "\n WHERE spieler_id = $spieler_id AND verein_id = $verein_explizit";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else {
|
|
// Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert
|
|
$query = "SELECT verein_id"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE verein_id = $verein_explizit";
|
|
$rows = loadObjectList($db, $query);
|
|
// Wenn Verein existiert, dann Mitgliedschaft ergänzen
|
|
if (count($rows) > 0) {
|
|
$query = "INSERT #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET spieler_id = $spieler_id, verein_id = $verein_explizit, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
|
|
. "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id"
|
|
. " AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0) {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
|
|
. "\n SET mitgliedsstatus = '$mitgliedsstatus', #__sportsmanager_mitglied_von_verein.ausgetreten = FALSE"
|
|
. "\n WHERE spieler_id = $spieler_id AND vereinsname = '" . $db->escape($vereinsname) . "' AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id"
|
|
. " AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
} else {
|
|
// Vereinsmitgliedschaft besteht nicht, deshalb prüfen, ob Verein überhaupt existiert
|
|
$query = "SELECT verein_id"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE vereinsname = '" . $db->escape($vereinsname) . "'"
|
|
. " AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$rows = loadObjectList($db, $query);
|
|
// Wenn mehrere Vereine existieren, dann Aktualisierung auslassen
|
|
if (count($rows) > 1) {
|
|
$vereineManuell[] = $name;
|
|
continue;
|
|
}
|
|
// Wenn Verein nicht existiert, dann ergänzen
|
|
if (count($rows) == 0) {
|
|
$query = "INSERT #__sportsmanager_verein"
|
|
. "\n SET vereinsname = '" . $db->escape($vereinsname) . "'";
|
|
if (!empty($vereinssitz))
|
|
$query .= ",\n vereinssitz = '" . $db->escape($vereinssitz) . "'";
|
|
$query .= ",\n veranstalter_id = " . ($veranstalterId == 0 ? "NULL" : "$veranstalterId");
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$verein_id = $db->insertid();
|
|
$vereineHinzugefuegt++;
|
|
} // Sonst Verein merken
|
|
else {
|
|
$verein_id = $rows[0]->verein_id;
|
|
}
|
|
|
|
// Vereinsmitgliedschaft setzen
|
|
$query = "INSERT #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET spieler_id = $spieler_id, verein_id = $verein_id, mitgliedsstatus = '$mitgliedsstatus', ausgetreten = FALSE";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$ausgetreteneVereineMitAktivenMitgliedern = array();
|
|
/*
|
|
if ($verein_explizit != 0) {
|
|
// Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied des importierten Vereins waren
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET ausgetreten = TRUE"
|
|
. "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_explizit AND #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id) > 0"
|
|
. " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0"
|
|
. " AND NOT ausgetreten";
|
|
$db->setQuery( $query );
|
|
if (!$db->execute()) { die($db->stderr(true)); }
|
|
}
|
|
else {
|
|
// Alle Spieler austreten lassen, die nicht aktives Mitglied irgendeines Vereins sind, aber Mitglied in einem Verein des Verbandes waren oder sind
|
|
foreach ($veranstalter as $v => $veranstalterId) {
|
|
if ($veranstalterId != -1) {
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET ausgetreten = TRUE"
|
|
. "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId") . ") > 0"
|
|
. " AND (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND NOT t1.ausgetreten) = 0"
|
|
. " AND NOT ausgetreten";
|
|
$db->setQuery( $query );
|
|
if (!$db->execute()) { die($db->stderr(true)); }
|
|
}
|
|
}
|
|
*/
|
|
|
|
if ($verein_explizit == 0) {
|
|
// Vereine der Organisation als ausgetreten notieren, die keine aktiven Mitglieder haben
|
|
foreach ($veranstalter as $veranstalterId) {
|
|
if ($veranstalterId != -1) {
|
|
$query = "UPDATE #__sportsmanager_verein"
|
|
. "\n SET ausgetreten = TRUE"
|
|
. "\n WHERE NOT EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND NOT ausgetreten AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Vereine der Organisation aus nicht ausgetreten notieren, die aktive Mitglieder haben, aber als ausgetreten notiert sind
|
|
foreach ($veranstalter as $v => $veranstalterId) {
|
|
if ($veranstalterId != -1) {
|
|
$query = "SELECT vereinsname"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$rows = loadObjectList($db, $query);
|
|
$query = "UPDATE #__sportsmanager_verein"
|
|
. "\n SET ausgetreten = FALSE"
|
|
. "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AND ausgetreten AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
foreach ($rows as $row)
|
|
$ausgetreteneVereineMitAktivenMitgliedern[] = $row->vereinsname;
|
|
|
|
$query = "SELECT DISTINCT verein_id, #__sportsmanager_spieler_import.vereinsname, #__sportsmanager_spieler_import.vereinssitz"
|
|
. "\n FROM #__sportsmanager_spieler_import"
|
|
. "\n INNER JOIN #__sportsmanager_verein ON #__sportsmanager_verein.vereinsname = #__sportsmanager_spieler_import.vereinsname"
|
|
. "\n WHERE session_id = '" . $db->escape($session_id) . "' AND " . ($v == null ? "ISNULL(#__sportsmanager_spieler_import.veranstalterbezeichnung)" : ("#__sportsmanager_spieler_import.veranstalterbezeichnung = '" . $db->escape($v) . "'")) . " AND #__sportsmanager_spieler_import.vereinsname != '' AND #__sportsmanager_spieler_import.vereinssitz != '' AND (ISNULL(#__sportsmanager_verein.vereinssitz) OR #__sportsmanager_verein.vereinssitz != #__sportsmanager_spieler_import.vereinssitz) AND NOT #__sportsmanager_verein.ausgetreten AND " . ($veranstalterId == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterId");
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "UPDATE #__sportsmanager_verein"
|
|
. "\n SET vereinssitz = '" . $db->escape($row->vereinssitz) . "'"
|
|
. "\n WHERE verein_id = $row->verein_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
adminDeleteSpielerImport($session_id);
|
|
|
|
sort($vereineManuell);
|
|
sort($ausgetreteneVereineMitAktivenMitgliedern);
|
|
|
|
aktuellerVereinAktualisieren();
|
|
if ($kategorie_potentiell_geaendert) {
|
|
ranglisteAktualisieren();
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen());
|
|
}
|
|
|
|
function adminExportSpielerInternationalForm(): void
|
|
{
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff(true);
|
|
|
|
HTML_sportsmanager_admin::adminExportSpielerInternational();
|
|
}
|
|
|
|
function csvFilter($value, $decode = true): string
|
|
{
|
|
if ($value === null)
|
|
return "";
|
|
if ($decode)
|
|
$value = utf8_decode($value);
|
|
$value = str_replace('"', '""', $value);
|
|
|
|
// escape tab characters
|
|
$value = preg_replace("/\t/", "\\t", $value);
|
|
|
|
// escape new lines
|
|
$value = preg_replace("/\r?\n/", "\\n", $value);
|
|
|
|
return '="' . $value . '"';
|
|
}
|
|
|
|
#[NoReturn] function adminExportSpielerInternational(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spieler_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
|
$landeskennung = $db->escape(trim($jInput->get('landeskennung', '', 'RAW')));
|
|
|
|
$query = "SELECT lizenznr, vorname, nachname, spielernr, geschlecht, geburtsjahr";
|
|
if ($persoenliche_daten == 1)
|
|
$query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym";
|
|
$query .= "\n FROM #__sportsmanager_spieler"// . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterId AND NOT t1.ausgetreten AND NOT t2.ausgetreten)"
|
|
. "\n WHERE NOT ISNULL(aktueller_verein_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
redirectSportsManagerURL('&task=admin_spieler_export_international_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!");
|
|
}
|
|
|
|
$dateiname = "Spieler international " . date('Y-m-d') . ".csv";
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
Header("Content-Type: text/x-csv");
|
|
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
|
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
|
|
Header("Pragma: no-cache");
|
|
|
|
$trennzeichen = "\t";
|
|
|
|
$header = "ITSF Number\tGender\tFirst Name\tLAST NAME\tNationality\tYear of birth\tNational Code\tPlayer in wheelchair ?\tE-mail\tCountry of residence\tAddress\tZip/Postal Code\tCity\tPhone\tProfession";
|
|
echo "sep=" . $trennzeichen . "\n" . $header . "\n";
|
|
foreach ($rows as $row) {
|
|
echo csvFilter($row->lizenznr) . $trennzeichen
|
|
. csvFilter($row->geschlecht == "M" ? "M" : "F") . $trennzeichen
|
|
. csvFilter($row->vorname) . $trennzeichen
|
|
. csvFilter($row->nachname) . $trennzeichen
|
|
. csvFilter($landeskennung) . $trennzeichen
|
|
. csvFilter($row->geburtsjahr) . $trennzeichen
|
|
. csvFilter($row->spielernr) . $trennzeichen
|
|
. "N" . $trennzeichen;
|
|
if ($persoenliche_daten == 1) {
|
|
echo csvFilter($row->email) . $trennzeichen
|
|
. csvFilter($row->landeskennung) . $trennzeichen
|
|
. csvFilter($row->strasse) . $trennzeichen
|
|
. csvFilter($row->plz) . $trennzeichen
|
|
. csvFilter($row->ort) . $trennzeichen
|
|
. csvFilter($row->telefon) . $trennzeichen
|
|
. "\n";
|
|
} else {
|
|
echo $trennzeichen
|
|
. $trennzeichen
|
|
. $trennzeichen
|
|
. $trennzeichen
|
|
. $trennzeichen
|
|
. $trennzeichen
|
|
. "\n";
|
|
}
|
|
}
|
|
die();
|
|
}
|
|
|
|
function adminExportSpielerForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren");
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)";
|
|
if ($beschraenkter_zugriff)
|
|
$query .= " AND" . veranstalterFilter("veranstalter_id IN");
|
|
$query .= "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
if (!$beschraenkter_zugriff) {
|
|
$query = "SELECT #__sportsmanager_verein.verein_id, vereinsname, veranstalterbezeichnung"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE NOT ausgetreten AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = #__sportsmanager_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)"
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
} else {
|
|
$vereine = array();
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminExportSpieler($beschraenkter_zugriff, $ansprechpartner_exportieren, $veranstalter, $vereine);
|
|
}
|
|
|
|
#[NoReturn] function adminExportSpieler(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_exportieren = einstellungswert("ansprechpartner_exportieren");
|
|
|
|
$beschraenkter_zugriff = null;
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (($ansprechpartner_exportieren == 1 || $ansprechpartner_exportieren == 2) && benutzerVeranstalterModerator())
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
$veranstalterId = $jInput->get('veranstalterid', 0, 'INT');
|
|
if ($beschraenkter_zugriff) {
|
|
if (!benutzerVeranstalterModerator($veranstalterId))
|
|
$veranstalterId = 0;
|
|
$verein_explizit = 0;
|
|
$ausgetretene = 0;
|
|
if ($ansprechpartner_exportieren != 1)
|
|
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
|
else
|
|
$persoenliche_daten = 0;
|
|
$organisatorische_daten = 0;
|
|
$statistische_daten = 1;
|
|
} else {
|
|
$verein_explizit = $veranstalterId < 0 ? abs($veranstalterId) : 0;
|
|
|
|
$ausgetretene = $jInput->get('ausgetretene', 0, 'INT'); // "Nein", "Ja"
|
|
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
|
|
$organisatorische_daten = $jInput->get('organisatorische_daten', 0, 'INT'); // 0: "Verein, Vereinssitz, Wettbewerb, Mannschaft, Ausgetreten", 1: "Ausgetreten"
|
|
$statistische_daten = $jInput->get('statistische_daten', 0, 'INT'); // 0: "Elo-Werte, Kategorie, Zuletzt gespielt", 1: "Kategorie", 2: "Keine"
|
|
}
|
|
|
|
$verein = null;
|
|
$veranstalter = null;
|
|
if ($verein_explizit != 0) {
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$verein = $rows[0];
|
|
} else if ($veranstalterId != 0) {
|
|
$query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$veranstalter = $rows[0];
|
|
}
|
|
|
|
$jahr = date("Y");
|
|
$query = "SELECT nachname, vorname, spielernr, lizenznr, lizenz, geschlecht";
|
|
if ($statistische_daten != 2)
|
|
$query .= ",\n IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie";
|
|
if ($organisatorische_daten != 2)
|
|
$query .= ",\n vereinsname as verein, vereinssitz, veranstalterbezeichnung as organisation, IF(mitgliedsstatus = 1, 'Aktiv', IF(mitgliedsstatus = 0, 'Ausgetreten', IF(mitgliedsstatus = 2, 'Eingeschränkt', 'Passiv'))) AS mitgliedsstatus";
|
|
else if ($ausgetretene != 0)
|
|
$query .= ", IF(ISNULL(aktueller_verein_id), 'Ausgetreten', 'Aktiv') as mitgliedsstatus";
|
|
$query .= ",\n geburtsjahr";
|
|
if ($persoenliche_daten == 2)
|
|
$query .= ",\n email, strasse, plz, ort, landeskennung, telefon, mobil, pseudonym";
|
|
if ($organisatorische_daten == 1)
|
|
$query .= ",\n (SELECT bezeichnung FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS wettbewerb,"
|
|
. "\n (SELECT teamname FROM #__sportsmanager_mitglied_von_team, #__sportsmanager_team, #__sportsmanager_veranstaltung WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_team.spieler_id AND NOT #__sportsmanager_mitglied_von_team.ausgetreten AND #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id AND #__sportsmanager_veranstaltung.status > 0 AND CURDATE() BETWEEN erster_tag AND letzter_tag ORDER BY YEAR(#__sportsmanager_veranstaltung.letzter_tag) DESC, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie LIMIT 1) AS mannschaft";
|
|
if ($statistische_daten == 0)
|
|
$query .= ",\n zuletzt_gespielt, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele";
|
|
$query .= "\n FROM #__sportsmanager_spieler";
|
|
if ($organisatorische_daten != 2) {
|
|
$query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)";
|
|
}
|
|
|
|
if ($verein_explizit != 0) {
|
|
if ($ausgetretene != 0)
|
|
$query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit";
|
|
else
|
|
$query .= "\n WHERE #__sportsmanager_verein.verein_id = $verein_explizit AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten";
|
|
} else if ($veranstalterId != 0) {
|
|
if ($ausgetretene != 0) {
|
|
if ($organisatorische_daten == 0)
|
|
$query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterId";
|
|
else
|
|
$query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterId) > 0";
|
|
} else {
|
|
if ($organisatorische_daten == 0)
|
|
$query .= "\n WHERE #__sportsmanager_verein.veranstalter_id = $veranstalterId AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten";
|
|
else
|
|
$query .= "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_verein AS t2 USING (verein_id) WHERE t1.spieler_id = #__sportsmanager_spieler.spieler_id AND t2.veranstalter_id = $veranstalterId AND NOT t1.ausgetreten AND NOT t2.ausgetreten)";
|
|
}
|
|
} else if ($ausgetretene == 0) {
|
|
$query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
|
|
if ($organisatorische_daten == 0)
|
|
$query .= " AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten";
|
|
}
|
|
if ($organisatorische_daten == 0)
|
|
$query .= "\n ORDER BY nachname, vorname, IF(ISNULL(IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL)), 1, 0), IF(ISNULL(aktueller_verein_id), #__sportsmanager_mitglied_von_verein.ausgetreten, NULL), verein";
|
|
else
|
|
$query .= "\n ORDER BY nachname, vorname";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
redirectSportsManagerURL('&task=admin_spieler_export_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!");
|
|
}
|
|
|
|
$dateiname = "Spieler";
|
|
if ($verein_explizit != 0)
|
|
$dateiname .= " " . utf8_decode($verein->vereinsname);
|
|
else if ($veranstalterId != 0)
|
|
$dateiname .= " " . utf8_decode($veranstalter->veranstalterbezeichnung);
|
|
$dateiname .= " " . date('Y-m-d') . ".csv";
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
Header("Content-Type: text/x-csv");
|
|
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
|
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
|
|
Header("Pragma: no-cache");
|
|
|
|
$trennzeichen = "\t";
|
|
|
|
$header = "";
|
|
foreach ($rows[0] as $field => $value)
|
|
$header .= $field . $trennzeichen;
|
|
|
|
$data = "";
|
|
foreach ($rows as $row) {
|
|
$line = '';
|
|
foreach ($row as $value) {
|
|
if ((!isset($value)) or ($value == "")) {
|
|
$value = $trennzeichen;
|
|
} else {
|
|
$value = str_replace('"', '""', $value);
|
|
$value = str_replace("\t", ' ', $value);
|
|
$value = str_replace("\r", '', $value);
|
|
$value = str_replace("\n", ' ', $value);
|
|
$value = '="' . $value . '"' . $trennzeichen;
|
|
}
|
|
$line .= $value;
|
|
}
|
|
$data .= trim($line) . "\n";
|
|
}
|
|
$data = str_replace("\r", "", $data);
|
|
|
|
echo "sep=" . $trennzeichen . "\n" . $header . "\n" . utf8_decode($data);
|
|
|
|
die();
|
|
}
|
|
|
|
#[NoReturn] function adminExportSpielerSport(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("spieler_aendern") && !benutzerVeranstalterModerator())
|
|
keinZugriff(true);
|
|
|
|
$jahr = date("Y");
|
|
$query = "SELECT *,"
|
|
. " IF(ISNULL(geburtsjahr), IF(geschlecht = 'M', 'H', 'D'), IF(" . ($jahr - 18) . " <= geburtsjahr, 'J', IF(" . ($jahr - 50) . " > geburtsjahr, 'S', IF(geschlecht = 'M', 'H', 'D')))) AS kategorie, vereinsname"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n INNER JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$rows = loadObjectList($db, $query);
|
|
$dateiname = "Spieler " . date('Y-m-d') . ".csv";
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
Header("Content-Type: text/x-csv; charset=utf-8;");
|
|
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
|
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
|
|
Header("Pragma: no-cache");
|
|
echo "NAME#VORNAME#GESCHLECHT#VEREIN#STRASSE#PLZ/ORT#TELEFON#FAX#MOBILE#EMAIL#BEMERKUNG#SPIELERPASS#GEBURTSDATUM\r\n";
|
|
|
|
$wiederholung_zaehler = 0;
|
|
foreach ($rows as $index => $row) {
|
|
$spielernr = $row->spielernr != null && $row->spielernr != "" ? $row->spielernr : "N/A";
|
|
$lizenznr = $row->lizenznr != null && $row->lizenznr != "" ? $row->lizenznr : "N/A";
|
|
$kategorie = array("H" => "Herren", "D" => "Damen", "J" => "Junioren", "S" => "Senioren");
|
|
$kommentar = $kategorie[$row->kategorie];
|
|
if ($lizenznr != null && $row->lizenznr != "")
|
|
$kommentar .= " / " . $lizenznr;
|
|
$vorname = $row->vorname;
|
|
$nachname = $row->nachname;
|
|
$naechster_name = isset($rows[$index + 1]) ? ($rows[$index + 1]->nachname . ", " . $rows[$index + 1]->vorname) : null;
|
|
$name = $nachname . ", " . $vorname;
|
|
if ($name == $naechster_name || $wiederholung_zaehler > 0) // Sports Manager macht einen case sensitive-Vergleich
|
|
$vorname .= " (" . ($wiederholung_zaehler + 1) . ")";
|
|
if ($name == $naechster_name)
|
|
$wiederholung_zaehler++;
|
|
else
|
|
$wiederholung_zaehler = 0;
|
|
echo utf8_decode($nachname . "#" . $vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#"
|
|
. ($row->vereinsname != null ? $row->vereinsname : "Keiner") . "#######" . $kommentar . "#" . $spielernr . "#\r\n");
|
|
}
|
|
die();
|
|
}
|
|
|
|
function adminVereine(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten";
|
|
$organisationAnzeigen = loadResult($db, $query) > 1;
|
|
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten) AS mitglieder"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, ausgetreten, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen);
|
|
}
|
|
|
|
function adminEditVerein(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$row = null;
|
|
if ($id == null) {
|
|
$berechtigt_fuer_verein = null;
|
|
$vereinsansprechpartner = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
|
|
$query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_verein AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_verein_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_verein = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id ORDER BY vereinsansprechpartner_id";
|
|
$vereinsansprechpartner = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditVerein($row, $users, $veranstalter, $berechtigt_fuer_verein, $vereinsansprechpartner);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVerein(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vereinsname = $db->escape(trim($jInput->get('vereinsname', '', 'RAW')));
|
|
$vereinssitz = $db->escape(trim($jInput->get('vereinssitz', '', 'RAW')));
|
|
$vereinssitz_ortsteil = $db->escape(trim($jInput->get('vereinssitz_ortsteil', '', 'RAW')));
|
|
$veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT');
|
|
$url = $db->escape(trim($jInput->get('url', '', 'RAW')));
|
|
$beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW')));
|
|
$ausgetreten = $jInput->get('ausgetreten', 0, 'INT');
|
|
$verstecken = $jInput->get('verstecken', 0, 'INT');
|
|
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
|
|
|
|
$berechtigt_fuer_verein_user_ids = array($jInput->get('berechtigt_fuer_verein_user_1_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_verein_user_2_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_verein_user_3_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_verein_user_4_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_verein_user_5_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_verein_user_6_id', 0, 'INT'));
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_vereine#id' . $id);
|
|
}
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten, verstecken)"
|
|
. "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ", $verstecken);";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_verein"
|
|
. "\n SET vereinsname = '$vereinsname',"
|
|
. "\n vereinssitz = '$vereinssitz',"
|
|
. "\n vereinssitz_ortsteil = '$vereinssitz_ortsteil',"
|
|
. "\n veranstalter_id = " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ","
|
|
. "\n url = '$url',"
|
|
. "\n beschreibung = '$beschreibung',"
|
|
. "\n ausgetreten = " . ($ausgetreten ? "TRUE" : "FALSE") . ","
|
|
. "\n verstecken = '$verstecken'"
|
|
. "\n WHERE verein_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Vereinsvertreter speichern
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_verein_user_ids[5];";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
for ($nummer = 0; $nummer <= 5; $nummer++) {
|
|
$berechtigt_user_id = $berechtigt_fuer_verein_user_ids[$nummer];
|
|
if ($berechtigt_user_id != 0) {
|
|
$gefunden = false;
|
|
foreach ($rows as $row) {
|
|
if ($row->berechtigt_user_id == $berechtigt_user_id)
|
|
$gefunden = true;
|
|
}
|
|
if (!$gefunden) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_verein (berechtigt_user_id, berechtigt_verein_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Ansprechpartner speichern
|
|
|
|
for ($nummer = 1; $nummer <= 3; $nummer++) {
|
|
$vereinsansprechpartner_id = $jInput->get('vereinsansprechpartner_' . $nummer . '_id', 0, 'INT');
|
|
$vereinsansprechpartner_vorname = trim($jInput->get('vereinsansprechpartner_' . $nummer . '_vorname', '', 'RAW'));
|
|
$vereinsansprechpartner_nachname = trim($jInput->get('vereinsansprechpartner_' . $nummer . '_nachname', '', 'RAW'));
|
|
$vereinsansprechpartner_telefon = trim($jInput->get('vereinsansprechpartner_' . $nummer . '_telefon', '', 'RAW'));
|
|
$vereinsansprechpartner_mobil = trim($jInput->get('vereinsansprechpartner_' . $nummer . '_mobil', '', 'RAW'));
|
|
$vereinsansprechpartner_email = trim($jInput->get('vereinsansprechpartner_' . $nummer . '_email', '', 'RAW'));
|
|
|
|
if ($vereinsansprechpartner_id == 0) {
|
|
if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_vereinsansprechpartner (verein_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$vereinsansprechpartner_vorname', '$vereinsansprechpartner_nachname', '$vereinsansprechpartner_telefon', '$vereinsansprechpartner_mobil', '$vereinsansprechpartner_email');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (strlen($vereinsansprechpartner_vorname) > 0 || strlen($vereinsansprechpartner_nachname) > 0) {
|
|
$query = "UPDATE #__sportsmanager_vereinsansprechpartner"
|
|
. "\n SET vorname = '$vereinsansprechpartner_vorname',"
|
|
. "\n nachname = '$vereinsansprechpartner_nachname',"
|
|
. "\n telefon = '$vereinsansprechpartner_telefon',"
|
|
. "\n mobil = '$vereinsansprechpartner_mobil',"
|
|
. "\n email = '$vereinsansprechpartner_email'"
|
|
. "\n WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id";
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id;";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($bildbeibehalten == 0) {
|
|
bildLoeschen("vereine", $id);
|
|
|
|
if (!empty($_FILES["bild"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt.");
|
|
}
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine';
|
|
if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 240, 240, 0)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Das Bild konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
aktuellerVereinAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_vereine#id' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVerein(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "UPDATE #__sportsmanager_team SET verein_id = NULL WHERE verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_rechnung SET verein_id = NULL WHERE verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("vereine", $id);
|
|
|
|
aktuellerVereinAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_vereine');
|
|
}
|
|
|
|
function adminVereineZusammenlegenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname, ausgetreten";
|
|
$vereine = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVereineZusammenlegen($vereine);
|
|
}
|
|
|
|
#[NoReturn] function adminVereineZusammenlegen(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_vereine');
|
|
}
|
|
|
|
$verein_beizubehalten_id = $jInput->get('verein_beizubehalten_id', 0, 'INT');
|
|
$verein_zu_entfernen_id = $jInput->get('verein_zu_entfernen_id', 0, 'INT');
|
|
|
|
if ($verein_beizubehalten_id == $verein_zu_entfernen_id) {
|
|
redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Vereine gewählt werden");
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET verein_id = $verein_beizubehalten_id"
|
|
. "\n WHERE verein_id = $verein_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT mitglied_von_verein_id, ausgetreten, spieler_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein_beizubehalten_id"
|
|
. "\n ORDER BY spieler_id, IF(ausgetreten, 1, 0), ausgetreten DESC";
|
|
$rows = loadObjectList($db, $query);
|
|
$spieler_id = null;
|
|
foreach ($rows as $row) {
|
|
if ($row->spieler_id == $spieler_id) {
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $row->mitglied_von_verein_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else
|
|
$spieler_id = $row->spieler_id;
|
|
}
|
|
|
|
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET verein_id = $verein_beizubehalten_id"
|
|
. "\n WHERE verein_id = $verein_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_rechnung"
|
|
. "\n SET verein_id = $verein_beizubehalten_id"
|
|
. "\n WHERE verein_id = $verein_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $verein_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $verein_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $verein_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("vereine", $verein_zu_entfernen_id);
|
|
|
|
aktuellerVereinAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id);
|
|
}
|
|
|
|
function adminVereinsmitglieder(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$vereinId = $jInput->get('vereinid', 0, 'INT');
|
|
if ($vereinId == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinId";
|
|
$vereine = loadObjectList($db, $query);
|
|
if (count($vereine) < 1) die ("Wrong id");
|
|
$verein = $vereine[0];
|
|
|
|
$berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern");
|
|
|
|
$query = "SELECT mitglied_von_verein_id, mitgliedsstatus, vorname, nachname, spielernr, #__sportsmanager_spieler.spieler_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $vereinId"
|
|
. "\n ORDER BY IF(mitgliedsstatus <> 0, 0, 1), mitgliedsstatus, nachname, vorname";
|
|
$vereinsmitglieder = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVereinsmitglieder($verein, $vereinsmitglieder, $berechtigt_spieler_aendern);
|
|
}
|
|
|
|
function adminEditVereinsmitglied(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vereinId = $jInput->get('vereinid', 0, 'INT');
|
|
|
|
$row = null;
|
|
if ($id !== 0) {
|
|
$query = "SELECT t1.*, t2.vorname, t2.nachname FROM #__sportsmanager_mitglied_von_verein AS t1 LEFT JOIN #__sportsmanager_spieler AS t2 ON t1.spieler_id = t2.spieler_id WHERE mitglied_von_verein_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinId";
|
|
$vereine = loadObjectList($db, $query);
|
|
if (count($vereine) < 1) die ("Wrong id");
|
|
$verein = $vereine[0];
|
|
|
|
$query = "SELECT spieler_id, vorname, nachname, spielernr FROM #__sportsmanager_spieler ORDER BY nachname, vorname, spielernr";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditVereinsmitglied($row, $verein, $spieler);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVereinsmitglied(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerId = $jInput->get('spielerid', 0, 'INT');
|
|
$vereinId = $jInput->get('vereinid', 0, 'INT');
|
|
$mitgliedsstatus = $jInput->get('mitgliedsstatus', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinId);
|
|
}
|
|
|
|
if (empty($id)) {
|
|
$query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$spielerId', '$vereinId', '1', FALSE);";
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_verein"
|
|
. "\n SET mitgliedsstatus = '" . $mitgliedsstatus . "',"
|
|
. "\n ausgetreten = " . ($mitgliedsstatus == 0 ? "TRUE" : "FALSE")
|
|
. "\n WHERE mitglied_von_verein_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
aktuellerVereinAktualisieren($spielerId);
|
|
|
|
redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinId);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVereinsmitglied(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vereinId = $jInput->get('vereinid', 0, 'INT');
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE mitglied_von_verein_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
aktuellerVereinAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinId);
|
|
}
|
|
|
|
function adminSpielorte(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielorte($spielorte);
|
|
}
|
|
|
|
function adminEditSpielort(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$row = null;
|
|
if ($id !== null) {
|
|
$query = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditSpielort($row);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSpielort(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$name = $db->escape(trim($jInput->get('name', '', 'RAW')));
|
|
$strasse = $db->escape(trim($jInput->get('strasse', '', 'RAW')));
|
|
$plz = $db->escape(trim($jInput->get('plz', '', 'RAW')));
|
|
$ortsname = $db->escape(trim($jInput->get('ortsname', '', 'RAW')));
|
|
$ortsteil = $db->escape(trim($jInput->get('ortsteil', '', 'RAW')));
|
|
$url = $db->escape(trim($jInput->get('url', '', 'RAW')));
|
|
$beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW')));
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spielorte#id' . $id);
|
|
}
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_spielort (name, strasse, plz, ortsname, ortsteil, url, beschreibung, status)"
|
|
. "\n VALUES ('$name', '$strasse', '$plz', '$ortsname', '$ortsteil', '$url', '$beschreibung', '$status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_spielort"
|
|
. "\n SET name = '$name',"
|
|
. "\n strasse = '$strasse',"
|
|
. "\n plz = '$plz',"
|
|
. "\n ortsname = '$ortsname',"
|
|
. "\n ortsteil = '$ortsteil',"
|
|
. "\n url = '$url',"
|
|
. "\n beschreibung = '$beschreibung',"
|
|
. "\n status = '$status'"
|
|
. "\n WHERE spielort_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_spielorte#id' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSpielort(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "UPDATE #__sportsmanager_team SET heimspielort_id = NULL WHERE heimspielort_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_begegnung SET spielort_id = NULL WHERE spielort_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_spielorte');
|
|
}
|
|
|
|
function adminSpielorteZusammenlegenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielorteZusammenlegen($spielorte);
|
|
}
|
|
|
|
#[NoReturn] function adminSpielorteZusammenlegen(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielorte_aendern"))
|
|
keinZugriff(true);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spielorte');
|
|
}
|
|
|
|
$spielort_beizubehalten_id = $jInput->get('spielort_beizubehalten_id', 0, 'INT');
|
|
$spielort_zu_entfernen_id = $jInput->get('spielort_zu_entfernen_id', 0, 'INT');
|
|
|
|
if ($spielort_beizubehalten_id == $spielort_zu_entfernen_id) {
|
|
redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id, "Zum Zusammanlegen müssen zwei unterschiedliche Spielorte gewählt werden");
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET heimspielort_id = $spielort_beizubehalten_id"
|
|
. "\n WHERE heimspielort_id = $spielort_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET spielort_id = $spielort_beizubehalten_id"
|
|
. "\n WHERE spielort_id = $spielort_zu_entfernen_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $spielort_zu_entfernen_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id);
|
|
}
|
|
|
|
function adminEinstufungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("einstufungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_einstufung_rangliste WHERE #__sportsmanager_einstufung.einstufung_id = #__sportsmanager_einstufung_rangliste.einstufung_id) AS ranglisten"
|
|
. "\n FROM #__sportsmanager_einstufung"
|
|
. "\n ORDER BY typ, prioritaet, bezeichnung";
|
|
$einstufungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEinstufungen($einstufungen);
|
|
}
|
|
|
|
function adminEditEinstufung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("einstufungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$row = null;
|
|
if ($id !== null) {
|
|
$query = "SELECT * FROM #__sportsmanager_einstufung WHERE einstufung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
}
|
|
|
|
// Ranglisten ermitteln
|
|
if ($id == 0) {
|
|
$query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, ranglisten.einstufung_rangliste_id, ranglisten.platz_min, ranglisten.platz_max, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT rangliste_id, einstufung_rangliste_id, platz_min, platz_max FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id) AS ranglisten USING (rangliste_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
}
|
|
$ranglisten = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditEinstufung($row, $ranglisten);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveEinstufung(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("einstufungen_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$prioritaet = $jInput->get('prioritaet', 0, 'INT');
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
$elo_min = $jInput->get('elo_min', 0, 'INT');
|
|
$elo_max = $jInput->get('elo_max', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_einstufungen#id' . $id);
|
|
}
|
|
|
|
$ranglisten_beruecksichtigt = array();
|
|
$ranglisten_beruecksichtigt_platz_min = array();
|
|
$ranglisten_beruecksichtigt_platz_max = array();
|
|
$i = 0;
|
|
$rangliste_id = $jInput->get('rangliste_id_' . $i, 0, 'INT');
|
|
$rangliste_platz_min = $jInput->get('rangliste_platz_min_' . $i, 0, 'INT');
|
|
$rangliste_platz_max = $jInput->get('rangliste_platz_max_' . $i, 0, 'INT');
|
|
while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) {
|
|
$ranglisten_beruecksichtigt[] = $rangliste_id;
|
|
$ranglisten_beruecksichtigt_platz_min[] = $rangliste_platz_min;
|
|
$ranglisten_beruecksichtigt_platz_max[] = $rangliste_platz_max;
|
|
$i++;
|
|
$rangliste_id = $jInput->get('rangliste_id_' . $i, 0, 'INT');
|
|
$rangliste_platz_min = $jInput->get('rangliste_platz_min_' . $i, 0, 'INT');
|
|
$rangliste_platz_max = $jInput->get('rangliste_platz_max_' . $i, 0, 'INT');
|
|
}
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_einstufung (bezeichnung, prioritaet, typ, elo_min, elo_max)"
|
|
. "\n VALUES ('$bezeichnung', '$prioritaet', '$typ', '$elo_min', '$elo_max');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_einstufung"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n prioritaet = '$prioritaet',"
|
|
. "\n typ = '$typ',"
|
|
. "\n elo_min = '$elo_min',"
|
|
. "\n elo_max = '$elo_max'"
|
|
. "\n WHERE einstufung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Berücksichtige Ranglisten prüfen und ggf. aktualisieren
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_einstufung_rangliste"
|
|
. "\n WHERE einstufung_id = $id";
|
|
$bestehende_ranglisten_beruecksichtigt = loadObjectList($db, $query);
|
|
foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) {
|
|
$ist_beruecksichtigt = false;
|
|
foreach ($ranglisten_beruecksichtigt as $rangliste_id) {
|
|
if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) {
|
|
$ist_beruecksichtigt = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_beruecksichtigt) {
|
|
$query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND einstufung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) {
|
|
$ist_beruecksichtigt = false;
|
|
$bestehende_rangliste_platz_min = null;
|
|
$bestehende_rangliste_platz_max = null;
|
|
foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) {
|
|
if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) {
|
|
$ist_beruecksichtigt = true;
|
|
$bestehende_rangliste_platz_min = $bestehende_rangliste_beruecksichtigt->platz_min;
|
|
$bestehende_rangliste_platz_max = $bestehende_rangliste_beruecksichtigt->platz_max;
|
|
break;
|
|
}
|
|
}
|
|
$platz_min = $ranglisten_beruecksichtigt_platz_min[$index];
|
|
$platz_max = $ranglisten_beruecksichtigt_platz_max[$index];
|
|
if (!$ist_beruecksichtigt) {
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n WHERE rangliste_id = $rangliste_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_einstufung_rangliste (einstufung_id, rangliste_id, platz_min, platz_max) VALUES ('$id', '$rangliste_id', '$platz_min', '$platz_max');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else if ($platz_min != $bestehende_rangliste_platz_min || $platz_max != $bestehende_rangliste_platz_max) {
|
|
$query = "UPDATE #__sportsmanager_einstufung_rangliste"
|
|
. "\n SET platz_min = '$platz_min',"
|
|
. "\n platz_max = '$platz_max'"
|
|
. "\n WHERE einstufung_id = $id AND rangliste_id = $rangliste_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_einstufungen#id' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveEinstufung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("einstufungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE einstufung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_einstufung WHERE einstufung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_einstufungen');
|
|
}
|
|
|
|
function einstufungAktualisieren($berechnungen_auswerten = false): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if ($berechnungen_auswerten) {
|
|
$session_id = redirectRequestGetSessionId();
|
|
|
|
$query = "SELECT IF(EXISTS("
|
|
. "\n SELECT *"
|
|
. "\n FROM #__sportsmanager_berechnung"
|
|
. "\n WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"))
|
|
. "\n ), 1, 0)";
|
|
$berechnungen = loadResult($db, $query);
|
|
|
|
if (empty($berechnungen) || laufzeit() >= 5) {
|
|
return;
|
|
}
|
|
} else if (!redirectSessionIdEmpty() || laufzeit() >= 5) {
|
|
$session_id = redirectSessionIdSetzen();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_berechnung (session_id, typ, id) VALUES ('$session_id', 'einstufung', NULL);";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
$query = "SELECT einstufung_id, prioritaet, typ, elo_min, elo_max"
|
|
. "\n FROM #__sportsmanager_einstufung";
|
|
$rows = loadObjectList($db, $query);
|
|
$einstufung_prioritaet = array();
|
|
$einstufung_typ = array();
|
|
foreach ($rows as $row) {
|
|
$einstufung_prioritaet[$row->einstufung_id] = $row->prioritaet;
|
|
$einstufung_typ[$row->einstufung_id] = $row->typ;
|
|
}
|
|
|
|
$spieler_einstufung_allgemein = array();
|
|
$spieler_einstufung_einzel = array();
|
|
$spieler_einstufung_doppel = array();
|
|
$query = "SELECT rangliste_id, einstufung_id, platz_min, platz_max"
|
|
. "\n FROM #__sportsmanager_einstufung_rangliste"
|
|
. "\n ORDER BY rangliste_id, platz_min, platz_max";
|
|
$einstufung_ranglisten = loadObjectList($db, $query);
|
|
$einstufungen_per_ranglisten = array();
|
|
foreach ($einstufung_ranglisten as $einstufung_rangliste) {
|
|
$platz_min = $einstufung_rangliste->platz_min;
|
|
$platz_max = $einstufung_rangliste->platz_max;
|
|
if (empty($platz_min) && empty($platz_max))
|
|
continue;
|
|
if (!isset($einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id]))
|
|
$einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id] = array();
|
|
$einstufungen_per_ranglisten[$einstufung_rangliste->rangliste_id][] = array($einstufung_rangliste->einstufung_id, $platz_min, $platz_max);
|
|
}
|
|
|
|
foreach ($einstufungen_per_ranglisten as $rangliste_id => $einstufung) {
|
|
$query = "SELECT spieler_id, platz"
|
|
. "\n FROM #__sportsmanager_rangliste_punkte"
|
|
. "\n WHERE rangliste_id = $rangliste_id"
|
|
. "\n ORDER BY platz";
|
|
$rangliste_punkte = loadObjectList($db, $query);
|
|
foreach ($rangliste_punkte as $punkte) {
|
|
foreach ($einstufung as $einstufung_platzierung) {
|
|
$platz_min = $einstufung_platzierung[1];
|
|
$platz_max = $einstufung_platzierung[2];
|
|
if (($punkte->platz >= $platz_min || $platz_min == 0) && ($punkte->platz <= $platz_max || $platz_max == 0)) {
|
|
$einstufung_id = $einstufung_platzierung[0];
|
|
if ($einstufung_typ[$einstufung_id] == 0) {
|
|
if (!isset($spieler_einstufung_allgemein[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_allgemein[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id]))
|
|
$spieler_einstufung_allgemein[$punkte->spieler_id] = $einstufung_id;
|
|
} else if ($einstufung->typ == 1) {
|
|
if (!isset($spieler_einstufung_einzel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_einzel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id]))
|
|
$spieler_einstufung_einzel[$punkte->spieler_id] = $einstufung_id;
|
|
} else {
|
|
if (!isset($spieler_einstufung_doppel[$punkte->spieler_id]) || ($einstufung_prioritaet[$spieler_einstufung_doppel[$punkte->spieler_id]] > $einstufung_prioritaet[$einstufung_id]))
|
|
$spieler_einstufung_doppel[$punkte->spieler_id] = $einstufung_id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "SELECT spieler_id, elo_einzel, elo_doppel"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE NOT ISNULL(elo_einzel) OR NOT ISNULL(elo_doppel) OR elo_einzel > 0 OR elo_doppel > 0";
|
|
$spieler = loadObjectList($db, $query);
|
|
foreach ($spieler as $s) {
|
|
$spieler_id = $s->spieler_id;
|
|
$elo_einzel = $s->elo_einzel;
|
|
$elo_doppel = $s->elo_doppel;
|
|
foreach ($rows as $einstufung) {
|
|
$einstufung_id = $einstufung->einstufung_id;
|
|
$elo_min = $einstufung->elo_min;
|
|
$elo_max = $einstufung->elo_max;
|
|
if (empty($elo_min) && empty($elo_max))
|
|
continue;
|
|
if ($einstufung_typ[$einstufung_id] == 0) {
|
|
if (($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max)))
|
|
|| ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max)))) {
|
|
if (!isset($spieler_einstufung_allgemein[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_allgemein[$spieler_id]]))
|
|
$spieler_einstufung_allgemein[$spieler_id] = $einstufung_id;
|
|
}
|
|
} else if ($einstufung->typ == 1) {
|
|
if ($elo_einzel > 0 && ($elo_einzel >= $elo_min || empty($elo_min)) && ($elo_einzel <= $elo_max || empty($elo_max))) {
|
|
if (!isset($spieler_einstufung_einzel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_einzel[$spieler_id]]))
|
|
$spieler_einstufung_einzel[$spieler_id] = $einstufung_id;
|
|
}
|
|
} else {
|
|
if ($elo_doppel > 0 && ($elo_doppel >= $elo_min || empty($elo_min)) && ($elo_doppel <= $elo_max || empty($elo_max))) {
|
|
if (!isset($spieler_einstufung_doppel[$spieler_id]) || ($einstufung_prioritaet[$einstufung_id] > $einstufung_prioritaet[$spieler_einstufung_doppel[$spieler_id]]))
|
|
$spieler_einstufung_doppel[$spieler_id] = $einstufung_id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$db->transactionStart();
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET einstufung_allgemein_id = NULL,"
|
|
. "\n einstufung_einzel_id = NULL,"
|
|
. "\n einstufung_doppel_id = NULL";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$spieler_ids = array_keys($spieler_einstufung_allgemein) + array_keys($spieler_einstufung_einzel) + array_keys($spieler_einstufung_doppel);
|
|
foreach ($spieler_ids as $spieler_id) {
|
|
$query = "UPDATE #__sportsmanager_spieler"
|
|
. "\n SET einstufung_allgemein_id = " . ($spieler_einstufung_allgemein[$spieler_id] ?? "NULL") . ","
|
|
. "\n einstufung_einzel_id = " . ($spieler_einstufung_einzel[$spieler_id] ?? "NULL") . ","
|
|
. "\n einstufung_doppel_id = " . ($spieler_einstufung_doppel[$spieler_id] ?? "NULL");
|
|
$query .= "\n WHERE spieler_id = $spieler_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
$db->transactionCommit();
|
|
|
|
if ($berechnungen_auswerten) {
|
|
$query = "DELETE FROM #__sportsmanager_berechnung WHERE typ = 'einstufung' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"));
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
function adminTeamspielmodi(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("mannschaftsspielplaene_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE teamspiel_modus_id = modus_id), 1, 0) AS veranstaltungen"
|
|
. "\n FROM #__sportsmanager_teamspiel_modus"
|
|
. "\n ORDER BY status DESC, bezeichnung";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTeamspielmodi($rows);
|
|
}
|
|
|
|
function adminEditTeamspielmodus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftsspielplaene_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$row = null;
|
|
if ($id !== null) {
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTeamspielmodus($row);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTeamspielmodus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftsspielplaene_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$punktetyp = $jInput->get('punktetyp', 0, 'INT');
|
|
$punkte_sieg_einzel = $jInput->get('punkte_sieg_einzel', 0, 'INT');
|
|
$punkte_sieg_doppel_separat = $jInput->get('punkte_sieg_doppel_separat', 0, 'INT');
|
|
$punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jInput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel;
|
|
$heimtausch = $jInput->get('heimtausch', 0, 'INT');
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$spielpunkte_wertung_einzel = $jInput->get('spielpunkte_wertung_einzel', 0, 'INT');
|
|
$spielpunkte_wertung_doppel_separat = $jInput->get('spielpunkte_wertung_doppel_separat', 0, 'INT');
|
|
$spielpunkte_wertung_doppel = $spielpunkte_wertung_doppel_separat ? $jInput->get('spielpunkte_wertung_doppel', 0, 'INT') : $spielpunkte_wertung_einzel;
|
|
$spielpunkte_bedingung = $jInput->get('spielpunkte_bedingung', 0, 'INT');
|
|
$spielernamen = $jInput->get('spielernamen', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_teamspiel_modi');
|
|
}
|
|
|
|
$modus = "";
|
|
$spiel_nr = 1;
|
|
do {
|
|
$spiel_heim = $jInput->get('spiel_' . $spiel_nr . '_heim', '', 'RAW');
|
|
$spiel_gast = $jInput->get('spiel_' . $spiel_nr . '_gast', '', 'RAW');
|
|
$spiel_auflage = $jInput->get('spiel_' . $spiel_nr . '_auflage', '', 'RAW');
|
|
if (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0 && ($spiel_auflage == "" || $spiel_auflage == "H" || $spiel_auflage == "G")) {
|
|
if (strlen($modus) != 0)
|
|
$modus .= ",";
|
|
$modus .= $spiel_heim . $spiel_gast . $spiel_auflage;
|
|
}
|
|
$spiel_nr++;
|
|
} while (strlen($spiel_heim) != 0 && strlen($spiel_gast) != 0);
|
|
|
|
$verknuepfungen = "";
|
|
$verknuepfung_nr = 1;
|
|
for (; ;) {
|
|
$verknuepfung_doppel = $jInput->get('verknuepfung_' . $verknuepfung_nr . '_doppel', '', 'RAW');
|
|
$verknuepfung_einzel1 = $jInput->get('verknuepfung_' . $verknuepfung_nr . '_einzel1', '', 'RAW');
|
|
$verknuepfung_einzel2 = $jInput->get('verknuepfung_' . $verknuepfung_nr . '_einzel2', '', 'RAW');
|
|
if (strlen($verknuepfung_doppel) == 0 || strlen($verknuepfung_einzel1) == 0 || strlen($verknuepfung_einzel2) == 0)
|
|
break;
|
|
if (str_contains($verknuepfungen, $verknuepfung_doppel) || str_contains($verknuepfungen, $verknuepfung_einzel1) || str_contains($verknuepfungen, $verknuepfung_einzel2) ||
|
|
$verknuepfung_einzel1 == $verknuepfung_einzel2)
|
|
break;
|
|
if (strlen($verknuepfungen) != 0)
|
|
$verknuepfungen .= ",";
|
|
$verknuepfungen .= $verknuepfung_doppel . $verknuepfung_einzel1 . $verknuepfung_einzel2;
|
|
$verknuepfung_nr++;
|
|
}
|
|
|
|
if (strlen($verknuepfungen) > 0)
|
|
$modus .= "|" . $verknuepfungen;
|
|
$modus = $db->escape($modus);
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel', '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_teamspiel_modus"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n punktetyp = '$punktetyp',"
|
|
. "\n punkte_sieg_einzel = '$punkte_sieg_einzel',"
|
|
. "\n punkte_sieg_doppel = '$punkte_sieg_doppel',"
|
|
. "\n spielpunkte_wertung_einzel = '$spielpunkte_wertung_einzel',"
|
|
. "\n spielpunkte_wertung_doppel = '$spielpunkte_wertung_doppel',"
|
|
. "\n spielpunkte_bedingung = '$spielpunkte_bedingung',"
|
|
. "\n spielernamen = '$spielernamen',"
|
|
. "\n heimtausch = '$heimtausch',"
|
|
. "\n modus = '$modus',"
|
|
. "\n status = '$status'"
|
|
. "\n WHERE teamspiel_modus_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
begegnungenAktualisieren(0, $id);
|
|
teamstatistikAktualisieren(0, $id);
|
|
spielerstatistikAktualisieren(0, 0, 0, $id);
|
|
|
|
redirectSportsManagerURL('&task=admin_teamspiel_modi');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTeamspielmodus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftsspielplaene_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE modus_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_teamspiel_modi');
|
|
}
|
|
|
|
#[NoReturn] function adminKopierenTeamspielmodus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftsspielplaene_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$teamspiel_modus = $rows[0];
|
|
|
|
$query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('" . $db->escape($teamspiel_modus->bezeichnung) . " (Kopie)', '$teamspiel_modus->punktetyp', '$teamspiel_modus->punkte_sieg_einzel', '$teamspiel_modus->punkte_sieg_doppel', '$teamspiel_modus->spielpunkte_wertung_einzel', '$teamspiel_modus->spielpunkte_wertung_doppel', '$teamspiel_modus->spielpunkte_bedingung', '$teamspiel_modus->spielernamen', '$teamspiel_modus->heimtausch', '$teamspiel_modus->modus', '$teamspiel_modus->status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$db->insertid();
|
|
|
|
redirectSportsManagerURL('&task=admin_teamspiel_modi');
|
|
}
|
|
|
|
function adminVerschiebenModi(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("verschieberegeln_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *, IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.verschieberegel_id = #__sportsmanager_verschieberegel.verschieberegel_id), 1, 0) AS veranstaltungen"
|
|
. "\n FROM #__sportsmanager_verschieberegel"
|
|
. "\n ORDER BY bezeichnung";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVerschiebenModi($rows);
|
|
}
|
|
|
|
function adminEditVerschiebenModus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verschieberegeln_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == null)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
}
|
|
|
|
if (!empty($row)) {
|
|
HTML_sportsmanager_admin::adminEditVerschiebenModus($row);
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVerschiebenModus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verschieberegeln_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_verschieben_modi');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$initial_ohne_termin = $jInput->get('initial_ohne_termin', 0, 'INT');
|
|
$keine_gegenvorschlaege = $jInput->get('keine_gegenvorschlaege', 0, 'INT');
|
|
$vorlaufzeit_tage = $jInput->get('vorlaufzeit_tage', 0, 'INT');
|
|
$termine_minimal = $jInput->get('termine_minimal', 1, 'INT');
|
|
$termine_maximal = $jInput->get('termine_maximal', 3, 'INT');
|
|
$ablehnen = $jInput->get('ablehnen', 0, 'INT');
|
|
|
|
if ($termine_minimal > 0 && $termine_maximal > 0 && $termine_minimal > $termine_maximal) {
|
|
$t = $termine_minimal;
|
|
$termine_minimal = $termine_maximal;
|
|
$termine_maximal = $t;
|
|
}
|
|
|
|
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');";
|
|
else {
|
|
$query = "UPDATE #__sportsmanager_verschieberegel"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n initial_ohne_termin = '$initial_ohne_termin',"
|
|
. "\n keine_gegenvorschlaege = '$keine_gegenvorschlaege',"
|
|
. "\n vorlaufzeit_tage = '$vorlaufzeit_tage',"
|
|
. "\n termine_minimal = '$termine_minimal',"
|
|
. "\n termine_maximal = '$termine_maximal',"
|
|
. "\n ablehnen = '$ablehnen'"
|
|
. "\n WHERE verschieberegel_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_verschieben_modi');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVerschiebenModus(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("verschieberegeln_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE verschieberegel_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_verschieben_modi');
|
|
}
|
|
|
|
function adminKategorien(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("kategorien_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer";
|
|
$rows = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
$kategorien[1] = array();
|
|
$kategorien[2] = array();
|
|
$kategorien[3] = array();
|
|
$kategorien[4] = array();
|
|
$kategorien[5] = array();
|
|
$kategorien[6] = array();
|
|
$kategorien[7] = array();
|
|
|
|
foreach ($rows as $row)
|
|
$kategorien[$row->typ][$row->nummer] = $row->bezeichnung;
|
|
|
|
HTML_sportsmanager_admin::adminKategorien($kategorien);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveKategorien(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("kategorien_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer";
|
|
$rows = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
$kategorien[1] = array();
|
|
$kategorien[2] = array();
|
|
$kategorien[3] = array();
|
|
$kategorien[4] = array();
|
|
$kategorien[5] = array();
|
|
$kategorien[6] = array();
|
|
$kategorien[7] = array();
|
|
|
|
$anzahl = array(0,50,100,50,50,100,50,50);
|
|
|
|
foreach ($rows as $row)
|
|
$kategorien[$row->typ][$row->nummer] = $row->bezeichnung;
|
|
|
|
for ($typ = 1; $typ <= 7; $typ++) {
|
|
for ($nummer = 1; $nummer <= $anzahl[$typ]; $nummer++) {
|
|
$bezeichnung = $db->escape($jInput->get('bezeichnung_' . $typ . '_' . $nummer, '', 'RAW'));
|
|
if (empty($bezeichnung)) {
|
|
if (isset($kategorien[$typ][$nummer])) {
|
|
$query = "DELETE FROM #__sportsmanager_kategorie WHERE typ = $typ AND nummer = $nummer;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (isset($kategorien[$typ][$nummer])) {
|
|
$query = "UPDATE #__sportsmanager_kategorie"
|
|
. "\n SET bezeichnung = '$bezeichnung'"
|
|
. "\n WHERE typ = $typ AND nummer = $nummer";
|
|
} else {
|
|
$query = "INSERT INTO #__sportsmanager_kategorie (typ, nummer, bezeichnung) VALUES ('$typ', '$nummer', '$bezeichnung');";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminRanglistensysteme(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("ranglistenwertungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *, (SELECT COUNT(*) FROM #__sportsmanager_rangliste WHERE rangliste_system_id = system_id) AS ranglisten, (SELECT COUNT(*) FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_system_id = system_id) AS ranglistenturnierdisziplinen FROM #__sportsmanager_rangliste_system ORDER BY status DESC, systembezeichnung";
|
|
$rows = loadObjectList($db, $query);
|
|
$error_level = error_reporting(E_ERROR);
|
|
$math = new MathParserSM;
|
|
|
|
try {
|
|
$math->setVariable('n', 100);
|
|
$math->setVariable('m', 1);
|
|
$math->setVariable('p', 5);
|
|
} catch (Exception $e) {
|
|
Log::add("variable could not be set: " . $e->getMessage(), Log::WARNING, "com_sportsmanager");
|
|
return;
|
|
}
|
|
|
|
$pruefung = array();
|
|
foreach ($rows as $row) {
|
|
$korrekt = true;
|
|
$pruefung[$row->rangliste_system_id] = true;
|
|
if (!empty($row->funktion)) {
|
|
try {
|
|
$math->setExpression($row->funktion);
|
|
} catch (Exception $e) {
|
|
$korrekt = false;
|
|
Log::add("expression could not be set: " . $e->getMessage(), Log::WARNING, "com_sportsmanager");
|
|
}
|
|
}
|
|
$pruefung[$row->rangliste_system_id] = $korrekt;
|
|
}
|
|
error_reporting($error_level);
|
|
|
|
HTML_sportsmanager_admin::adminRanglistensysteme($rows, $pruefung);
|
|
}
|
|
|
|
function adminEditRanglistensystem(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglistenwertungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$row = null;
|
|
$punkte = null;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
if ($id != null) {
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id";
|
|
$punkte = loadObjectList($db, $query);
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditRanglistensystem($row, $punkte, $row != null ? ($row->funktion != null) : $typ);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveRanglistensystem(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglistenwertungen_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_ranglistensysteme');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$funktion = $db->escape(trim($jInput->get('funktion', '', 'RAW')));
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
|
|
if ($id == 0) {
|
|
if ($typ != 1)
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status) VALUES ('$bezeichnung', '$status');";
|
|
else
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_system (systembezeichnung, status, funktion) VALUES ('$bezeichnung', '$status', '$funktion');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_rangliste_system"
|
|
. "\n SET systembezeichnung = '$bezeichnung',"
|
|
. "\n status = '$status'";
|
|
if ($typ == 1)
|
|
$query .= ",\n funktion = '$funktion'";
|
|
$query .= "\n WHERE rangliste_system_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($typ != 1) {
|
|
for ($punkte_nr = 1; $punkte_nr <= 50; $punkte_nr++) {
|
|
$platz_min = $jInput->get('punkte_' . $punkte_nr . '_platz_min', 0, 'INT');
|
|
$platz_max = $jInput->get('punkte_' . $punkte_nr . '_platz_max', 0, 'INT');
|
|
$teilnehmer_min = $jInput->get('punkte_' . $punkte_nr . '_teilnehmer_min', 0, 'INT');
|
|
$teilnehmer_max = $jInput->get('punkte_' . $punkte_nr . '_teilnehmer_max', 0, 'INT');
|
|
$punkte = $jInput->get('punkte_' . $punkte_nr . '_punkte', 0, 'INT');
|
|
|
|
if ($punkte != 0) {
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_system_punkte (system_id, platz_min, platz_max, teilnehmer_min, teilnehmer_max, punkte) VALUES ('$id', '$platz_min', '$platz_max', '$teilnehmer_min', '$teilnehmer_max', '$punkte');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ranglisteAktualisieren();
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_ranglistensysteme');
|
|
}
|
|
|
|
function adminRanglistensystemAuswertung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglistenwertungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_ranglistensysteme');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$teilnehmer = $jInput->get('teilnehmer', 100, 'INT');
|
|
$multiplikator = $jInput->get('multiplikator', 1, 'FLOAT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$system = $rows[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id";
|
|
$systempunkte = loadObjectList($db, $query);
|
|
$math = new MathParserSM;
|
|
|
|
if ($system->funktion != NULL) {
|
|
try {
|
|
$math->setVariable('n', $teilnehmer);
|
|
$math->setVariable('m', $multiplikator);
|
|
$math->setExpression($system->funktion);
|
|
} catch (Exception $e) {
|
|
Log::add("variables/expression could not be set: " . $e->getMessage(), Log::WARNING, "com_sportsmanager");
|
|
return;
|
|
}
|
|
}
|
|
|
|
$teilnehmerpunkte = array();
|
|
for ($platz = 1; $platz <= $teilnehmer; $platz++) {
|
|
$p = 0;
|
|
if ($system->funktion == NULL) {
|
|
foreach ($systempunkte as $sp) {
|
|
if (($sp->platz_min == 0 || $sp->platz_min <= $platz) && ($sp->platz_max == 0 || $platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) {
|
|
$p = round($sp->punkte * $multiplikator);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
try {
|
|
$math->setVariable('p', $platz);
|
|
$p = round($math->getValue());
|
|
} catch (Exception $e) {
|
|
Log::add("variable could not be set: " . $e->getMessage(), Log::WARNING, "com_sportsmanager");
|
|
return;
|
|
}
|
|
}
|
|
$teilnehmerpunkte[$platz] = $p;
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminRanglistensystemAuswertung($system, $teilnehmer, $multiplikator, $teilnehmerpunkte);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveRanglistensystem(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglistenwertungen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste WHERE system_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE system_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_ranglistensysteme');
|
|
}
|
|
|
|
function adminEditRangliste(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0)
|
|
$rangliste = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$rangliste = $rows[0];
|
|
|
|
if (isset($rangliste->lizenzen)) {
|
|
$rangliste->lizenzen = explode(',', $rangliste->lizenzen);
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status > 0 " . ($id != 0 ? "OR rangliste_system_id = $rangliste->system_id " : "") . "ORDER BY systembezeichnung";
|
|
$systeme = loadObjectList($db, $query);
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 4 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC";
|
|
$saisons = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
HTML_sportsmanager_admin::adminEditRangliste($rangliste, $systeme, $kategorien, $saisons);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveRangliste(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$saison_id = $jInput->get('saison_id', 0, 'INT');
|
|
$erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT')));
|
|
$letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('letzter_tag_jahr', 2000, 'INT'), $jInput->get('letzter_tag_monat', 1, 'INT'), $jInput->get('letzter_tag_tag', 1, 'INT')));
|
|
$system_id = $jInput->get('system_id', 0, 'INT');
|
|
$maximal_gewertet_typ = $jInput->get('maximal_gewertet_typ', 0, 'INT');
|
|
if ($maximal_gewertet_typ == 0)
|
|
$maximal_gewertet_zahl = 0;
|
|
else if ($maximal_gewertet_typ == 1)
|
|
$maximal_gewertet_zahl = -$jInput->get('maximal_gewertet_zahl', 0, 'INT');
|
|
else
|
|
$maximal_gewertet_zahl = max(0, 100 - $jInput->get('maximal_gewertet_zahl', 0, 'INT'));
|
|
$minalter = $jInput->get('minalter', 0, 'INT');
|
|
$maxalter = $jInput->get('maxalter', 0, 'INT');
|
|
$ohnealter = $jInput->get('ohnealter', 0, 'INT');
|
|
$geschlecht = $jInput->get('geschlecht', 0, 'INT');
|
|
$lizenzen = $jInput->get('lizenzen', [], 'ARRAY');
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$reihenfolge = $jInput->get('reihenfolge', 0, 'INT');
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
if ($id == 0)
|
|
$query = "INSERT INTO #__sportsmanager_rangliste (bezeichnung, saison_id, erster_tag " . ($letzter_tag != null ? ", letzter_tag" : "") . ", system_id, streichergebnisse, geschlecht, lizenzen, minalter, maxalter, ohnealter, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$system_id', '$maximal_gewertet_zahl', " . ($geschlecht == null ? "null" : "'$geschlecht'") . ", " . (count((array)$lizenzen) ? implode(',', $lizenzen) : "null") . ", " . ($minalter == null ? "null" : "'$minalter'") . ", " . ($maxalter == null ? "null" : "'$maxalter'") . ", '$ohnealter', '$status', '$reihenfolge', '$kategorie');";
|
|
else {
|
|
$query = "UPDATE #__sportsmanager_rangliste"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n erster_tag = '$erster_tag',"
|
|
. "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,")
|
|
. "\n system_id = '$system_id',"
|
|
. "\n streichergebnisse = '$maximal_gewertet_zahl',"
|
|
. "\n geschlecht = " . ($geschlecht != null ? "'$geschlecht'," : "NULL,")
|
|
. "\n lizenzen = " . (count((array)$lizenzen) ? "'" . implode(',', $lizenzen) . "'," : "NULL,")
|
|
. "\n minalter = " . ($minalter != null ? "'$minalter'," : "NULL,")
|
|
. "\n maxalter = " . ($maxalter != null ? "'$maxalter'," : "NULL,")
|
|
. "\n ohnealter = '$ohnealter',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'"
|
|
. "\n WHERE rangliste_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
if ($id == 0)
|
|
$id = $db->insertid();
|
|
|
|
ranglisteAktualisieren($id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveRangliste(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_einstufung_rangliste WHERE rangliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_turnierdisziplin"
|
|
. "\n SET voranmeldungen_rangliste_id = NULL"
|
|
. "\n WHERE voranmeldungen_rangliste_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste WHERE rangliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
ranglisteAktualisieren($id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminKopierenRangliste(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$rangliste = $rows[0];
|
|
|
|
$query = "INSERT INTO #__sportsmanager_rangliste (saison_id, system_id, streichergebnisse, geschlecht, lizenzen, minalter, maxalter, ohnealter, bezeichnung, erster_tag, letzter_tag, status, reihenfolge, kategorie)"
|
|
. "\n VALUES ('$rangliste->saison_id', " . ($rangliste->system_id == null ? "null" : "'$rangliste->system_id'") . ", '" . $db->escape($rangliste->streichergebnisse) . "', " . ($rangliste->geschlecht == null ? "null" : "'$rangliste->geschlecht'") . ", " . ($rangliste->lizenzen == null ? "null" : "'$rangliste->lizenzen'") . "," . ($rangliste->minalter == null ? "null" : "'$rangliste->minalter'") . ", " . ($rangliste->maxalter == null ? "null" : "'$rangliste->maxalter'") . ", '$rangliste->ohnealter', '" . $db->escape($rangliste->bezeichnung . " (Kopie)") . "', '" . $db->escape($rangliste->erster_tag) . "', '" . $db->escape($rangliste->letzter_tag) . "', '0', '" . $db->escape($rangliste->reihenfolge) . "', '" . $db->escape($rangliste->kategorie) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_rangliste_id = $db->insertid();
|
|
|
|
// Disziplinen kopieren
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung)"
|
|
. "\n VALUES ($ziel_rangliste_id, '$row->turnierdisziplin_id', " . ($row->system_id == null ? "null" : "'$row->system_id'") . ", '$row->wertung', '$row->doppel_teilwertung');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminRanglisteTurnierdisziplinen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
if ($rangliste_id == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id";
|
|
$ranglisten = loadObjectList($db, $query);
|
|
if (count($ranglisten) < 1) die ("Wrong id");
|
|
$rangliste = $ranglisten[0];
|
|
|
|
$query = "SELECT #__sportsmanager_rangliste_turnierdisziplin.*, disziplin, turnierbezeichnung, turnierort, systembezeichnung, beginn"
|
|
. "\n FROM #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n LEFT JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_rangliste_system ON system_id = rangliste_system_id"
|
|
. "\n WHERE rangliste_id = $rangliste_id"
|
|
. "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC, disziplin";
|
|
$turnierdisziplinen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminRanglisteTurnierdisziplinen($rangliste, $turnierdisziplinen);
|
|
}
|
|
|
|
function adminEditRanglisteTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
|
|
if ($id == 0)
|
|
$ranglisteTurnierdisziplin = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$ranglisteTurnierdisziplin = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id";
|
|
$ranglisten = loadObjectList($db, $query);
|
|
if (count($ranglisten) < 1) die ("Wrong id");
|
|
$rangliste = $ranglisten[0];
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnierdisziplin, #__sportsmanager_turnier"
|
|
. "\n WHERE #__sportsmanager_turnierdisziplin.turnier_id = #__sportsmanager_turnier.turnier_id";
|
|
if ($rangliste->erster_tag != null)
|
|
$query .= " AND (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$rangliste->erster_tag') >= -1096" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")";
|
|
if ($rangliste->letzter_tag != null)
|
|
$query .= " AND (ISNULL(erster_tag) OR DATEDIFF('$rangliste->letzter_tag', letzter_Tag) >= -366" . ($ranglisteTurnierdisziplin != null ? " OR $ranglisteTurnierdisziplin->turnierdisziplin_id = turnierdisziplin_id" : "") . ")";
|
|
$query .= "\n ORDER BY erster_tag DESC, turnierbezeichnung, reihenfolge, disziplin";
|
|
$turnierdisziplinen = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE status != 0 " . ($id != 0 && $ranglisteTurnierdisziplin->system_id != null ? "OR rangliste_system_id = $ranglisteTurnierdisziplin->system_id " : "") . "ORDER BY systembezeichnung";
|
|
$systeme = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditRanglisteTurnierdisziplin($rangliste, $ranglisteTurnierdisziplin, $turnierdisziplinen, $systeme);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveRanglisteTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
$turnierdisziplin_id = $db->escape($jInput->get('turnierdisziplin_id', 0, 'INT'));
|
|
$system_id = $jInput->get('system_id', 0, 'INT');
|
|
$wertung = $jInput->get('wertung', 0, 'RAW');
|
|
$doppel_teilwertung = $jInput->get('doppel_teilwertung', 0, 'RAW');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id);
|
|
}
|
|
|
|
$query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n SET rangliste_id = '$rangliste_id',"
|
|
. "\n turnierdisziplin_id = '$turnierdisziplin_id',"
|
|
. "\n system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . ","
|
|
. "\n wertung = '" . $db->escape($wertung) . "',"
|
|
. "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'";
|
|
if ($id != 0)
|
|
$query .= "\n WHERE rangliste_turnierdisziplin_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
ranglisteAktualisieren($rangliste_id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveRanglisteTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
ranglisteAktualisieren($rangliste_id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id);
|
|
}
|
|
|
|
#[NoReturn] function adminRanglisteDisziplinenEntfernen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $rangliste_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
ranglisteAktualisieren($rangliste_id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id);
|
|
}
|
|
|
|
#[NoReturn] function adminRanglisteSystemZuruecksetzen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("ranglisten_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$rangliste_id = $jInput->get('rangliste_id', 0, 'INT');
|
|
|
|
$query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n SET system_id = NULL,"
|
|
. "\n wertung = 1"
|
|
. "\n WHERE rangliste_id = $rangliste_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
ranglisteAktualisieren($rangliste_id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id);
|
|
}
|
|
|
|
function adminEditSpielerstatistik(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0)
|
|
$spielerstatistik = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$spielerstatistik = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 5 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC";
|
|
$saisons = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditSpielerstatistik($spielerstatistik, $kategorien, $saisons);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSpielerstatistik(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$saison_id = $jInput->get('saison_id', 0, 'INT');
|
|
$erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT')));
|
|
$letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('letzter_tag_jahr', 2000, 'INT'), $jInput->get('letzter_tag_monat', 1, 'INT'), $jInput->get('letzter_tag_tag', 1, 'INT')));
|
|
$tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT');
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$reihenfolge = $jInput->get('reihenfolge', 0, 'INT');
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
$spielerstatistik_aktualisieren = false;
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_bestenliste (bezeichnung, saison_id, erster_tag " . ($letzter_tag != null ? ", letzter_tag" : "") . " , tabellenwertung, typ, status, reihenfolge, kategorie) VALUES ('$bezeichnung', '$saison_id', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$tabellenwertung', '$typ', '$status', '$reihenfolge', '$kategorie');";
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$spielerstatistik = $rows[0];
|
|
|
|
$query = "UPDATE #__sportsmanager_bestenliste"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n erster_tag = '$erster_tag',"
|
|
. "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,")
|
|
. "\n tabellenwertung = '$tabellenwertung',"
|
|
. "\n typ = '$typ',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'"
|
|
. "\n WHERE bestenliste_id = $id";
|
|
|
|
if ($spielerstatistik->tabellenwertung != $tabellenwertung || $spielerstatistik->typ != $typ)
|
|
$spielerstatistik_aktualisieren = true;
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
if ($id == 0)
|
|
$id = $db->insertid();
|
|
|
|
if ($spielerstatistik_aktualisieren)
|
|
spielerstatistikAktualisieren($id);
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSpielerstatistik(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminKopierenSpielerstatistik(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$spielerstatistik = $rows[0];
|
|
|
|
$query = "INSERT INTO #__sportsmanager_bestenliste (saison_id, bezeichnung, tabellenwertung, typ, erster_tag, letzter_tag, status, reihenfolge, kategorie)"
|
|
. "\n VALUES ('$spielerstatistik->saison_id', '" . $db->escape($spielerstatistik->bezeichnung . " (Kopie)") . "', '$spielerstatistik->tabellenwertung', '$spielerstatistik->typ', '" . $db->escape($spielerstatistik->erster_tag) . "', '" . $db->escape($spielerstatistik->letzter_tag) . "', '0', '" . $db->escape($spielerstatistik->reihenfolge) . "', '" . $db->escape($spielerstatistik->kategorie) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_spielerstatistik_id = $db->insertid();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_bestenliste_veranstaltung (bestenliste_id, veranstaltung_id)"
|
|
. "\n VALUES ($ziel_spielerstatistik_id, $row->veranstaltung_id);";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_bestenliste_individualwettbewerb (bestenliste_id, individualwettbewerb_id)"
|
|
. "\n VALUES ($ziel_spielerstatistik_id, $row->individualwettbewerb_id);";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
spielerstatistikAktualisieren($ziel_spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminSpielerstatistikVeranstaltungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
if ($spielerstatistik_id == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id";
|
|
$spielerstatistiken = loadObjectList($db, $query);
|
|
if (count($spielerstatistiken) < 1) die ("Wrong id");
|
|
$spielerstatistik = $spielerstatistiken[0];
|
|
|
|
$query = "SELECT #__sportsmanager_bestenliste_veranstaltung.*, bezeichnung, erster_tag, letzter_tag, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_bestenliste_veranstaltung"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_veranstaltung.saison_id"
|
|
. "\n WHERE bestenliste_id = $spielerstatistik_id"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
$query = "SELECT #__sportsmanager_bestenliste_individualwettbewerb.*, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_bestenliste_individualwettbewerb"
|
|
. "\n LEFT JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_saison ON #__sportsmanager_saison.saison_id = #__sportsmanager_individualwettbewerb.saison_id"
|
|
. "\n WHERE bestenliste_id = $spielerstatistik_id"
|
|
. "\n ORDER BY saisonbezeichnung, reihenfolge, bezeichnung, kategorie";
|
|
$individualwettbewerbe = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielerstatistikVeranstaltungen($spielerstatistik, $veranstaltungen, $individualwettbewerbe);
|
|
}
|
|
|
|
function adminEditSpielerstatistikVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
|
|
if ($id == 0)
|
|
$spielerstatistikVeranstaltung = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$spielerstatistikVeranstaltung = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id";
|
|
$spielerstatistiken = loadObjectList($db, $query);
|
|
if (count($spielerstatistiken) < 1) die ("Wrong id");
|
|
$spielerstatistik = $spielerstatistiken[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung";
|
|
if ($spielerstatistik->erster_tag != null)
|
|
$query .= "\n WHERE (ISNULL(erster_tag) OR DATEDIFF(erster_tag, '$spielerstatistik->erster_tag') >= -1096" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")";
|
|
if ($spielerstatistik->letzter_tag != null)
|
|
$query .= ($spielerstatistik->erster_tag != null ? " AND" : "\n WHERE") . " (ISNULL(erster_tag) OR DATEDIFF('$spielerstatistik->letzter_tag', letzter_Tag) >= -366" . ($spielerstatistikVeranstaltung != null ? " OR $spielerstatistikVeranstaltung->veranstaltung_id = veranstaltung_id" : "") . ")";
|
|
$query .= "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditSpielerstatistikVeranstaltung($spielerstatistik, $spielerstatistikVeranstaltung, $veranstaltungen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSpielerstatistikVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
$veranstaltung_id = $jInput->get('veranstaltung_id', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
$query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_veranstaltung"
|
|
. "\n SET bestenliste_id = '$spielerstatistik_id',"
|
|
. "\n veranstaltung_id = '$veranstaltung_id'";
|
|
if ($id != 0)
|
|
$query .= "\n WHERE bestenliste_veranstaltung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren($spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSpielerstatistikVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_veranstaltung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren($spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
function adminEditSpielerstatistikIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
|
|
if ($id == 0)
|
|
$spielerstatistikIndividualwettbewerb = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$spielerstatistikIndividualwettbewerb = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id";
|
|
$spielerstatistiken = loadObjectList($db, $query);
|
|
if (count($spielerstatistiken) < 1) die ("Wrong id");
|
|
$spielerstatistik = $spielerstatistiken[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb"
|
|
. "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
$individualwettbewerbe = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditSpielerstatistikIndividualwettbewerb($spielerstatistik, $spielerstatistikIndividualwettbewerb, $individualwettbewerbe);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSpielerstatistikIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
$individualwettbewerb_id = $jInput->get('individualwettbewerb_id', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
$query = ($id == 0 ? "INSERT" : "UPDATE") . " #__sportsmanager_bestenliste_individualwettbewerb"
|
|
. "\n SET bestenliste_id = '$spielerstatistik_id',"
|
|
. "\n individualwettbewerb_id = '$individualwettbewerb_id'";
|
|
if ($id != 0)
|
|
$query .= "\n WHERE bestenliste_individualwettbewerb_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren($spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSpielerstatistikIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_individualwettbewerb_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren($spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
#[NoReturn] function adminSpielerstatistikVeranstaltungenEntfernen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("spielerstatistiken_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$spielerstatistik_id = $jInput->get('spielerstatistik_id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $spielerstatistik_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $spielerstatistik_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren($spielerstatistik_id);
|
|
|
|
redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id);
|
|
}
|
|
|
|
function adminModeratoren(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("moderatoren_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT t1.moderator_id, t1.moderator_user_id, t2.name, t2.username, (SELECT COUNT(*) FROM #__sportsmanager_moderator_zugriff WHERE #__sportsmanager_moderator_zugriff.moderator_id = t1.moderator_id) AS zugriffe FROM #__sportsmanager_moderator as t1 LEFT JOIN #__users AS t2 ON t1.moderator_user_id=t2.id ORDER BY name, username";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminModeratoren($rows);
|
|
}
|
|
|
|
function adminEditModerator(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("moderatoren_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$row = null;
|
|
if ($id != 0) {
|
|
$query = "SELECT * FROM #__sportsmanager_moderator WHERE moderator_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
if (empty($id)) {
|
|
$zugriffe = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id";
|
|
$zugriffe = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditModerator($row, $zugriffe, $users);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveModerator(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("moderatoren_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_moderatoren');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$userid = $jInput->get('userid', 0, 'INT');
|
|
$zugriffe = $jInput->get('zugriffe', array(), 'ARRAY');
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_moderator (moderator_user_id)"
|
|
. "\n VALUES ('$userid');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_moderator"
|
|
. "\n SET moderator_user_id = '$userid'"
|
|
. "\n WHERE moderator_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id";
|
|
$alte_zugriffe = loadObjectList($db, $query);
|
|
foreach ($alte_zugriffe as $alter_zugriff) {
|
|
if (!in_array($alter_zugriff->zugriff, $zugriffe)) {
|
|
$alter_zugriff_id = $alter_zugriff->moderator_zugriff_id;
|
|
$query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_zugriff_id = $alter_zugriff_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else {
|
|
$index = array_search($alter_zugriff->zugriff, $zugriffe);
|
|
if ($index !== false) {
|
|
unset($zugriffe[$index]);
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($zugriffe as $zugriff) {
|
|
$query = "INSERT #__sportsmanager_moderator_zugriff"
|
|
. "\n SET moderator_id = '$id',"
|
|
. "\n zugriff = '$zugriff',"
|
|
. "\n zusatz = ''";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_moderatoren');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveModerator(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("moderatoren_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_moderator WHERE moderator_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_moderatoren');
|
|
}
|
|
|
|
function adminVeranstalter(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("organisationen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_veranstaltung.veranstalter_id) AS veranstaltungen,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_verein WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id) AS vereine,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_turnier WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_turnier.veranstalter_id) AS turniere,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_individualwettbewerb WHERE #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_individualwettbewerb.veranstalter_id) AS individualwettbewerbe"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVeranstalter($rows);
|
|
}
|
|
|
|
function adminEditVeranstalter(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("organisationen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$row = null;
|
|
if ($id == 0) {
|
|
$berechtigt_fuer_veranstalter = array();
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_veranstalter.* FROM #__sportsmanager_berechtigt_fuer_veranstalter, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstalter_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_veranstalter = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 1 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
HTML_sportsmanager_admin::adminEditVeranstalter($row, $berechtigt_fuer_veranstalter, $users, $kategorien);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVeranstalter(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("organisationen_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_veranstalter');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$kuerzel = $db->escape(trim($jInput->get('kuerzel', '', 'RAW')));
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
|
|
$berechtigt_fuer_veranstalter_user_ids = array($jInput->get('berechtigt_fuer_veranstalter_user_1_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_veranstalter_user_2_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_veranstalter_user_3_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_veranstalter_user_4_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_veranstalter_user_5_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_veranstalter_user_6_id', 0, 'INT'));
|
|
|
|
if ($id == 0)
|
|
$query = "INSERT INTO #__sportsmanager_veranstalter (veranstalterbezeichnung, veranstalterkuerzel, kategorie) VALUES ('$bezeichnung', '$kuerzel', '$kategorie');";
|
|
else {
|
|
$query = "UPDATE #__sportsmanager_veranstalter"
|
|
. "\n SET veranstalterbezeichnung = '$bezeichnung',"
|
|
. "\n veranstalterkuerzel = '$kuerzel',"
|
|
. "\n kategorie = '$kategorie'"
|
|
. "\n WHERE veranstalter_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
if ($id == 0)
|
|
$id = $db->insertid();
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_veranstalter_user_ids[5];";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
for ($nummer = 0; $nummer <= 5; $nummer++) {
|
|
$berechtigt_user_id = $berechtigt_fuer_veranstalter_user_ids[$nummer];
|
|
if ($berechtigt_user_id != 0) {
|
|
$gefunden = false;
|
|
foreach ($rows as $row) {
|
|
if ($row->berechtigt_user_id == $berechtigt_user_id)
|
|
$gefunden = true;
|
|
}
|
|
if (!$gefunden) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstalter (berechtigt_user_id, berechtigt_veranstalter_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_veranstalter');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVeranstalter(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("organisationen_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstalter_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_verein WHERE veranstalter_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnier WHERE veranstalter_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb WHERE veranstalter_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "UPDATE #__sportsmanager_rechnung SET veranstalter_id = NULL WHERE veranstalter_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_veranstalter');
|
|
}
|
|
|
|
function adminSaisons(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("saisons_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten"
|
|
. "\n FROM #__sportsmanager_saison"
|
|
. "\n ORDER BY saisonbezeichnung DESC";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSaisons($rows);
|
|
}
|
|
|
|
function adminEditSaison(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("saisons_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_saison WHERE saison_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditSaison($row);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveSaison(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("saisons_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_saisons');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$saisonbezeichnung = $db->escape(trim($jInput->get('saisonbezeichnung', '', 'RAW')));
|
|
|
|
if ($id == 0)
|
|
$query = "INSERT INTO #__sportsmanager_saison (saisonbezeichnung) VALUES ('$saisonbezeichnung');";
|
|
else {
|
|
$query = "UPDATE #__sportsmanager_saison"
|
|
. "\n SET saisonbezeichnung = '$saisonbezeichnung'"
|
|
. "\n WHERE saison_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_saisons');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveSaison(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("saisons_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT *,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_veranstaltung WHERE #__sportsmanager_veranstaltung.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS veranstaltungen,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_turnier WHERE #__sportsmanager_turnier.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS turniere,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_rangliste WHERE #__sportsmanager_rangliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS ranglisten,"
|
|
. "\n IF(EXISTS(SELECT * FROM #__sportsmanager_bestenliste WHERE #__sportsmanager_bestenliste.saison_id = #__sportsmanager_saison.saison_id), 1, 0) AS bestenlisten"
|
|
. "\n FROM #__sportsmanager_saison"
|
|
. "\n WHERE saison_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
$row = $rows[0];
|
|
if ($row->veranstaltungen != 0 || $row->turniere != 0 || $row->ranglisten != 0 || $row->bestenlisten != 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_saison WHERE saison_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
|
|
redirectSportsManagerURL('&task=admin_saisons');
|
|
}
|
|
|
|
function adminEditVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern"))
|
|
keinZugriff(true);
|
|
|
|
if ($id == 0)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung";
|
|
$spielmodi = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_verschieberegel ORDER BY bezeichnung"; // WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung";
|
|
$verschieberegeln = loadObjectList($db, $query);
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 2 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC";
|
|
$saisons = loadObjectList($db, $query);
|
|
if (empty($id)) {
|
|
$berechtigt_fuer_veranstaltung = array();
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_veranstaltung.* FROM #__sportsmanager_berechtigt_fuer_veranstaltung, #__users WHERE berechtigt_user_id = id AND berechtigt_veranstaltung_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_veranstaltung = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditVeranstaltung($row, $veranstalter, $spielmodi, $verschieberegeln, $kategorien, $saisons, $users, $berechtigt_fuer_veranstaltung, $vorlage);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
$id = $vorlage ? 0 : $jInput->get('id', 0, 'INT');
|
|
$veranstalterId = $jInput->get('veranstalterid', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$saison_id = $jInput->get('saison_id', 0, 'INT');
|
|
$erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT')));
|
|
$letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('letzter_tag_jahr', 2000, 'INT'), $jInput->get('letzter_tag_monat', 1, 'INT'), $jInput->get('letzter_tag_tag', 1, 'INT')));
|
|
$modus_id = $jInput->get('modus_id', 0, 'INT');
|
|
$verschieberegel_id = $jInput->get('verschieberegel_id', 0, 'INT');
|
|
$tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT');
|
|
$direktervergleich = $jInput->get('direktervergleich', 0, 'INT');
|
|
$unterteilung = $jInput->get('unterteilung', 0, 'INT');
|
|
$spieltag_titel_zeigen = $jInput->get('spieltag_titel_zeigen', 0, 'INT');
|
|
$elo_wertung = $jInput->get('elo_wertung', 0, 'INT');
|
|
$logo_url = $db->escape(trim($jInput->get('logo_url', '', 'RAW')));
|
|
$ticker_logo_url = $db->escape(trim($jInput->get('ticker_logo_url', '', 'RAW')));
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$reihenfolge = $jInput->get('reihenfolge', 0, 'INT');
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
$bildbeibehalten_ticker_logo = $jInput->get('bildbeibehalten_ticker_logo', 0, 'INT');
|
|
$aktualisieren_ab_datum = $erster_tag;
|
|
$berechtigt_fuer_veranstaltung_user_ids = array();
|
|
for ($i = 1; $i <= 6; $i++) {
|
|
$berechtigt_user_id = $jInput->get('berechtigt_fuer_veranstaltung_user_' . $i . '_id', 0, 'INT');
|
|
if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids))
|
|
$berechtigt_fuer_veranstaltung_user_ids[] = $berechtigt_user_id;
|
|
}
|
|
|
|
$elo_aktualisieren = false;
|
|
$spielerstatistik_aktualisieren = false;
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_veranstaltung (veranstalter_id, saison_id, bezeichnung, erster_tag " . ($letzter_tag != null ? ", letzter_tag" : "") . ", modus_id, verschieberegel_id, tabellenwertung, direktervergleich, unterteilung, spieltag_titel_zeigen, elo_wertung, logo_url, ticker_logo_url, status, reihenfolge, kategorie) VALUES
|
|
('$veranstalterId', '$saison_id', '$bezeichnung', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$modus_id', '$verschieberegel_id', '$tabellenwertung', '$direktervergleich', '$unterteilung', '$spieltag_titel_zeigen', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Die Veranstaltung existiert nicht mehr!");
|
|
}
|
|
$row = $rows[0];
|
|
|
|
$query = "UPDATE #__sportsmanager_veranstaltung"
|
|
. "\n SET veranstalter_id = '$veranstalterId',"
|
|
. "\n bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n erster_tag = '$erster_tag',"
|
|
. "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'," : "NULL,")
|
|
. "\n modus_id = '$modus_id',"
|
|
. "\n verschieberegel_id = '$verschieberegel_id',"
|
|
. "\n tabellenwertung = '$tabellenwertung',"
|
|
. "\n direktervergleich = '$direktervergleich',"
|
|
. "\n unterteilung = '$unterteilung',"
|
|
. "\n spieltag_titel_zeigen = '$spieltag_titel_zeigen',"
|
|
. "\n elo_wertung = '$elo_wertung',"
|
|
. "\n logo_url = '$logo_url',"
|
|
. "\n ticker_logo_url = '$ticker_logo_url',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'"
|
|
. "\n WHERE veranstaltung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0))
|
|
$elo_aktualisieren = true;
|
|
if ((($modus_id != 0 || $row->modus_id != 0) && $status != $row->status)
|
|
|| (($status != 0 || $row->status != 0) && $modus_id != $row->modus_id))
|
|
$spielerstatistik_aktualisieren = true;
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id";
|
|
if (!empty($berechtigt_fuer_veranstaltung_user_ids))
|
|
$query .= " AND berechtigt_user_id NOT IN (" . implode(", ", $berechtigt_fuer_veranstaltung_user_ids) . ")";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$index = array_search($row->berechtigt_user_id, $berechtigt_fuer_veranstaltung_user_ids);
|
|
if ($index !== false) {
|
|
unset($berechtigt_fuer_veranstaltung_user_ids[$index]);
|
|
}
|
|
}
|
|
|
|
foreach ($berechtigt_fuer_veranstaltung_user_ids as $berechtigt_user_id) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_veranstaltung (berechtigt_user_id, berechtigt_veranstaltung_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
teamstatistikAktualisieren($id);
|
|
|
|
if ($spielerstatistik_aktualisieren) {
|
|
begegnungenAktualisieren($id);
|
|
spielerstatistikAktualisieren(0, $id);
|
|
}
|
|
|
|
if ($bildbeibehalten_ticker_logo == 0) {
|
|
bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id);
|
|
|
|
if (!empty($_FILES["bild_ticker_logo"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild_ticker_logo"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild_ticker_logo"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] > 8192 || $size[1] > 8192)) {
|
|
redirectSportsManagerURL('&task=admin_ubersicht', "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit maximal 8192*8192 Bildpunkten vorliegt.");
|
|
}
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe';
|
|
if (!File::copy($_FILES["bild_ticker_logo"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . 'ticker_logo' . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Das Bild konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveVeranstaltung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_team WHERE veranstaltung_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE veranstaltung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
spielerstatistikAktualisieren(0, $id);
|
|
|
|
bildLoeschen("mannschaftswettbewerbe/logo", $id);
|
|
bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id);
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminMannschaften(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_team.*, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.*,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND NOT ausgetreten) AS mitglieder_aktiv,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id) AS mitglieder,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung WHERE heim_team_id = #__sportsmanager_team.team_id OR gast_team_id = #__sportsmanager_team.team_id) AS begegnungen,"
|
|
. "\n (SELECT COUNT(team_id) FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_historie_id IN ("
|
|
. "\n SELECT MIN(begegnung_historie_id) AS historie_id FROM #__sportsmanager_begegnung_historie "
|
|
. "\n WHERE aktion IN (0, 3) AND team_id in "
|
|
. "\n (SELECT team_id FROM #__sportsmanager_team WHERE veranstaltung_id = $veranstaltungId)"
|
|
. "\n GROUP BY begegnung_id"
|
|
. "\n )"
|
|
. "\n AND team_id = #__sportsmanager_team.team_id"
|
|
. "\n ) AS anzahl_verschiebungen"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_verein.verein_id = #__sportsmanager_team.verein_id"
|
|
. "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id"
|
|
. "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows);
|
|
}
|
|
|
|
function adminEditMannschaft(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$row = null;
|
|
if ($id == 0) {
|
|
$berechtigt_fuer_team = null;
|
|
$teamansprechpartner = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 1)
|
|
$row = $rows[0];
|
|
|
|
if ($veranstaltungId != $row->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
$query = "SELECT t1.* FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__users AS t2 WHERE t1.berechtigt_user_id = t2.id AND berechtigt_team_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_team = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id";
|
|
$teamansprechpartner = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT verein_id, vereinsname, veranstalterbezeichnung, ausgetreten"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
|
|
. "\n WHERE NOT ausgetreten" . (!empty($row) && !empty($row->verein_id) ? " OR verein_id = $row->verein_id" : "")
|
|
. "\n ORDER BY veranstalterbezeichnung, vereinsname";
|
|
$vereine = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
$beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_veranstaltungen) {
|
|
if (empty($id) || empty($row->teamgruppe_id)) {
|
|
$query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN")
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen, IF(" . veranstaltungFilter("veranstaltung_id IN") . ", 1, 0) AS veranstaltung_moderator"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)"
|
|
. "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND ((saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN") . ") OR NOT ISNULL(team_id))"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
}
|
|
} else {
|
|
if (empty($id) || empty($row->teamgruppe_id)) {
|
|
$query = "SELECT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND saison_id = $veranstaltung->saison_id"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT DISTINCT veranstaltung_id, bezeichnung, erster_tag, letzter_tag, saison_id, team_id, team_begegnungen"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT veranstaltung_id, team_id, IF(EXISTS(SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = team_id OR gast_team_id = team_id), 1, 0) AS team_begegnungen FROM #__sportsmanager_team WHERE teamgruppe_id = $row->teamgruppe_id) AS veranstaltungen USING (veranstaltung_id)"
|
|
. "\n WHERE veranstaltung_id != $veranstaltung->veranstaltung_id AND (saison_id = $veranstaltung->saison_id OR NOT ISNULL(team_id))"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
}
|
|
}
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditMannschaft($veranstaltung, $row, $veranstaltungen, $vereine, $users, $berechtigt_fuer_team, $teamansprechpartner, $spielorte, $beschraenkter_zugriff_veranstaltungen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveMannschaft(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
$beschraenkter_zugriff_veranstaltungen_ids = $beschraenkter_zugriff_veranstaltungen ? benutzerVeranstaltungIdsModerator() : null;
|
|
|
|
$teamname = $db->escape(trim($jInput->get('teamname', '', 'RAW')));
|
|
$teamname_kurz = $db->escape(trim($jInput->get('teamname_kurz', '', 'RAW')));
|
|
$platz = $jInput->get('platz', 0, 'INT');
|
|
$verein_id = $jInput->get('verein_id', 0, 'INT');
|
|
$tischtyp = $db->escape(trim($jInput->get('tischtyp', '', 'RAW')));
|
|
$tischeigenschaften = $db->escape(trim($jInput->get('tischeigenschaften', '', 'RAW')));
|
|
$heimspiel_wochentag = $jInput->get('heimspiel_wochentag', 0, 'INT');
|
|
$heimspiel_uhrzeit = sprintf("%02d%02d", $jInput->get('heimspiel_uhrzeit_stunden', 0, 'INT'), $jInput->get('heimspiel_uhrzeit_minuten', 0, 'INT'));
|
|
$heimspielort_id = $jInput->get('heimspielort_id', 0, 'INT');
|
|
$nichtraucherschutz = $jInput->get('nichtraucherschutz', 0, 'INT');
|
|
$zusatzpunkte = $jInput->get('zusatzpunkte', 0, 'FLOAT');
|
|
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
|
|
|
|
$berechtigt_fuer_team_user_ids = array($jInput->get('berechtigt_fuer_team_user_1_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_team_user_2_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_team_user_3_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_team_user_4_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_team_user_5_id', 0, 'INT'),
|
|
$jInput->get('berechtigt_fuer_team_user_6_id', 0, 'INT'));
|
|
$pin = $db->escape(trim($jInput->get('pin', '', 'RAW')));
|
|
|
|
$weitere_veranstaltungen_anzahl = $jInput->get('weitere_veranstaltungen_anzahl', 0, 'INT');
|
|
$weitere_veranstaltungen_beruecksichtigt = array();
|
|
for ($i = 0; $i < $weitere_veranstaltungen_anzahl; $i++) {
|
|
$weitere_veranstaltung_id = $jInput->get('weitere_veranstaltung_id_' . $i, 0, 'INT');
|
|
if ($weitere_veranstaltung_id != 0 && !in_array($weitere_veranstaltung_id, $weitere_veranstaltungen_beruecksichtigt))
|
|
$weitere_veranstaltungen_beruecksichtigt[] = $weitere_veranstaltung_id;
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, teamname_kurz, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, zusatzpunkte" . ($veranstaltung->tabellenwertung == -2 ? ", platz" : "") . ", pin)"
|
|
. "\n VALUES (" . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ", '$veranstaltungId', '$teamname', '$teamname_kurz', '$tischtyp', '$tischeigenschaften', '$heimspiel_wochentag', '$heimspiel_uhrzeit', " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ", '$nichtraucherschutz', '$zusatzpunkte'" . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? ", '$platz'" : ", NULL") : "") . ", '$pin');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
$teamgruppe_id = $id;
|
|
$team_alt = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) == 0) die("Wrong id!");
|
|
$team_alt = $teams[0];
|
|
$teamgruppe_id = $team_alt->teamgruppe_id != null ? $team_alt->teamgruppe_id : $id;
|
|
|
|
if ($veranstaltungId != $team_alt->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET verein_id = " . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ","
|
|
. "\n teamname = '$teamname',"
|
|
. "\n teamname_kurz = '$teamname_kurz',"
|
|
. "\n tischtyp = '$tischtyp',"
|
|
. "\n tischeigenschaften = '$tischeigenschaften',"
|
|
. "\n heimspiel_wochentag = '$heimspiel_wochentag',"
|
|
. "\n heimspiel_uhrzeit = '$heimspiel_uhrzeit',"
|
|
. "\n heimspielort_id = " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ","
|
|
. "\n nichtraucherschutz = '$nichtraucherschutz',"
|
|
. ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? "\n platz = '$platz'," : "\n platz = NULL,") : "")
|
|
. "\n zusatzpunkte = '$zusatzpunkte',"
|
|
. "\n pin = '$pin'"
|
|
. "\n WHERE team_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Teamvertreter speichern
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[0] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[1] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[2] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[3] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[4] AND berechtigt_user_id != $berechtigt_fuer_team_user_ids[5];";
|
|
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
for ($nummer = 0; $nummer <= 5; $nummer++) {
|
|
$berechtigt_user_id = $berechtigt_fuer_team_user_ids[$nummer];
|
|
if ($berechtigt_user_id != 0) {
|
|
$gefunden = false;
|
|
foreach ($rows as $row) {
|
|
if ($row->berechtigt_user_id == $berechtigt_user_id)
|
|
$gefunden = true;
|
|
}
|
|
if (!$gefunden) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Ansprechpartner speichern
|
|
for ($nummer = 1; $nummer <= 2; $nummer++) {
|
|
$teamansprechpartner_id = $jInput->get('teamansprechpartner_' . $nummer . '_id', 0, 'INT');
|
|
$teamansprechpartner_vorname = trim($jInput->get('teamansprechpartner_' . $nummer . '_vorname', '', 'RAW'));
|
|
$teamansprechpartner_nachname = trim($jInput->get('teamansprechpartner_' . $nummer . '_nachname', '', 'RAW'));
|
|
$teamansprechpartner_telefon = trim($jInput->get('teamansprechpartner_' . $nummer . '_telefon', '', 'RAW'));
|
|
$teamansprechpartner_mobil = trim($jInput->get('teamansprechpartner_' . $nummer . '_mobil', '', 'RAW'));
|
|
$teamansprechpartner_email = trim($jInput->get('teamansprechpartner_' . $nummer . '_email', '', 'RAW'));
|
|
|
|
if ($teamansprechpartner_id == 0) {
|
|
if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, vorname, nachname, telefon, mobil, email) VALUES ('$id', '$teamansprechpartner_vorname', '$teamansprechpartner_nachname', '$teamansprechpartner_telefon', '$teamansprechpartner_mobil', '$teamansprechpartner_email');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (strlen($teamansprechpartner_vorname) > 0 || strlen($teamansprechpartner_nachname) > 0) {
|
|
$query = "UPDATE #__sportsmanager_teamansprechpartner"
|
|
. "\n SET vorname = '$teamansprechpartner_vorname',"
|
|
. "\n nachname = '$teamansprechpartner_nachname',"
|
|
. "\n telefon = '$teamansprechpartner_telefon',"
|
|
. "\n mobil = '$teamansprechpartner_mobil',"
|
|
. "\n email = '$teamansprechpartner_email'"
|
|
. "\n WHERE kontaktperson_id = $teamansprechpartner_id";
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $teamansprechpartner_id;";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit))
|
|
heimspieltag_aktualisieren($id);
|
|
|
|
$bild_aktualisieren_gescheitert = 0;
|
|
if ($bildbeibehalten == 0) {
|
|
bildLoeschen("mannschaften", $id);
|
|
if (!empty($_FILES["bild"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) {
|
|
$bild_aktualisieren_gescheitert = 1;
|
|
} else {
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften';
|
|
$ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg');
|
|
if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $ziel_pfad, 240, 240, 0))
|
|
$bild_aktualisieren_gescheitert = 2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Weitere Wettbewerbe aktualisieren
|
|
$query = "SELECT team_id, veranstaltung_id"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id != $id AND teamgruppe_id = $teamgruppe_id";
|
|
$bestehende_weitere_veranstaltungen_beruecksichtigt = loadObjectList($db, $query);
|
|
$veranstaltungen_aktualisieren = array();
|
|
foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) {
|
|
if ($beschraenkter_zugriff_veranstaltungen && !in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids))
|
|
continue;
|
|
$ist_beruecksichtigt = false;
|
|
foreach ($weitere_veranstaltungen_beruecksichtigt as $weitere_veranstaltung_id) {
|
|
if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) {
|
|
$ist_beruecksichtigt = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_beruecksichtigt)
|
|
mannschaftsgruppe_entfernen($bestehende_weitere_veranstaltung_beruecksichtigt->team_id);
|
|
else {
|
|
mannschaftsgruppe_verknuepfen($id, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, true, false, $bildbeibehalten == 0);
|
|
if ($team_alt != null && ($team_alt->heimspiel_wochentag != $heimspiel_wochentag || $team_alt->heimspiel_uhrzeit != $heimspiel_uhrzeit))
|
|
heimspieltag_aktualisieren($bestehende_weitere_veranstaltung_beruecksichtigt->team_id);
|
|
}
|
|
if (!in_array($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id, $veranstaltungen_aktualisieren))
|
|
$veranstaltungen_aktualisieren[] = $bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id;
|
|
}
|
|
|
|
foreach ($weitere_veranstaltungen_beruecksichtigt as $weitere_veranstaltung_id) {
|
|
if ($beschraenkter_zugriff_veranstaltungen && !in_array($weitere_veranstaltung_id, $beschraenkter_zugriff_veranstaltungen_ids))
|
|
continue;
|
|
|
|
$ist_beruecksichtigt = false;
|
|
foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt) {
|
|
if ($bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id == $weitere_veranstaltung_id) {
|
|
$ist_beruecksichtigt = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_beruecksichtigt)
|
|
mannschaftsgruppe_hinzufuegen($id, $weitere_veranstaltung_id);
|
|
if (!in_array($weitere_veranstaltung_id, $veranstaltungen_aktualisieren))
|
|
$veranstaltungen_aktualisieren[] = $weitere_veranstaltung_id;
|
|
}
|
|
|
|
teamstatistikAktualisieren($veranstaltungId);
|
|
foreach ($veranstaltungen_aktualisieren as $weitere_veranstaltung_id)
|
|
teamstatistikAktualisieren($weitere_veranstaltung_id);
|
|
|
|
if ($bild_aktualisieren_gescheitert > 0) {
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId, $bild_aktualisieren_gescheitert == 1 ? "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt." : "Das Bild konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function mannschaftsgruppe_hinzufuegen($quelle_team_id, $ziel_veranstaltung_id)
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $quelle_team_id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) == 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id;
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE teamgruppe_id = $teamgruppe_id AND veranstaltung_id = $ziel_veranstaltung_id";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0)
|
|
return false;
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE veranstaltung_id = $ziel_veranstaltung_id";
|
|
$n = loadResult($db, $query);
|
|
if ($n == 0) die("Wrong id!");
|
|
|
|
$query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)"
|
|
. "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltung_id', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_team_id = $db->insertid();
|
|
|
|
return mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, true, true, true);
|
|
}
|
|
|
|
function mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, $mannschaftsdaten_aktualisieren, $mannschaftsspieler_aktualisieren, $mannschaftsbild_aktualisieren)
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
|
|
if ($quelle_team_id == $ziel_team_id)
|
|
return false;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $quelle_team_id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $quelle_team_id;
|
|
|
|
if ($team->teamgruppe_id == null) {
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET teamgruppe_id = '$teamgruppe_id'"
|
|
. "\n WHERE team_id = $quelle_team_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Mannschaftsdaten aktualisieren
|
|
if ($mannschaftsdaten_aktualisieren) {
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET teamgruppe_id = '$teamgruppe_id',"
|
|
. "\n verein_id = " . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ","
|
|
. "\n teamname = '" . $db->escape($team->teamname) . "',"
|
|
. "\n teamname_kurz = '" . $db->escape($team->teamname_kurz) . "',"
|
|
. "\n tischtyp = '" . $db->escape($team->tischtyp) . "',"
|
|
. "\n tischeigenschaften = '" . $db->escape($team->tischeigenschaften) . "',"
|
|
. "\n heimspiel_wochentag = '" . $db->escape($team->heimspiel_wochentag) . "',"
|
|
. "\n heimspiel_uhrzeit = '" . $db->escape($team->heimspiel_uhrzeit) . "',"
|
|
. "\n heimspielort_id = " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ","
|
|
. "\n nichtraucherschutz = '$team->nichtraucherschutz',"
|
|
. "\n pin = '" . $db->escape($team->pin) . "'"
|
|
. "\n WHERE team_id = $ziel_team_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
// Teamvertreter kopieren
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $quelle_team_id ORDER BY berechtigt_fuer_team_id";
|
|
$quelle_teamvertreter = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id ORDER BY berechtigt_fuer_team_id";
|
|
$ziel_teamvertreter = loadObjectList($db, $query);
|
|
$quelle_teamvertreter_anzahl = count($quelle_teamvertreter);
|
|
$ziel_teamvertreter_anzahl = count($ziel_teamvertreter);
|
|
for ($i = 0; $i < $quelle_teamvertreter_anzahl; $i++) {
|
|
$berechtigt_user_id = $quelle_teamvertreter[$i]->berechtigt_user_id;
|
|
if ($i < $ziel_teamvertreter_anzahl) {
|
|
$berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id;
|
|
$query = "UPDATE #__sportsmanager_berechtigt_fuer_team"
|
|
. "\n SET berechtigt_user_id = '$berechtigt_user_id'"
|
|
. "\n WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id";
|
|
} else {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)"
|
|
. "\n VALUES ('$berechtigt_user_id', '$ziel_team_id');";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
for ($i = $quelle_teamvertreter_anzahl; $i < $ziel_teamvertreter_anzahl; $i++) {
|
|
$berechtigt_fuer_team_id = $ziel_teamvertreter[$i]->berechtigt_fuer_team_id;
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_fuer_team_id = $berechtigt_fuer_team_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Ansprechpartner kopieren
|
|
$query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $quelle_team_id ORDER BY kontaktperson_id";
|
|
$quelle_ansprechpartner = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id ORDER BY kontaktperson_id";
|
|
$ziel_ansprechpartner = loadObjectList($db, $query);
|
|
$quelle_ansprechpartner_anzahl = count($quelle_ansprechpartner);
|
|
$ziel_ansprechpartner_anzahl = count($ziel_ansprechpartner);
|
|
for ($i = 0; $i < $quelle_ansprechpartner_anzahl; $i++) {
|
|
if ($i < $ziel_ansprechpartner_anzahl) {
|
|
$kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id;
|
|
$query = "UPDATE #__sportsmanager_teamansprechpartner"
|
|
. "\n SET nachname = '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "',"
|
|
. "\n vorname = '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "',"
|
|
. "\n telefon = '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "',"
|
|
. "\n mobil = '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "',"
|
|
. "\n email = '" . $db->escape($quelle_ansprechpartner[$i]->email) . "'"
|
|
. "\n WHERE kontaktperson_id = $kontaktperson_id";
|
|
} else {
|
|
$query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)"
|
|
. "\n VALUES ('$ziel_team_id', '" . $db->escape($quelle_ansprechpartner[$i]->nachname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->vorname) . "', '" . $db->escape($quelle_ansprechpartner[$i]->telefon) . "', '" . $db->escape($quelle_ansprechpartner[$i]->mobil) . "', '" . $db->escape($quelle_ansprechpartner[$i]->email) . "');";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
for ($i = $quelle_ansprechpartner_anzahl; $i < $ziel_ansprechpartner_anzahl; $i++) {
|
|
$kontaktperson_id = $ziel_ansprechpartner[$i]->kontaktperson_id;
|
|
$query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $kontaktperson_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Mitglieder aktualisieren
|
|
if ($mannschaftsspieler_aktualisieren) {
|
|
$query = "SELECT spieler_id, ausgetreten, SUM(IF(team_id = $quelle_team_id, 1, 0)) AS mitglied_quelle, SUM(IF(team_id = $ziel_team_id, 1, 0)) AS mitglied_ziel" // , SUM(IF(team_id = $quelle_team_id, 1, IF(team_id = $ziel_team_id, 10000, 0))) AS teammitgliedschaften"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE team_id = $quelle_team_id OR team_id = $ziel_team_id"
|
|
. "\n GROUP BY spieler_id, ausgetreten";
|
|
$vereinte_mitglieder = loadObjectList($db, $query);
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder';
|
|
foreach ($vereinte_mitglieder as $mitglied) {
|
|
$query = "SELECT mitglied_von_team_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten";
|
|
$ziel_mitglieder = loadObjectList($db, $query);
|
|
foreach ($ziel_mitglieder as $ziel_mitglied)
|
|
bildLoeschen("mannschaftsmitglieder", $ziel_mitglied->mitglied_von_team_id);
|
|
|
|
if ($mitglied->mitglied_quelle == 0 && $mitglied->mitglied_ziel > 0) {
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if ($mitglied->mitglied_quelle > 0 && $mitglied->mitglied_ziel == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id, ausgetreten)"
|
|
. "\n VALUES ('$mitglied->spieler_id', '$ziel_team_id', '$mitglied->ausgetreten');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT mitglied_von_team_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $ziel_team_id AND ausgetreten = $mitglied->ausgetreten";
|
|
$ziel_mitglieder = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT mitglied_von_team_id"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE spieler_id = $mitglied->spieler_id AND team_id = $quelle_team_id AND ausgetreten = $mitglied->ausgetreten";
|
|
$quelle_mitglieder = loadObjectList($db, $query);
|
|
$bild_kopiert = false;
|
|
foreach ($quelle_mitglieder as $quelle_mitglied) {
|
|
foreach ($ziel_mitglieder as $ziel_mitglied) {
|
|
$pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_mitglied->mitglied_von_team_id . '.';
|
|
if (file_exists($pfad . 'png') && is_file($pfad . 'png')) {
|
|
File::copy($pfad . 'png', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.png');
|
|
$bild_kopiert = true;
|
|
} else if (file_exists($pfad . 'jpg') && is_file($pfad . 'jpg')) {
|
|
File::copy($pfad . 'jpg', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.jpg');
|
|
$bild_kopiert = true;
|
|
}
|
|
}
|
|
if ($bild_kopiert)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Mannschaftsbild aktualisieren
|
|
if ($mannschaftsbild_aktualisieren) {
|
|
bildLoeschen("mannschaften", $ziel_team_id);
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften';
|
|
$quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $quelle_team_id . '.';
|
|
$ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_team_id . '.';
|
|
if (file_exists($quelle_pfad . 'png') && is_file($quelle_pfad . 'png'))
|
|
$ext = "png";
|
|
else if (file_exists($quelle_pfad . 'jpg') && is_file($quelle_pfad . 'jpg'))
|
|
$ext = "jpg";
|
|
else
|
|
$ext = "";
|
|
if (!empty($ext) && !File::copy($quelle_pfad . $ext, $ziel_pfad . $ext))
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function mannschaftsgruppe_entfernen($ziel_team_id)
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $ziel_team_id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id;
|
|
if ($teamgruppe_id == null)
|
|
return false;
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $ziel_team_id OR gast_team_id = $ziel_team_id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n > 0)
|
|
return false;
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE team_id = $ziel_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row)
|
|
bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id);
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $ziel_team_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_team WHERE team_id = $ziel_team_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE teamgruppe_id = $teamgruppe_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n == 1) {
|
|
$query = "UPDATE #__sportsmanager_team"
|
|
. "\n SET teamgruppe_id = NULL"
|
|
. "\n WHERE teamgruppe_id = $teamgruppe_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function heimspieltag_aktualisieren($team_id): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $team_id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
|
|
if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7)
|
|
return;
|
|
|
|
$query = "SELECT begegnung_id, zeitpunkt"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
|
|
. "\n WHERE heim_team_id = $team_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)"
|
|
. "\n ORDER BY spieltag DESC";
|
|
$begegnungen = loadObjectList($db, $query);
|
|
foreach ($begegnungen as $begegnung) {
|
|
$ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1));
|
|
$neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100);
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET zeitpunkt = '$neuer_zeitpunkt'"
|
|
. "\n WHERE begegnung_id = $begegnung->begegnung_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
function termin_aktualisieren($begegnung_id): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT heim_team_id, zeitpunkt"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
|
|
. "\n WHERE begegnung_id = $begegnung_id AND COALESCE(heim_spielpunkte, 0) = 0 AND COALESCE(gast_spielpunkte, 0) = 0 AND NOT ISNULL(zeitpunkt) AND ISNULL(spielort_id) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id) AND NOT EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id)"
|
|
. "\n ORDER BY spieltag DESC";
|
|
$begegnungen = loadObjectList($db, $query);
|
|
if (count($begegnungen) < 1)
|
|
return;
|
|
$begegnung = $begegnungen[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $begegnung->heim_team_id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
|
|
if ($team->heimspiel_wochentag < 1 || $team->heimspiel_wochentag > 7)
|
|
return;
|
|
|
|
$ts = getdate(geaenderterWochentag(strtotime($begegnung->zeitpunkt), $team->heimspiel_wochentag - 1));
|
|
$neuer_zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100);
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET zeitpunkt = '$neuer_zeitpunkt'"
|
|
. "\n WHERE begegnung_id = $begegnung_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveMannschaft(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT teamgruppe_id, veranstaltung_id FROM #__sportsmanager_team WHERE team_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
|
|
if ($veranstaltungId != $rows[0]->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_begegnung WHERE heim_team_id = $id OR gast_team_id = $id), 1, 0)";
|
|
$n = loadResult($db, $query);
|
|
if ($n > 0) die(Text::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS'));
|
|
|
|
if ($rows[0]->teamgruppe_id != null) {
|
|
mannschaftsgruppe_entfernen($id);
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n WHERE team_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row)
|
|
bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id);
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_team WHERE team_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("mannschaften", $id);
|
|
}
|
|
|
|
teamstatistikAktualisieren($veranstaltungId);
|
|
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function adminKopierenMannschaftForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_team.*, vereinsname"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
$beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_veranstaltungen) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE " . veranstaltungFilter("veranstaltung_id IN")
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
}
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminKopierenMannschaft($veranstaltung, $teams, $veranstaltungen);
|
|
}
|
|
|
|
#[NoReturn] function adminKopierenMannschaft(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ids = $jInput->get('ids', array(), 'ARRAY');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
$mitglieder_kopieren = $jInput->get('mitglieder_kopieren', 0, 'INT');
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
|
|
$ziel_veranstaltungen_ids = array();
|
|
for ($i = 1; $i <= 4; $i++) {
|
|
$ziel_veranstaltungid = $jInput->get('ziel_veranstaltungid_' . $i, 0, 'INT');
|
|
if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid)))
|
|
continue;
|
|
if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids))
|
|
$ziel_veranstaltungen_ids[] = $ziel_veranstaltungid;
|
|
}
|
|
|
|
foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) {
|
|
foreach ($ids as $id) {
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
|
|
if ($veranstaltungId != $team->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
$query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, pin)"
|
|
. "\n VALUES (" . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ", '$ziel_veranstaltungid', '" . $db->escape($team->teamname) . "', '" . $db->escape($team->tischtyp) . "', '" . $db->escape($team->tischeigenschaften) . "', '" . $db->escape($team->heimspiel_wochentag) . "', '" . $db->escape($team->heimspiel_uhrzeit) . "', " . ($team->heimspielort_id != 0 ? "'$team->heimspielort_id'" : "NULL") . ", '$team->nichtraucherschutz', '" . $db->escape($team->pin) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_teamid = $db->insertid();
|
|
|
|
// Mitglieder kopieren
|
|
if ($mitglieder_kopieren) {
|
|
$query = "SELECT * FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id AND NOT ausgetreten";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_mitglied_von_team (spieler_id, team_id)"
|
|
. "\n VALUES ('$row->spieler_id', '$ziel_teamid');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_mitglied_von_team_id = $db->insertid();
|
|
|
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . '.';
|
|
if (file_exists($pfad . 'png') && is_file($pfad . 'png'))
|
|
File::copy($pfad . 'png', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.png');
|
|
else if (file_exists($pfad . 'jpg') && is_file($pfad . 'jpg'))
|
|
File::copy($pfad . 'jpg', $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder' . DIRECTORY_SEPARATOR . $ziel_mitglied_von_team_id . '.jpg');
|
|
}
|
|
}
|
|
|
|
// Teamvertreter kopieren
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id ORDER BY berechtigt_fuer_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_team (berechtigt_user_id, berechtigt_team_id)"
|
|
. "\n VALUES ('$row->berechtigt_user_id', '$ziel_teamid');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Ansprechpartner kopieren
|
|
$query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT INTO #__sportsmanager_teamansprechpartner (team_id, nachname, vorname, telefon, mobil, email)"
|
|
. "\n VALUES ('$ziel_teamid', '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->telefon) . "', '" . $db->escape($row->mobil) . "', '" . $db->escape($row->email) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $id . '.';
|
|
if (file_exists($pfad . 'png') && is_file($pfad . 'png'))
|
|
File::copy($pfad . "png", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.png');
|
|
else if (file_exists($pfad . 'jpg') && is_file($pfad . 'jpg'))
|
|
File::copy($pfad . "jpg", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.jpg');
|
|
}
|
|
}
|
|
|
|
teamstatistikAktualisieren($ziel_veranstaltungid);
|
|
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function adminVerknuepfenMannschaftForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_team.*, vereinsname"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)"
|
|
. "\n WHERE #__sportsmanager_team.veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
$beschraenkter_zugriff_veranstaltungen = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
if ($beschraenkter_zugriff_veranstaltungen) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id AND " . veranstaltungFilter("veranstaltung_id IN")
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id"
|
|
. "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
}
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVerknuepfenMannschaft($veranstaltung, $teams, $veranstaltungen);
|
|
}
|
|
|
|
#[NoReturn] function adminVerknuepfenMannschaft(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ids = $jInput->get('ids', array(), 'ARRAY');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$beschraenkter_zugriff = benutzerZugriff("mannschaftswettbewerb_aendern") ? 0 : 1;
|
|
|
|
$ziel_veranstaltungen_ids = array();
|
|
for ($i = 1; $i <= 4; $i++) {
|
|
$ziel_veranstaltungid = $jInput->get('ziel_veranstaltungid_' . $i, 0, 'INT');
|
|
if (empty($ziel_veranstaltungid) || ($beschraenkter_zugriff && !benutzerVeranstaltungModerator($ziel_veranstaltungid)))
|
|
continue;
|
|
if (!in_array($ziel_veranstaltungid, $ziel_veranstaltungen_ids))
|
|
$ziel_veranstaltungen_ids[] = $ziel_veranstaltungid;
|
|
}
|
|
|
|
foreach ($ziel_veranstaltungen_ids as $ziel_veranstaltungid) {
|
|
foreach ($ids as $id) {
|
|
$query = "SELECT * FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $id";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) === 0) die("Wrong id!");
|
|
$team = $teams[0];
|
|
|
|
if ($veranstaltungId != $team->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
mannschaftsgruppe_hinzufuegen($id, $ziel_veranstaltungid);
|
|
}
|
|
}
|
|
|
|
teamstatistikAktualisieren($ziel_veranstaltungid);
|
|
|
|
redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function adminMitglieder(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator())
|
|
keinZugriff(true);
|
|
|
|
$berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern");
|
|
|
|
$teamid = $jInput->get('teamid', 0, 'INT');
|
|
if ($teamid == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT mitglied_von_team_id, spieler_id, aktueller_verein_id, MAX(IF(team_id = $teamid, #__sportsmanager_mitglied_von_team.ausgetreten, 0)) AS ausgetreten, MAX(IF(team_id = $teamid, erster_spieltag, NULL)) AS erster_spieltag, MAX(IF(team_id = $teamid, letzter_spieltag, NULL)) AS letzter_spieltag, vorname, nachname, spielernr, MIN(IF(team_id = $teamid, 0, 1)) AS anderes_team"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n INNER JOIN #__sportsmanager_team USING (team_id)"
|
|
. "\n WHERE (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"
|
|
. "\n GROUP BY spieler_id"
|
|
. "\n ORDER BY anderes_team, IF(#__sportsmanager_mitglied_von_team.ausgetreten, 1, 0), nachname, vorname, erster_spieltag";
|
|
$mitglieder = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminMitglieder($team, $veranstaltung, $mitglieder, $berechtigt_spieler_aendern);
|
|
}
|
|
|
|
function adminEditMitglied(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$teamid = $jInput->get('teamid', 0, 'INT');
|
|
$alle_anzeigen = $jInput->get('alle_anzeigen', 0, 'INT');
|
|
$entfernen = $jInput->get('entfernen', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid;
|
|
|
|
if (empty($id))
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT #__sportsmanager_mitglied_von_team.*, vorname, nachname FROM #__sportsmanager_mitglied_von_team LEFT JOIN #__sportsmanager_spieler USING (spieler_id) INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $team->veranstaltung_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
if (empty($id)) {
|
|
$query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, team_id, NULL AS mitglied_von_team_id, NULL AS erster_spieltag, NULL AS letzter_spieltag, NULL AS ausgetreten"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)"
|
|
. "\n WHERE team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "")
|
|
. "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung";
|
|
} else {
|
|
$query = "SELECT DISTINCT veranstaltung_id, bezeichnung, unterteilung, saison_id, veranstaltungen.team_id, mitglied_von_team_id, erster_spieltag, letzter_spieltag, #__sportsmanager_mitglied_von_team.ausgetreten"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT veranstaltung_id, team_id, teamgruppe_id FROM #__sportsmanager_team WHERE #__sportsmanager_team.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "") . ") AS veranstaltungen USING (veranstaltung_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_mitglied_von_team ON veranstaltungen.team_id = #__sportsmanager_mitglied_von_team.team_id AND spieler_id = " . $row->spieler_id
|
|
. "\n WHERE veranstaltungen.team_id = $teamid" . (!empty($team->teamgruppe_id) ? " OR teamgruppe_id = $team->teamgruppe_id" : "")
|
|
. "\n ORDER BY IF(veranstaltung_id = $team->veranstaltung_id, 0, 1), bezeichnung";
|
|
}
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
$veranstaltungen_begegnungen = array();
|
|
foreach ($veranstaltungen as $v) {
|
|
$query = "SELECT spieltag, zeitpunkt"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt < CURDATE()"
|
|
. "\n ORDER BY zeitpunkt DESC"
|
|
. "\n LIMIT 2";
|
|
$begegnungen = loadObjectList($db, $query);
|
|
$veranstaltungen_begegnungen[$v->veranstaltung_id] = array();
|
|
$begegnungen = array_reverse($begegnungen);
|
|
foreach ($begegnungen as $begegnung)
|
|
$veranstaltungen_begegnungen[$v->veranstaltung_id][] = array($begegnung->spieltag, $begegnung->zeitpunkt);
|
|
|
|
$query = "SELECT spieltag, zeitpunkt"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n WHERE (heim_team_id = " . $v->team_id . " OR gast_team_id = " . $v->team_id . ") AND zeitpunkt >= CURDATE()"
|
|
. "\n ORDER BY zeitpunkt"
|
|
. "\n LIMIT 4";
|
|
$begegnungen = loadObjectList($db, $query);
|
|
foreach ($begegnungen as $begegnung)
|
|
$veranstaltungen_begegnungen[$v->veranstaltung_id][] = array($begegnung->spieltag, $begegnung->zeitpunkt);
|
|
}
|
|
|
|
if ($team->verein_id != null) {
|
|
$query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $team->verein_id";
|
|
$vereine = loadObjectList($db, $query);
|
|
if (count($vereine) < 1) die ("Wrong id");
|
|
}
|
|
|
|
if (empty($id)) {
|
|
if (!empty($team->verein_id) && !$alle_anzeigen) {
|
|
$query = "SELECT DISTINCT #__sportsmanager_spieler.spieler_id, vorname, nachname, spielernr, 1 AS aktives_mitglied"
|
|
. "\n FROM #__sportsmanager_mitglied_von_verein"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"
|
|
. " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
} else {
|
|
$query = "SELECT spieler_id, vorname, nachname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE NOT ISNULL(aktueller_verein_id)"
|
|
. " AND spieler_id NOT IN (SELECT spieler_id FROM #__sportsmanager_team INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE team_id = $teamid OR teamgruppe_id = $teamgruppe_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
}
|
|
$spieler = loadObjectList($db, $query);
|
|
if (!empty($team->verein_id) && !$alle_anzeigen) {
|
|
$query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)"
|
|
. "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1)"
|
|
. " AND EXISTS(SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten)"
|
|
. "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
|
|
} else {
|
|
$query = "SELECT spieler_id, veranstaltung_id, unterteilung, erster_spieltag, letzter_spieltag, team_id, ausgetreten"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)"
|
|
. "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id AND (unterteilung = 0 OR unterteilung = 1) AND NOT ISNULL(aktueller_verein_id)"
|
|
. "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie";
|
|
}
|
|
$mitgliedschaften = loadObjectList($db, $query);
|
|
$spielberechtigungen = array();
|
|
foreach ($mitgliedschaften as $mitgliedschaft) {
|
|
if (!isset($spielberechtigungen[$mitgliedschaft->spieler_id]))
|
|
$spielberechtigungen[$mitgliedschaft->spieler_id] = array();
|
|
$spielberechtigungen[$mitgliedschaft->spieler_id][] = array($mitgliedschaft->veranstaltung_id, $mitgliedschaft->unterteilung, $mitgliedschaft->erster_spieltag, $mitgliedschaft->letzter_spieltag, $mitgliedschaft->team_id, $mitgliedschaft->ausgetreten);
|
|
}
|
|
|
|
// Veranstaltungsbezeichnungen ermitteln
|
|
$query = "SELECT veranstaltung_id, bezeichnung"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id";
|
|
$rows = loadObjectList($db, $query);
|
|
$veranstaltungsbezeichnungen = array();
|
|
foreach ($rows as $v)
|
|
$veranstaltungsbezeichnungen[$v->veranstaltung_id] = $v->bezeichnung;
|
|
|
|
// Mannschaftsbezeichnungen ermitteln
|
|
$query = "SELECT team_id, teamname"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
|
|
. "\n WHERE saison_id = $veranstaltung->saison_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $m)
|
|
$veranstaltungsbezeichnungen[$m->team_id] = $m->teamname;
|
|
|
|
} else {
|
|
$spieler = array();
|
|
$spielberechtigungen = null;
|
|
$veranstaltungsbezeichnungen = null;
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditMitglied($row, $team, $spieler, $spielberechtigungen, $veranstaltungsbezeichnungen, $veranstaltungen, $veranstaltungen_begegnungen, $entfernen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveMitglied(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$spielerids = $id != 0 ? array($id) : $jInput->get('spielerids', array(), 'ARRAY');
|
|
$teamid = $jInput->get('teamid', 0, 'INT');
|
|
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id");
|
|
$team = $teams[0];
|
|
$teamgruppe_id = $team->teamgruppe_id != null ? $team->teamgruppe_id : $teamid;
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($team->veranstaltung_id))
|
|
keinZugriff();
|
|
|
|
// Sicherstellen, dass Mannschaftsmitglied zum Team gehört
|
|
if (!empty($id)) {
|
|
$query = "SELECT * FROM #__sportsmanager_mitglied_von_team INNER JOIN #__sportsmanager_team USING (team_id) WHERE spieler_id = $id AND (team_id = $teamid OR teamgruppe_id = $teamgruppe_id)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
}
|
|
|
|
$query = "SELECT DISTINCT veranstaltung_id, team_id"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $teamid" . (!empty($teamgruppe_id) ? " OR teamgruppe_id = $teamgruppe_id" : null);
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
foreach ($veranstaltungen as $v) {
|
|
$status = $jInput->get('status_' . $v->veranstaltung_id, -1, 'INT');
|
|
if ($status == -1)
|
|
continue;
|
|
|
|
$erste_runde_typ = $jInput->get('erste_runde_typ_' . $v->veranstaltung_id, -1, 'INT');
|
|
$erste_runde = max(min(abs($jInput->get('erste_runde_' . $v->veranstaltung_id, 1, 'INT')), $erste_runde_typ == -2 ? 99 : 9999), 1);
|
|
$erste_runde_platzierung_ende = max(min(abs($jInput->get('erste_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $erste_runde + 99), 1);
|
|
|
|
if ($erste_runde_typ >= 10000)
|
|
$erste_runde = $erste_runde_typ;
|
|
else if ($erste_runde_typ == -2)
|
|
$erste_runde = 20000 + ((99 - abs($erste_runde_platzierung_ende - $erste_runde)) * 100) + 99 - min($erste_runde, $erste_runde_platzierung_ende);
|
|
else if ($erste_runde_typ == 0)
|
|
$erste_runde = 0;
|
|
|
|
$letzte_runde_typ = $jInput->get('letzte_runde_typ_' . $v->veranstaltung_id, -1, 'INT');
|
|
$letzte_runde = max(min(abs($jInput->get('letzte_runde_' . $v->veranstaltung_id, 1, 'INT')), $letzte_runde_typ == -2 ? 99 : 9999), 1);
|
|
$letzte_runde_platzierung_ende = max(min(abs($jInput->get('letzte_runde_platzierung_ende_' . $v->veranstaltung_id, 0, 'INT')), $letzte_runde + 99), 1);
|
|
|
|
if ($letzte_runde_typ >= 10000)
|
|
$letzte_runde = $letzte_runde_typ;
|
|
else if ($letzte_runde_typ == -2)
|
|
$letzte_runde = 20000 + ((99 - abs($letzte_runde_platzierung_ende - $letzte_runde)) * 100) + 99 - min($letzte_runde, $letzte_runde_platzierung_ende);
|
|
else if ($letzte_runde_typ == 0)
|
|
$letzte_runde = 0;
|
|
|
|
if ($letzte_runde != 0 && $erste_runde != 0 && $erste_runde > $letzte_runde) {
|
|
$t = $erste_runde;
|
|
$erste_runde = $letzte_runde;
|
|
$letzte_runde = $t;
|
|
}
|
|
|
|
if ($id == 0) {
|
|
foreach ($spielerids as $spielerid) {
|
|
if ($status == 0)
|
|
continue;
|
|
|
|
$query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = '" . $db->escape($spielerid) . "'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0)
|
|
continue;
|
|
|
|
$query = "INSERT #__sportsmanager_mitglied_von_team"
|
|
. "\n SET spieler_id = '" . $db->escape($spielerid) . "',"
|
|
. "\n team_id = '$v->team_id',"
|
|
. "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . ","
|
|
. "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . ","
|
|
. "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE") . ";";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
$query = "SELECT mitglied_von_team_id FROM #__sportsmanager_mitglied_von_team WHERE team_id = $v->team_id AND spieler_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if ($status == 0) {
|
|
foreach ($rows as $row) {
|
|
$query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE mitglied_von_team_id = " . $row->mitglied_von_team_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id);
|
|
}
|
|
} else {
|
|
if (count($rows) == 0) {
|
|
$query = "INSERT #__sportsmanager_mitglied_von_team"
|
|
. "\n SET spieler_id = '$id',"
|
|
. "\n team_id = '$v->team_id',"
|
|
. "\n erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . ","
|
|
. "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . ","
|
|
. "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE");
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_mitglied_von_team"
|
|
. "\n SET erster_spieltag = " . ($erste_runde == 0 ? "NULL" : "'$erste_runde'") . ","
|
|
. "\n letzter_spieltag = " . ($letzte_runde == 0 ? "NULL" : "'$letzte_runde'") . ","
|
|
. "\n ausgetreten = " . ($status == 2 ? "TRUE" : "FALSE")
|
|
. "\n WHERE mitglied_von_team_id = " . $rows[0]->mitglied_von_team_id;
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($bildbeibehalten == 0) {
|
|
foreach ($rows as $row) {
|
|
bildLoeschen("mannschaftsmitglieder", $row->mitglied_von_team_id);
|
|
|
|
if (!empty($_FILES["bild"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) {
|
|
redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild wurde nicht gespeichert, da es nicht im JPG/PNG-Format mit mindestens 90*90 und maximal 8192*8192 Bildpunkten vorliegt.");
|
|
}
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder';
|
|
if (!bildKopierenAngepasst($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $row->mitglied_von_team_id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'), 180, 240, 1)) {
|
|
redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid, "Das Bild konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "SELECT team_id"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id != $teamid AND teamgruppe_id = $teamgruppe_id";
|
|
$bestehende_weitere_veranstaltungen_beruecksichtigt = loadObjectList($db, $query);
|
|
foreach ($bestehende_weitere_veranstaltungen_beruecksichtigt as $bestehende_weitere_veranstaltung_beruecksichtigt)
|
|
mannschaftsgruppe_verknuepfen($teamid, $bestehende_weitere_veranstaltung_beruecksichtigt->team_id, false, false, false);
|
|
|
|
redirectSportsManagerURL('&task=admin_mitglieder&teamid=' . $teamid);
|
|
}
|
|
|
|
function adminBegegnungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$modus_id = $veranstaltung->modus_id;
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id";
|
|
$rows = loadObjectList($db, $query);
|
|
$modus = null;
|
|
if (count($rows) == 1)
|
|
$modus = $rows[0];
|
|
|
|
$query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t2.nichtraucherschutz AS heim_nichtraucherschutz, t3.nichtraucherschutz AS gast_nichtraucherschutz,"
|
|
. "\n EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id AND aktion IN (1, 5)) AS verlegt,"
|
|
. "\n (SELECT IF(#__sportsmanager_begegnung_historie.aktion NOT IN (0, 3, 4), NULL, #__sportsmanager_begegnung_historie.eingetragen) AS eingetragen FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen,"
|
|
|
|
. "\n UNIX_TIMESTAMP(t1.zeitpunkt) AS termin_spiel,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT UNIX_TIMESTAMP(zeitpunkt)"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 2"
|
|
. "\n ORDER BY begegnung_historie_id ASC"
|
|
. "\n LIMIT 1"
|
|
. "\n ) AS termin_original,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT team_id"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id AND aktion IN (0, 3)"
|
|
. "\n ORDER BY begegnung_historie_id ASC"
|
|
. "\n LIMIT 1"
|
|
. "\n ) AS verantwortliches_team,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT UNIX_TIMESTAMP(zeitpunkt)"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 1"
|
|
. "\n ORDER BY begegnung_historie_id ASC"
|
|
. "\n LIMIT 1"
|
|
. "\n ) AS termin_akzeptiert,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT UNIX_TIMESTAMP(eingetragen)"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 6"
|
|
. "\n ORDER BY begegnung_historie_id ASC"
|
|
. "\n LIMIT 1"
|
|
. "\n ) AS ergebnis_vorgeschlagen,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT UNIX_TIMESTAMP(eingetragen)"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 7"
|
|
. "\n ORDER BY begegnung_historie_id ASC"
|
|
. "\n LIMIT 1"
|
|
. "\n ) AS ergebnis_akzeptiert,"
|
|
|
|
. "\n ("
|
|
. "\n SELECT COUNT(*) FROM #__sportsmanager_teamspiel"
|
|
. "\n WHERE begegnung_id = t1.begegnung_id"
|
|
. "\n AND (heim_spieler_1_id = 0 OR heim_spieler_2_id = 0 OR gast_spieler_1_id = 0 OR gast_spieler_2_id = 0)"
|
|
. "\n ) AS fehlende_spieler"
|
|
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
|
|
. "\n WHERE t2.veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, t1.spiel_nr, " : "") . "t1.zeitpunkt, heim_name";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows);
|
|
}
|
|
|
|
function adminEditBegegnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
if (empty($id)) {
|
|
$query = "SELECT #__sportsmanager_begegnung.*"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)"
|
|
. "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY zeitpunkt DESC LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
$row = count($rows) < 1 ? null : $rows[0]; // Falls keine Begegnung als Vorlage verfügbar ist
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
// Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungId";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id!");
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
// Vorgeschlagene Termine ermitteln
|
|
$query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id"
|
|
. "\n LEFT JOIN #__users AS user ON user.id = user_id"
|
|
. "\n WHERE begegnung_id = $id"
|
|
. "\n ORDER BY begegnung_historie_id DESC";
|
|
$verlegen_aktionen = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte);
|
|
HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveBegegnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$update = $id != 0;
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
$heim_team_id = $jInput->get('heim_team_id', 0, 'INT');
|
|
$gast_team_id = $jInput->get('gast_team_id', 0, 'INT');
|
|
$spielort_id = $jInput->get('spielort_id', 0, 'INT');
|
|
$tisch = $db->escape(trim($jInput->get('tisch', '', 'RAW')));
|
|
$nichtraucherschutz = $jInput->get('nichtraucherschutz', 0, 'INT');
|
|
$rundentyp = $jInput->get('rundentyp', -1, 'INT');
|
|
$runde = max(min(abs($jInput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1);
|
|
$platzierung_ende = max(min(abs($jInput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1);
|
|
$aktualisieren_ab_datum = $datum;
|
|
|
|
if ($rundentyp >= 10000)
|
|
$runde = $rundentyp;
|
|
else if ($rundentyp == -2)
|
|
$runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende);
|
|
else if ($rundentyp == 0)
|
|
$runde = 0;
|
|
|
|
$query = "SELECT status, elo_wertung"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong Id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
// Sicherstellen, dass Teams zu Veranstaltung gehören
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $heim_team_id AND veranstaltung_id = $veranstaltungId";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id!");
|
|
$heim_team = $teams[0];
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $gast_team_id AND veranstaltung_id = $veranstaltungId";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id!");
|
|
$gast_team = $teams[0];
|
|
|
|
$begegnung = null;
|
|
$user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id, tisch, nichtraucherschutz)"
|
|
. "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ", '$tisch', '$nichtraucherschutz');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
// Begegnung ermitteln
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$begegnung = $rows[0];
|
|
|
|
if (!empty($begegnung->zeitpunkt) && substr($begegnung->zeitpunkt, 0, 10) < $aktualisieren_ab_datum)
|
|
$aktualisieren_ab_datum = substr($begegnung->zeitpunkt, 0, 10);
|
|
|
|
if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id) {
|
|
$query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($begegnung->zeitpunkt != $zeitpunkt && $begegnung->verlegen_aktionen != 0) {
|
|
$aktueller_zeitpunkt = date('Y-m-d H:i:s');
|
|
$query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)"
|
|
. "\n VALUES ($id, 5, " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$user_id', NULL, NULL, NULL, '$aktueller_zeitpunkt');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($begegnung->heim_team_id != $heim_team_id || $begegnung->gast_team_id != $gast_team_id || $begegnung->zeitpunkt != $zeitpunkt || $begegnung->spieltag != $runde || $begegnung->spielort_id != $spielort_id || (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch) || $begegnung->nichtraucherschutz != $nichtraucherschutz) {
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET zeitpunkt = " . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ","
|
|
. "\n spieltag = " . ($runde != null ? "'$runde'" : "NULL") . ","
|
|
. "\n heim_team_id = '$heim_team_id',"
|
|
. "\n gast_team_id = '$gast_team_id',"
|
|
. "\n spielort_id = " . ($spielort_id != 0 ? "'$spielort_id'" : "NULL") . ","
|
|
. "\n tisch = '$tisch',"
|
|
. "\n nichtraucherschutz = '$nichtraucherschutz'"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($veranstaltung->status > 0) {
|
|
if ($update && (empty($begegnung->tisch) != empty($tisch) || $begegnung->tisch != $tisch)) {
|
|
$query = "SELECT *,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung_historie WHERE #__sportsmanager_begegnung_historie.begegnung_id = #__sportsmanager_begegnung.begegnung_id) AS verlegen_aktionen"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$begegnung = $rows[0];
|
|
begegnungTischChanged($begegnung, $heim_team, $gast_team);
|
|
}
|
|
|
|
if ($veranstaltung->elo_wertung > 0) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
|
|
function adminRemoveBegegnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
// Sicherstellen, dass Begegnung zu Veranstaltung gehört und Elo-Status abrufen
|
|
$query = "SELECT status, elo_wertung, zeitpunkt"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
|
. "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
|
|
. "\n WHERE begegnung_id = $id AND veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
return;
|
|
}
|
|
$row = $rows[0];
|
|
|
|
$elo_aktualisieren = $row->status != 0 && $row->elo_wertung != 0;
|
|
$aktualisieren_ab_datum = !empty($row->zeitpunkt) ? substr($row->zeitpunkt, 0, 10) : null;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
spielerstatistikAktualisieren(0, $veranstaltungId);
|
|
teamstatistikAktualisieren($veranstaltungId);
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
#[NoReturn] function adminHeimtauschBegegnung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
// Sicherstellen, dass mindestens ein Team zur Veranstaltung gehört
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $row->heim_team_id AND veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id!");
|
|
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id,"
|
|
. "\n gast_team_id = @temp_heim_team_id,"
|
|
. "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte,"
|
|
. "\n gast_punkte = @temp_heim_punkte,"
|
|
. "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte,"
|
|
. "\n gast_spielpunkte = @temp_heim_spielpunkte"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id,"
|
|
. "\n gast_spieler_1_id = @temp_heim_spieler_1_id,"
|
|
. "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id,"
|
|
. "\n gast_spieler_2_id = @temp_heim_spieler_2_id,"
|
|
. "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte,"
|
|
. "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte,"
|
|
. "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte,"
|
|
. "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
termin_aktualisieren($id);
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
|
|
function adminEditBegegnungSpielplan($bestaetigen): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id);
|
|
$erneut_oeffnen = $jInput->get('erneut_oeffnen', 0, 'INT');
|
|
|
|
if ($bestaetigen == 2) {
|
|
$pin = $db->escape(trim($jInput->get('pin', '', 'RAW')));
|
|
if (empty($pin)) {
|
|
$encrypted_pin = $db->escape($jInput->get('epin', '', 'RAW'));
|
|
if (empty($encrypted_pin)) {
|
|
redirectSportsManagerURL(null, "Keine PIN eingegeben.");
|
|
}
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0) die("Missing id!");
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
$pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA");
|
|
}
|
|
|
|
$query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id"
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
|
|
. "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))"
|
|
. "\n ORDER BY t1.zeitpunkt"
|
|
. "\n LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
redirectSportsManagerURL(null, "Keine offene Begegnung zur PIN gefunden.");
|
|
}
|
|
|
|
$id = $rows[0]->begegnung_id;
|
|
$veranstaltungId = $rows[0]->veranstaltung_id;
|
|
$aus_uebersicht = 0;
|
|
$anderes_team_id = $rows[0]->anderes_team_id;
|
|
} else {
|
|
$pin = "";
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0) die("Missing id!");
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
$aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT');
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$teamspiel_modus_id = $veranstaltung->modus_id;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $teamspiel_modus_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$teamspiel_modus = $rows[0];
|
|
|
|
$query = "SELECT t1.*, t2.unbestaetigtes_ergebnis_id, t2.kommentar, t2.zwischenergebnis,";
|
|
$query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND (tt1.berechtigt_team_id = t1.heim_team_id OR tt1.berechtigt_team_id = t1.gast_team_id)) AS berechtigt_fuer_team_eintragen,";
|
|
if ($bestaetigen != 2) {
|
|
$query .= "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE tt1.berechtigt_user_id = $user_id AND ((tt1.berechtigt_team_id = t1.heim_team_id AND t4.vorschlagendes_team_id = t1.gast_team_id) OR (tt1.berechtigt_team_id = t1.gast_team_id AND t4.vorschlagendes_team_id = t1.heim_team_id))) AS berechtigt_fuer_team_akzeptieren";
|
|
} else {
|
|
$query .= "\n IF(t4.vorschlagendes_team_id = $anderes_team_id, 1, 0) AS berechtigt_fuer_team_akzeptieren";
|
|
}
|
|
$query .= "\n FROM #__sportsmanager_begegnung AS t1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t2 ON t1.begegnung_id = t2.begegnung_id"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
|
|
. "\n WHERE t1.begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$begegnung = $rows[0];
|
|
|
|
// Vorgeschlagene Termine ermitteln
|
|
$query = "SELECT #__sportsmanager_begegnung_historie.*, team.teamname as team, user.username, user.name, verantwortlich_team.teamname as verantwortlich_team"
|
|
. "\n FROM #__sportsmanager_begegnung_historie"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS team USING (team_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS verantwortlich_team ON verantwortlich_team.team_id = verantwortlich_team_id"
|
|
. "\n LEFT JOIN #__users AS user ON user.id = user_id"
|
|
. "\n WHERE begegnung_id = $id"
|
|
. "\n ORDER BY begegnung_historie_id DESC";
|
|
$verlegen_aktionen = loadObjectList($db, $query);
|
|
if ($bestaetigen == 1) {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0))
|
|
keinZugriff();
|
|
|
|
$query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0)
|
|
keinZugriff(true);
|
|
} else if ($bestaetigen !== 2) {
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$heim_team = $rows[0];
|
|
|
|
if ($veranstaltungId != $heim_team->veranstaltung_id)
|
|
die("Wrong id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$gast_team = $rows[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer";
|
|
$spiele = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team as t1"
|
|
. "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)"
|
|
. "\n WHERE team_id = $begegnung->heim_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "")
|
|
. "\n ORDER BY nachname, vorname";
|
|
$heim_spieler = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_mitglied_von_team as t1"
|
|
. "\n INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id)"
|
|
. "\n WHERE team_id = $begegnung->gast_team_id AND NOT t1.ausgetreten " . ($begegnung->spieltag != null ? "AND (ISNULL(t1.erster_spieltag) OR t1.erster_spieltag <= $begegnung->spieltag) AND (ISNULL(t1.letzter_spieltag) OR $begegnung->spieltag <= t1.letzter_spieltag) " : "")
|
|
. "\n ORDER BY nachname, vorname";
|
|
$gast_spieler = loadObjectList($db, $query);
|
|
$encrypted_pin = encrypt($pin, "a9cZ" . $veranstaltung->veranstaltung_id . "oDS7" . $id . "2eA");
|
|
// Spielort ermitteln
|
|
$spielortQuery = "SELECT name FROM #__sportsmanager_spielort WHERE spielort_id = \""
|
|
. (Factory::getContainer()->get(SiteApplication::class)->input->getCmd('spielort_heim') == 1
|
|
? $heim_team->heimspielort_id
|
|
: $begegnung->spielort_id) . "\"";
|
|
$begegnung->spielort_name = loadResult($db, $spielortQuery);
|
|
|
|
|
|
if (isJson()) {
|
|
$response = JSON_sportsmanager::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus);
|
|
JSON_sportsmanager::JSON($response);
|
|
} else {
|
|
HTML_sportsmanager_admin::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht);
|
|
HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen);
|
|
}
|
|
|
|
}
|
|
|
|
function adminSaveBegegnungSpielplan(): void
|
|
{
|
|
$app = Factory::getContainer()->get(SiteApplication::class);
|
|
$db = getDatabase();
|
|
$jInput = $app->input;
|
|
$begegnung_input = isJson() ? $jInput->json : $jInput;
|
|
|
|
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id);
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bestaetigen = $begegnung_input->get('bestaetigen', 0, 'INT');
|
|
$zwischenergebnis = isJson() && $jInput->getMethod() === 'PATCH' ? true : $begegnung_input->get('live', false, 'BOOL');
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) {
|
|
abortWithError("Missing id!");
|
|
}
|
|
$kommentar = $db->escape($jInput->get('kommentar', '', 'RAW'));
|
|
$aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT');
|
|
$anzahl_historie = $jInput->get('anzahl_historie', 0, 'INT');
|
|
$erneut_oeffnen = $jInput->get('erneut_oeffnen', 0, 'INT');
|
|
$heim_team_id = $jInput->get('heim_team_id', 0, 'INT');
|
|
$gast_team_id = $jInput->get('gast_team_id', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
if ($bestaetigen == 1) {
|
|
if ($aus_uebersicht) {
|
|
redirectSportsManagerURL('#id' . $id);
|
|
} else {
|
|
redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
} else if ($bestaetigen == 2) {
|
|
if ($aus_uebersicht) {
|
|
redirectSportsManagerURL();
|
|
} else {
|
|
redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
} else {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
}
|
|
|
|
$benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungId); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert
|
|
|
|
$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"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
|
|
. "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$begegnung = $rows[0];
|
|
|
|
$mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id;
|
|
$aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null;
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$veranstaltung = $rows[0];
|
|
|
|
// Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungId";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
|
|
// Spielmodus ermitteln
|
|
$modus_id = $veranstaltung->modus_id;
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$teamspiel_modus = $rows[0];
|
|
|
|
$spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel;
|
|
$spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel;
|
|
$modus = explode("|", $teamspiel_modus->modus);
|
|
$spieltypen = isset($modus[0]) ? explode(",", $modus[0]) : array();
|
|
|
|
$vorschlagendes_team_id = null;
|
|
if ($bestaetigen == 1) {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
keinZugriff();
|
|
}
|
|
$vorschlagendes_team_id = $rows[0]->berechtigt_team_id;
|
|
} else if ($bestaetigen == 2) {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$encrypted_pin = $db->escape($jInput->get('pin', '', 'RAW'));
|
|
$pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA");
|
|
if (empty($pin)) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$vorschlagendes_team_id = $rows[0]->team_id;
|
|
} else {
|
|
if (!$benutzer_ist_moderator) {
|
|
keinZugriff();
|
|
}
|
|
}
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) {
|
|
abortWithError("Missing id!");
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
if ($zwischenergebnis) {
|
|
$query = "INSERT IGNORE INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, zwischenergebnis, kommentar, vorgeschlagen)"
|
|
. "\n VALUES ('$id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "'0'") . ", '1', '$kommentar', now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
$query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)"
|
|
. "\n VALUES ($id, 9, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
} else if ($bestaetigen != 0) {
|
|
$query = "INSERT IGNORE INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)"
|
|
. "\n VALUES ('$id', '$vorschlagendes_team_id', '$kommentar', now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
$query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)"
|
|
. "\n VALUES ($id, 6, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', NULL, now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
} else {
|
|
$query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)"
|
|
. "\n VALUES ($id, 8, NULL, '$user_id', NULL, NULL, NULL, now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer";
|
|
$spiele = loadObjectList($db, $query);
|
|
$spiele_nummern = array();
|
|
foreach ($spiele as $spiel) {
|
|
$spiele_nummern[$spiel->teamspiel_nummer] = $spiel;
|
|
}
|
|
|
|
$total_heim_punkte = 0;
|
|
$total_gast_punkte = 0;
|
|
$total_heim_spielpunkte = 0;
|
|
$total_gast_spielpunkte = 0;
|
|
$spiel_nr = 1;
|
|
do {
|
|
$spieltyp = $spieltypen[$spiel_nr - 1] ?? '';
|
|
|
|
$skip_spiel = $begegnung_input->get('spiel_' . $spiel_nr . '_typ', '', 'RAW') == '' && $jInput->getMethod() === 'PATCH';
|
|
$spieler_angegeben = false;
|
|
$spiel_heim_spieler_1_id = null;
|
|
$spiel_gast_spieler_1_id = null;
|
|
$spiel_heim_spieler_2_id = null;
|
|
$spiel_gast_spieler_2_id = null;
|
|
if ($skip_spiel) {
|
|
if (isset($spiele_nummern[$spiel_nr])) {
|
|
$spiel_heim_punkte = $spiele_nummern[$spiel_nr]->teamspiel_heim_punkte;
|
|
$spiel_gast_punkte = $spiele_nummern[$spiel_nr]->teamspiel_gast_punkte;
|
|
} else {
|
|
$spiel_heim_punkte = 0;
|
|
$spiel_gast_punkte = 0;
|
|
}
|
|
} else {
|
|
$spiel_heim_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte_detailliert', array(), 'ARRAY');
|
|
$spiel_gast_punkte_detailliert = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte_detailliert', array(), 'ARRAY');
|
|
if (empty($spiel_heim_punkte_detailliert)) {
|
|
$spiel_heim_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_punkte', 0, 'INT');
|
|
$spiel_gast_punkte = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_punkte', 0, 'INT');
|
|
$ergebnis_detailliert = $spiel_heim_punkte == 0 && $spiel_gast_punkte == 0 ? '' : ($spiel_heim_punkte . ":" . $spiel_gast_punkte);
|
|
} else {
|
|
$ergebnis_detailliert = "";
|
|
$spiel_heim_punkte = 0;
|
|
$spiel_gast_punkte = 0;
|
|
for ($i = 0; $i < count($spiel_heim_punkte_detailliert); $i++) {
|
|
if (($spiel_heim_punkte_detailliert[$i] == 0 || empty($spiel_heim_punkte_detailliert[$i])) && ($spiel_gast_punkte_detailliert[$i] == 0 || empty($spiel_gast_punkte_detailliert[$i]))) {
|
|
continue;
|
|
}
|
|
if (!empty($ergebnis_detailliert)) {
|
|
$ergebnis_detailliert .= " ";
|
|
}
|
|
$punkte_heim = empty($spiel_heim_punkte_detailliert[$i]) ? "0" : $spiel_heim_punkte_detailliert[$i];
|
|
$punkte_gast = empty($spiel_gast_punkte_detailliert[$i]) ? "0" : $spiel_gast_punkte_detailliert[$i];
|
|
if ($punkte_heim > $punkte_gast) {
|
|
$spiel_heim_punkte++;
|
|
} else if ($punkte_gast > $punkte_heim) {
|
|
$spiel_gast_punkte++;
|
|
}
|
|
$ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast;
|
|
}
|
|
}
|
|
|
|
if ($spieltyp[0] == "S") {
|
|
$spiel_heim_spieler_1_id = 0;
|
|
$spiel_gast_spieler_1_id = 0;
|
|
$spiel_heim_spieler_2_id = 0;
|
|
$spiel_gast_spieler_2_id = 0;
|
|
} else {
|
|
$spiel_heim_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_1_id', 0, 'INT');
|
|
$spiel_gast_spieler_1_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_1_id', 0, 'INT');
|
|
if ($spieltyp[0] == "E") {
|
|
$spiel_heim_spieler_2_id = 0;
|
|
$spiel_gast_spieler_2_id = 0;
|
|
} else {
|
|
$spiel_heim_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_heim_spieler_2_id', 0, 'INT');
|
|
$spiel_gast_spieler_2_id = $begegnung_input->get('spiel_' . $spiel_nr . '_gast_spieler_2_id', 0, 'INT');
|
|
}
|
|
$spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0 || $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0;
|
|
}
|
|
|
|
if ($mannschaften_vertauscht) {
|
|
$t = $spiel_heim_punkte;
|
|
$spiel_heim_punkte = $spiel_gast_punkte;
|
|
$spiel_gast_punkte = $t;
|
|
$ergebnis_detailliert = runden_detailliert_invers($ergebnis_detailliert);
|
|
|
|
$t = $spiel_heim_spieler_1_id;
|
|
$spiel_heim_spieler_1_id = $spiel_gast_spieler_1_id;
|
|
$spiel_gast_spieler_1_id = $t;
|
|
|
|
$t = $spiel_heim_spieler_2_id;
|
|
$spiel_heim_spieler_2_id = $spiel_gast_spieler_2_id;
|
|
$spiel_gast_spieler_2_id = $t;
|
|
}
|
|
|
|
if ($zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie && isset($spiele_nummern[$spiel_nr])) {
|
|
$spiel = $spiele_nummern[$spiel_nr];
|
|
if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) {
|
|
$spiel_heim_punkte = $spiel->teamspiel_heim_punkte;
|
|
$spiel_gast_punkte = $spiel->teamspiel_gast_punkte;
|
|
}
|
|
if ($spiel_heim_spieler_1_id == 0)
|
|
$spiel_heim_spieler_1_id = $spiel->heim_spieler_1_id;
|
|
if ($spiel_gast_spieler_1_id == 0)
|
|
$spiel_gast_spieler_1_id = $spiel->gast_spieler_1_id;
|
|
$spieler_angegeben = $spiel_heim_spieler_1_id != 0 || $spiel_gast_spieler_1_id != 0;
|
|
if ((!empty($spieltyp) && $spieltyp[0] == "D")) {
|
|
if ($spiel_heim_spieler_2_id == 0)
|
|
$spiel_heim_spieler_2_id = $spiel->heim_spieler_2_id;
|
|
if ($spiel_gast_spieler_2_id == 0)
|
|
$spiel_gast_spieler_2_id = $spiel->gast_spieler_2_id;
|
|
if (!$spieler_angegeben)
|
|
$spieler_angegeben = $spiel_heim_spieler_2_id != 0 || $spiel_gast_spieler_2_id != 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)) {
|
|
$total_heim_punkte += $spiel_heim_punkte;
|
|
$total_gast_punkte += $spiel_gast_punkte;
|
|
|
|
if ($spieltyp[0] != "D") {
|
|
if ($spielpunkte_wertung_einzel == 2) {
|
|
$spiel_heim_spielpunkte = $spiel_heim_punkte;
|
|
$spiel_gast_spielpunkte = $spiel_gast_punkte;
|
|
} else {
|
|
if ($spiel_heim_punkte > $spiel_gast_punkte) {
|
|
$spiel_heim_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1);
|
|
$spiel_gast_spielpunkte = 0;
|
|
} else if ($spiel_heim_punkte < $spiel_gast_punkte) {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = $spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1);
|
|
} else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = 0;
|
|
} else if ($spielpunkte_wertung_einzel != 3) {
|
|
$spiel_heim_spielpunkte = 1;
|
|
$spiel_gast_spielpunkte = 1;
|
|
} else {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = 0;
|
|
}
|
|
}
|
|
} else {
|
|
if ($spielpunkte_wertung_doppel == 2) {
|
|
$spiel_heim_spielpunkte = $spiel_heim_punkte;
|
|
$spiel_gast_spielpunkte = $spiel_gast_punkte;
|
|
} else {
|
|
if ($spiel_heim_punkte > $spiel_gast_punkte) {
|
|
$spiel_heim_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1);
|
|
$spiel_gast_spielpunkte = 0;
|
|
} else if ($spiel_heim_punkte < $spiel_gast_punkte) {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = $spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1);
|
|
} else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = 0;
|
|
} else if ($spielpunkte_wertung_doppel != 3) {
|
|
$spiel_heim_spielpunkte = 1;
|
|
$spiel_gast_spielpunkte = 1;
|
|
} else {
|
|
$spiel_heim_spielpunkte = 0;
|
|
$spiel_gast_spielpunkte = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
$total_heim_spielpunkte += $spiel_heim_spielpunkte;
|
|
$total_gast_spielpunkte += $spiel_gast_spielpunkte;
|
|
|
|
if (!$skip_spiel) {
|
|
if (!isset($spiele_nummern[$spiel_nr])) {
|
|
$query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert)"
|
|
. "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");";
|
|
} else {
|
|
$teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id;
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET heim_spieler_1_id = '$spiel_heim_spieler_1_id',"
|
|
. "\n heim_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ","
|
|
. "\n gast_spieler_1_id = '$spiel_gast_spieler_1_id',"
|
|
. "\n gast_spieler_2_id = " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ","
|
|
. "\n teamspiel_heim_punkte = '$spiel_heim_punkte',"
|
|
. "\n teamspiel_gast_punkte = '$spiel_gast_punkte',"
|
|
. "\n teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte',"
|
|
. "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte',"
|
|
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'")
|
|
. "\n WHERE teamspiel_id = $teamspiel_id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$spiel_nr++;
|
|
}
|
|
|
|
} while (isset($spieltypen[$spiel_nr - 1]) && ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)));
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id AND teamspiel_nummer >= $spiel_nr;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
if ($spiel_nr > 1) {
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET heim_punkte = '$total_heim_punkte',"
|
|
. "\n gast_punkte = '$total_gast_punkte',"
|
|
. "\n heim_spielpunkte = '$total_heim_spielpunkte',"
|
|
. "\n gast_spielpunkte = '$total_gast_spielpunkte'"
|
|
. "\n WHERE begegnung_id = $id";
|
|
} else {
|
|
$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));
|
|
}
|
|
|
|
// Benachrichtigung schreiben
|
|
$heim_team = null;
|
|
$gast_team = null;
|
|
$begegnung_alt = null;
|
|
if ($bestaetigen != 0) {
|
|
// Begegnung ermitteln
|
|
$query = "SELECT #__sportsmanager_begegnung.*, unbestaetigtes_ergebnis_id, zwischenergebnis"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
|
|
. "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$begegnung_alt = $begegnung;
|
|
$begegnung = $rows[0];
|
|
|
|
// Heimteam ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$heim_team = $rows[0];
|
|
|
|
// Gastteam ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$gast_team = $rows[0];
|
|
}
|
|
|
|
if ($bestaetigen != 0 && !$zwischenergebnis) {
|
|
$mailfrom = $app->getCfg('mailfrom');
|
|
$fromname = $app->getCfg('fromname');
|
|
$subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis vorgeschlagen";
|
|
$body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " ein Ergebnis eingetragen.\n\nBestaetigen des Ergebnisses ueber " . SportsManagerURL('&task=admin_begegnung_spielplan_edit_bestaetigen&veranstaltungid=' . $veranstaltungId . '&id=' . $id, -1) . ".";
|
|
|
|
$query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")";
|
|
$rows = loadObjectList($db, $query);
|
|
if(!empty($rows)) {
|
|
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
|
|
$mailer->setSender($mailfrom, $fromname);
|
|
$mailer->setSubject($subject);
|
|
$mailer->setBody($body);
|
|
foreach ($rows as $row) {
|
|
$mailer->addBcc($row->email);
|
|
}
|
|
$mailer->send();
|
|
}
|
|
}
|
|
|
|
begegnungChanged($begegnung, $begegnung_alt, $modus, $heim_team, $gast_team, $spiele);
|
|
|
|
if ($bestaetigen == 0) {
|
|
if ($veranstaltung->status != 0) {
|
|
if ($veranstaltung->elo_wertung != 0) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
}
|
|
spielerstatistikAktualisieren(0, $veranstaltungId);
|
|
teamstatistikAktualisieren($veranstaltungId);
|
|
}
|
|
|
|
if (isJson()) {
|
|
begegnungSpielplan();
|
|
} else {
|
|
if ($erneut_oeffnen) {
|
|
redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungId . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungId . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : ''));
|
|
} else if ($bestaetigen == 1) {
|
|
if ($aus_uebersicht)
|
|
redirectSportsManagerURL('#id' . $id);
|
|
else
|
|
redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
} else if ($bestaetigen == 2) {
|
|
if ($aus_uebersicht)
|
|
redirectSportsManagerURL();
|
|
else
|
|
redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId);
|
|
} else {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungSpielplanHeimtausch(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bestaetigen = $jInput->get('bestaetigen', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
$aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT');
|
|
$heim_team_id = $jInput->get('heim_team_id', 0, 'INT');
|
|
$gast_team_id = $jInput->get('gast_team_id', 0, 'INT');
|
|
|
|
$benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungId); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert
|
|
|
|
$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"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
|
|
. "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id!");
|
|
$begegnung = $rows[0];
|
|
|
|
$mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id;
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
// Sicherstellen, dass mindestens ein Team zu Veranstaltung gehört
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE team_id = $begegnung->heim_team_id AND veranstaltung_id = $veranstaltungId";
|
|
$teams = loadObjectList($db, $query);
|
|
if (count($teams) < 1) die ("Wrong id!");
|
|
|
|
// Spielmodus ermitteln
|
|
$modus_id = $veranstaltung->modus_id;
|
|
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$modus = $rows[0];
|
|
|
|
if ($bestaetigen == 1) {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0))
|
|
keinZugriff();
|
|
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_team.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team, #__sportsmanager_begegnung WHERE begegnung_id = $id AND berechtigt_user_id = $user_id AND (berechtigt_team_id = heim_team_id OR berechtigt_team_id = gast_team_id)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0)
|
|
keinZugriff();
|
|
} else if ($bestaetigen == 2) {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0))
|
|
keinZugriff();
|
|
|
|
$encrypted_pin = $db->escape($jInput->get('pin', '', 'RAW'));
|
|
$pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA");
|
|
if (empty($pin))
|
|
keinZugriff();
|
|
|
|
$query = "SELECT team_id FROM #__sportsmanager_begegnung LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id OR gast_team_id = team_id WHERE begegnung_id = $id AND (team_id = $begegnung->heim_team_id OR team_id = $begegnung->gast_team_id) AND NOT ISNULL(pin) AND pin = '$pin'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0)
|
|
keinZugriff();
|
|
|
|
} else {
|
|
if (!$benutzer_ist_moderator)
|
|
keinZugriff();
|
|
}
|
|
|
|
if (!$benutzer_ist_moderator && !$modus->heimtausch)
|
|
keinZugriff();
|
|
|
|
if (!$mannschaften_vertauscht) {
|
|
|
|
$query = "UPDATE #__sportsmanager_begegnung"
|
|
. "\n SET heim_team_id = (@temp_heim_team_id := heim_team_id), heim_team_id = gast_team_id,"
|
|
. "\n gast_team_id = @temp_heim_team_id,"
|
|
. "\n heim_punkte = (@temp_heim_punkte := heim_punkte), heim_punkte = gast_punkte,"
|
|
. "\n gast_punkte = @temp_heim_punkte,"
|
|
. "\n heim_spielpunkte = (@temp_heim_spielpunkte := heim_spielpunkte), heim_spielpunkte = gast_spielpunkte,"
|
|
. "\n gast_spielpunkte = @temp_heim_spielpunkte"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_teamspiel"
|
|
. "\n SET heim_spieler_1_id = (@temp_heim_spieler_1_id := heim_spieler_1_id), heim_spieler_1_id = gast_spieler_1_id,"
|
|
. "\n gast_spieler_1_id = @temp_heim_spieler_1_id,"
|
|
. "\n heim_spieler_2_id = (@temp_heim_spieler_2_id := heim_spieler_2_id), heim_spieler_2_id = gast_spieler_2_id,"
|
|
. "\n gast_spieler_2_id = @temp_heim_spieler_2_id,"
|
|
. "\n teamspiel_heim_punkte = (@temp_teamspiel_heim_punkte := teamspiel_heim_punkte), teamspiel_heim_punkte = teamspiel_gast_punkte,"
|
|
. "\n teamspiel_gast_punkte = @temp_teamspiel_heim_punkte,"
|
|
. "\n teamspiel_heim_spielpunkte = (@temp_teamspiel_heim_spielpunkte := teamspiel_heim_spielpunkte), teamspiel_heim_spielpunkte = teamspiel_gast_spielpunkte,"
|
|
. "\n teamspiel_gast_spielpunkte = @temp_teamspiel_heim_spielpunkte"
|
|
. "\n WHERE begegnung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($bestaetigen != 0 ? ($bestaetigen == 1 ? 'admin_begegnung_spielplan_edit_bestaetigen' : 'pineingabe') : 'admin_begegnung_spielplan_edit') . '&id=' . $id . '&veranstaltungid=' . $veranstaltungId . ($bestaetigen != 0 ? '_bestaetigen' : '') . '&veranstaltungid=' . $veranstaltungId . '&id=' . $id . '&erneut_oeffnen=1' . (!empty($encrypted_pin) ? ('&epin=' . $encrypted_pin) : "") . ($aus_uebersicht ? '&aus_uebersicht=1' : ''));
|
|
}
|
|
|
|
function adminBegegnungSpielplanBestaetigen(): void
|
|
{
|
|
$app = Factory::getContainer()->get(SiteApplication::class);
|
|
$db = getDatabase();
|
|
$jInput = $app->input;
|
|
|
|
$user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id);
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bestaetigen = $jInput->get('bestaetigen', 0, 'INT');
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
$aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT');
|
|
|
|
// Begegnung ermitteln
|
|
$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"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id"
|
|
. "\n WHERE #__sportsmanager_begegnung.begegnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$begegnung = $rows[0];
|
|
|
|
$aktualisieren_ab_datum = !empty($begegnung->zeitpunkt) ? substr($begegnung->zeitpunkt, 0, 10) : null;
|
|
|
|
if ($bestaetigen == 2) {
|
|
$encrypted_pin = $db->escape($jInput->get('pin', '', 'RAW'));
|
|
$pin = decrypt($encrypted_pin, "a9cZ" . $veranstaltungId . "oDS7" . $id . "2eA");
|
|
if (empty($pin)) {
|
|
keinZugriff();
|
|
}
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$query = "SELECT t1.begegnung_id, t5.veranstaltung_id, IF(t2.pin = '$pin', heim_team_id, gast_team_id) AS aktion_team_id, IF(t2.pin = '$pin', gast_team_id, heim_team_id) AS anderes_team_id,"
|
|
. "\n IF(t4.vorschlagendes_team_id = IF(t2.pin = '$pin', gast_team_id, heim_team_id), 1, 0) AS berechtigt_fuer_team_akzeptieren"
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
|
|
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
|
|
. "\n WHERE t5.status > 0 " . kategorieFilter("AND t5.kategorie IN") . " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis OR NOT ISNULL(unbestaetigtes_ergebnis_id)) AND ((NOT ISNULL(t2.pin) AND t2.pin = '$pin') OR (NOT ISNULL(t3.pin) AND t3.pin = '$pin'))"
|
|
. "\n ORDER BY t1.zeitpunkt"
|
|
. "\n LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
keinZugriff();
|
|
}
|
|
|
|
if (!$rows[0]->berechtigt_fuer_team_akzeptieren) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$aktion_team_id = $rows[0]->aktion_team_id;
|
|
} else {
|
|
if ($begegnung->unbestaetigtes_ergebnis_id == null && ($begegnung->heim_punkte != 0 || $begegnung->gast_punkte != 0)) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$query = "SELECT t1.berechtigt_team_id FROM #__sportsmanager_berechtigt_fuer_team AS t1, #__sportsmanager_begegnung AS t2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis t3 ON t2.begegnung_id = t3.begegnung_id WHERE NOT t3.zwischenergebnis AND t2.begegnung_id = $id AND t1.berechtigt_user_id = $user_id AND ((t1.berechtigt_team_id = t2.heim_team_id AND t3.vorschlagendes_team_id = t2.gast_team_id) OR (t1.berechtigt_team_id = t2.gast_team_id AND t3.vorschlagendes_team_id = t2.heim_team_id))";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) == 0) {
|
|
keinZugriff();
|
|
}
|
|
|
|
$aktion_team_id = $rows[0]->berechtigt_team_id;
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)"
|
|
. "\n VALUES ($id, 7, NULL, " . ($bestaetigen != 2 ? "'$user_id'" : "NULL") . ", '$aktion_team_id', NULL, NULL, now());";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
abortWithError($db->stderr(true));
|
|
}
|
|
|
|
// Heimteam ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$heim_team = $rows[0];
|
|
|
|
// Gastteam ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
abortWithError("Wrong id!");
|
|
}
|
|
$gast_team = $rows[0];
|
|
|
|
if ($veranstaltung->status != 0) {
|
|
if ($veranstaltung->elo_wertung != 0) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
}
|
|
spielerstatistikAktualisieren(0, $veranstaltungId);
|
|
teamstatistikAktualisieren($veranstaltungId);
|
|
|
|
$mailfrom = $app->getCfg('mailfrom');
|
|
$fromname = $app->getCfg('fromname');
|
|
$subject = $heim_team->teamname . " vs. " . $gast_team->teamname . ": Ergebnis akzeptiert";
|
|
$body = "Zur Begegnung " . $heim_team->teamname . " gegen " . $gast_team->teamname . " am " . FormatiertesDatum($begegnung->zeitpunkt) . " in der " . $veranstaltung->bezeichnung . " wurde von " . ($aktion_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname) . " das Ergebnis akzeptiert.";
|
|
|
|
$query = "SELECT * FROM #__users AS t1, #__sportsmanager_berechtigt_fuer_team AS t2 WHERE t1.id = t2.berechtigt_user_id AND (t2.berechtigt_team_id = " . $begegnung->heim_team_id . " OR t2.berechtigt_team_id = " . $begegnung->gast_team_id . ")";
|
|
$rows = loadObjectList($db, $query);
|
|
if(!empty($rows)) {
|
|
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
|
|
$mailer->setSender($mailfrom, $fromname);
|
|
$mailer->setSubject($subject);
|
|
$mailer->setBody($body);
|
|
foreach ($rows as $row) {
|
|
$mailer->addBcc($row->email);
|
|
}
|
|
$mailer->send();
|
|
}
|
|
|
|
if (isJson()) {
|
|
begegnungSpielplan();
|
|
} else {
|
|
if ($aus_uebersicht) {
|
|
redirectSportsManagerURL('#id' . $id);
|
|
} else {
|
|
redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId . '#id' . $id);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Generiert Gruppenspiele zu einer beliebigen geraden Anzahl Teams
|
|
* bei denen jedes Team genau einmal gegen jedes andere Team spielt,
|
|
* die Spiele an Anzahl Teams - 1 Spieltagen ausgetragen werden und
|
|
* jedes Team an jedem Tag genau ein Spiel austrägt
|
|
*
|
|
* Rückgabewert: Dreidimensionales Array mit Spieltag als erstem Index (1, ..., Anzahl Teams - 1),
|
|
* Spiel-Nr. als zweitem Index (1, ..., Anzahl Teams / 2) und als drittem Index 0 für das erste
|
|
* und 1 für das zweite Team, wobei jeweils die Teamnummer enthalten ist (1, ..., Anzahl Teams)
|
|
*
|
|
* (C) Sven Nickel 2006
|
|
*/
|
|
function Gruppenspiele($anzahlteams)
|
|
{
|
|
if ($anzahlteams % 2 == 1) {
|
|
die ("Gruppenspiele(): Eine ungerade Anzahl an Teams ist nicht zulässig!");
|
|
}
|
|
|
|
$begegnungen = null;
|
|
$b = 1;
|
|
for ($i = 1; $i < $anzahlteams; $i++) {
|
|
for ($j = $i + 1; $j <= $anzahlteams; $j++) {
|
|
$begegnungen[$b++] = array($i, $j);
|
|
}
|
|
}
|
|
$spiele = [];
|
|
$rueckschritt = false;
|
|
for ($spieltag = 1; $spieltag < $anzahlteams;) {
|
|
for ($spielnr = 1; $spielnr <= $anzahlteams / 2;) {
|
|
// Nächste noch nicht eingetragene Begegnung ermitteln, in der
|
|
// keine Mannschaft am aktuellen Spieltag bereits spielt
|
|
for ($b = 1; $b <= ($anzahlteams - 1) * $anzahlteams / 2; $b++) {
|
|
if ($rueckschritt) {
|
|
if ($begegnungen[$b][0] != $spiele[$spieltag][$spielnr][0] ||
|
|
$begegnungen[$b][1] != $spiele[$spieltag][$spielnr][1])
|
|
continue;
|
|
$rueckschritt = false;
|
|
continue;
|
|
}
|
|
$nicht_zulaessig = false;
|
|
for ($i = 1; $i <= $spieltag && !$nicht_zulaessig; $i++) {
|
|
for ($j = 1; $j <= ($i != $spieltag ? $anzahlteams / 2 : $spielnr - 1); $j++) {
|
|
if (($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $begegnungen[$b][1]) ||
|
|
($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $begegnungen[$b][0])) {
|
|
$nicht_zulaessig = true;
|
|
break;
|
|
}
|
|
if ($spielnr > 1 && $spieltag < $anzahlteams - 1) {
|
|
if (($spiele[$i][$j][0] == $spiele[$spieltag][$spielnr - 1][1] && $spiele[$i][$j][1] == $begegnungen[$b][0]) ||
|
|
($spiele[$i][$j][0] == $begegnungen[$b][0] && $spiele[$i][$j][1] == $spiele[$spieltag][$spielnr - 1][1])) {
|
|
$nicht_zulaessig = true;
|
|
break;
|
|
}
|
|
if ($spielnr == $anzahlteams / 2) {
|
|
if (($spiele[$i][$j][0] == $begegnungen[$b][1] && $spiele[$i][$j][1] == $spiele[$spieltag][1][0]) ||
|
|
($spiele[$i][$j][0] == $spiele[$spieltag][1][0] && $spiele[$i][$j][1] == $begegnungen[$b][1])) {
|
|
$nicht_zulaessig = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if ($i == $spieltag)
|
|
if ($begegnungen[$b][0] == $spiele[$i][$j][0] ||
|
|
$begegnungen[$b][0] == $spiele[$i][$j][1] ||
|
|
$begegnungen[$b][1] == $spiele[$i][$j][0] ||
|
|
$begegnungen[$b][1] == $spiele[$i][$j][1]) {
|
|
$nicht_zulaessig = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!$nicht_zulaessig)
|
|
break;
|
|
}
|
|
if ($b <= ($anzahlteams - 1) * $anzahlteams / 2) { // Begegnung gefunden
|
|
$spiele[$spieltag][$spielnr][0] = $begegnungen[$b][0];
|
|
$spiele[$spieltag][$spielnr][1] = $begegnungen[$b][1];
|
|
if ($spieltag < ($anzahlteams - 1)) {
|
|
$spiele[$spieltag + 1][$spielnr == 1 ? $anzahlteams / 2 : $spielnr - 1][1] = $begegnungen[$b][0];
|
|
$spiele[$spieltag + 1][$spielnr][0] = $begegnungen[$b][1];
|
|
}
|
|
$spielnr++;
|
|
} else { // Keine weitere Begegnung gefunden
|
|
// Rückschritt durchführen
|
|
if ($spielnr > 1) {
|
|
$spielnr--;
|
|
} else {
|
|
$spielnr = $anzahlteams / 2;
|
|
$spieltag -= 2;
|
|
}
|
|
$rueckschritt = true;
|
|
}
|
|
}
|
|
$spieltag += 2;
|
|
}
|
|
|
|
return $spiele;
|
|
}
|
|
|
|
function GruppenspieleMatrix($anzahlteams): array
|
|
{
|
|
/* Generiert Gruppenspiele von 4 bis 14 Teams über eine Setzliste
|
|
* bei denen jedes Team genau einmal gegen jedes andere Team spielt,
|
|
* die Spiele an Anzahl Teams - 1 Spieltagen ausgetragen werden und
|
|
* jedes Team an jedem Tag genau ein Spiel austrägt
|
|
* Manschaften die am selben Spieltag auf 1,2 oder 3,4 oder 5,6 usw. haben nie gleichzeitig Heimspiel.
|
|
*
|
|
* Rückgabewert: Dreidimensionales Array mit Spieltag als erstem Index (1, ..., Anzahl Teams - 1),
|
|
* Spiel-Nr. als zweitem Index (1, ..., Anzahl Teams / 2) und als drittem Index 0 für das erste
|
|
* und 1 für das zweite Team, wobei jeweils die Teamnummer enthalten ist (1, ..., Anzahl Teams)
|
|
*
|
|
* (C) Jürgen Meyer 09.03.2025
|
|
*/
|
|
|
|
switch ($anzahlteams) {
|
|
case 4:
|
|
$Spalte_Heim = 12;
|
|
break;
|
|
case 6:
|
|
$Spalte_Heim = 10;
|
|
break;
|
|
case 8:
|
|
$Spalte_Heim = 8;
|
|
break;
|
|
case 10:
|
|
$Spalte_Heim = 6;
|
|
break;
|
|
case 12:
|
|
$Spalte_Heim = 4;
|
|
break;
|
|
case 14:
|
|
$Spalte_Heim = 2;
|
|
break;
|
|
default:
|
|
die("This case is invalid: Nr of teams " . $anzahlteams);
|
|
}
|
|
|
|
|
|
//Spieltag_Nr;Spiel_Nr;Heim14;Gast14;Heim12;Gast12;Heim10;Gast10;Heim8;Gast8;Heim6;Gast6;Heim4;Gast4
|
|
//Folgende Zeilen dürfen nicht eingrückt werden.
|
|
$str_Setzliste_Matrix =
|
|
"1;1;1;4;1;4;1;4;1;4;1;4;1;4
|
|
1;2;3;2;3;2;3;2;3;2;3;2;3;2
|
|
1;3;5;14;5;12;5;10;5;8;5;6;;
|
|
1;4;7;12;7;10;7;8;7;6;;;;
|
|
1;5;9;10;9;8;9;6;;;;;;
|
|
1;6;11;8;11;6;;;;;;;;
|
|
1;7;13;6;;;;;;;;;;
|
|
2;1;3;1;3;1;3;1;8;1;2;5;2;1
|
|
2;2;2;5;2;5;2;5;2;5;3;4;3;4
|
|
2;3;6;4;6;4;6;4;3;7;6;1;;
|
|
2;4;8;13;8;11;8;9;6;4;;;;
|
|
2;5;10;11;10;9;10;7;;;;;;
|
|
2;6;12;9;12;7;;;;;;;;
|
|
2;7;14;7;;;;;;;;;;
|
|
3;1;1;6;1;6;1;6;1;6;1;2;1;3
|
|
3;2;4;8;4;8;4;8;4;2;4;6;4;2
|
|
3;3;5;3;5;3;5;3;5;3;5;3;;
|
|
3;4;7;2;7;2;7;2;7;8;;;;
|
|
3;5;9;14;9;12;9;10;;;;;;
|
|
3;6;11;12;11;10;;;;;;;;
|
|
3;7;13;10;;;;;;;;;;
|
|
4;1;5;1;5;1;5;9;5;1;5;1;;
|
|
4;2;2;9;2;9;2;4;2;7;2;4;;
|
|
4;3;3;7;3;7;3;7;3;4;3;6;;
|
|
4;4;8;6;8;6;8;6;8;6;;;;
|
|
4;5;10;4;10;4;10;1;;;;;;
|
|
4;6;12;13;12;11;;;;;;;;
|
|
4;7;14;11;;;;;;;;;;
|
|
5;1;1;8;1;8;1;8;1;3;1;3;;
|
|
5;2;4;12;4;12;4;10;4;8;4;5;;
|
|
5;3;6;10;6;10;6;3;6;2;6;2;;
|
|
5;4;7;5;7;5;7;5;7;5;;;;
|
|
5;5;9;3;9;3;9;2;;;;;;
|
|
5;6;11;2;11;2;;;;;;;;
|
|
5;7;13;14;;;;;;;;;;
|
|
6;1;7;1;7;1;7;9;7;4;;;;
|
|
6;2;2;13;2;4;2;6;2;1;;;;
|
|
6;3;3;11;3;11;3;4;3;8;;;;
|
|
6;4;5;9;5;9;5;1;5;6;;;;
|
|
6;5;10;8;10;8;10;8;;;;;;
|
|
6;6;12;6;12;6;;;;;;;;
|
|
6;7;14;4;;;;;;;;;;
|
|
7;1;1;10;1;10;1;2;1;7;;;;
|
|
7;2;4;2;4;3;4;7;4;5;;;;
|
|
7;3;6;14;6;2;6;10;6;3;;;;
|
|
7;4;8;12;8;12;8;5;8;2;;;;
|
|
7;5;9;7;9;7;9;3;;;;;;
|
|
7;6;11;5;11;5;;;;;;;;
|
|
7;7;13;3;;;;;;;;;;
|
|
8;1;9;1;9;1;7;1;;;;;;
|
|
8;2;2;6;2;8;2;8;;;;;;
|
|
8;3;3;4;3;6;3;10;;;;;;
|
|
8;4;5;13;5;4;5;6;;;;;;
|
|
8;5;7;11;7;11;9;4;;;;;;
|
|
8;6;12;10;12;10;;;;;;;;
|
|
8;7;14;8;;;;;;;;;;
|
|
9;1;1;12;1;12;4;5;;;;;;
|
|
9;2;4;5;4;7;1;9;;;;;;
|
|
9;3;6;3;6;5;6;7;;;;;;
|
|
9;4;8;2;8;3;8;3;;;;;;
|
|
9;5;10;14;10;2;10;2;;;;;;
|
|
9;6;11;9;11;9;;;;;;;;
|
|
9;7;13;7;;;;;;;;;;
|
|
10;1;11;1;11;1;;;;;;;;
|
|
10;2;2;10;2;12;;;;;;;;
|
|
10;3;3;8;3;10;;;;;;;;
|
|
10;4;5;6;5;8;;;;;;;;
|
|
10;5;7;4;7;6;;;;;;;;
|
|
10;6;9;13;9;4;;;;;;;;
|
|
10;7;14;12;;;;;;;;;;
|
|
11;1;1;14;1;2;;;;;;;;
|
|
11;2;4;9;4;11;;;;;;;;
|
|
11;3;6;7;6;9;;;;;;;;
|
|
11;4;8;5;8;7;;;;;;;;
|
|
11;5;10;3;10;5;;;;;;;;
|
|
11;6;12;2;12;3;;;;;;;;
|
|
11;7;13;11;;;;;;;;;;
|
|
12;1;13;1;;;;;;;;;;
|
|
12;2;2;14;;;;;;;;;;
|
|
12;3;3;12;;;;;;;;;;
|
|
12;4;5;10;;;;;;;;;;
|
|
12;5;7;8;;;;;;;;;;
|
|
12;6;9;6;;;;;;;;;;
|
|
12;7;11;4;;;;;;;;;;
|
|
13;1;1;2;;;;;;;;;;
|
|
13;2;4;13;;;;;;;;;;
|
|
13;3;6;11;;;;;;;;;;
|
|
13;4;8;9;;;;;;;;;;
|
|
13;5;10;7;;;;;;;;;;
|
|
13;6;12;5;;;;;;;;;;
|
|
13;7;14;3;;;;;;;;;;";
|
|
|
|
$Spieltage = explode("\n", $str_Setzliste_Matrix);
|
|
$Matrix = null;
|
|
foreach ($Spieltage as $value) {
|
|
$Spiel = explode(";", $value);
|
|
if ($Spiel[$Spalte_Heim] == "") continue;
|
|
$Matrix[$Spiel[0]][$Spiel[1]][0] = $Spiel[$Spalte_Heim];
|
|
$Matrix[$Spiel[0]][$Spiel[1]][1] = $Spiel[$Spalte_Heim + 1];
|
|
}
|
|
|
|
return $Matrix;
|
|
}
|
|
|
|
function adminBegegnungenGenerierenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminBegegnungenGenerieren($veranstaltung, $rows);
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenGenerieren(): void
|
|
{
|
|
//geändert am 07.03.2025 von Jürgen Meyer
|
|
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$anzahlteams = $jInput->get('anzahlteams', 0, 'INT');
|
|
if ($anzahlteams == 0) die("Wrong number of teams!");
|
|
|
|
$query = "SELECT t1.*"
|
|
. "\n FROM #__sportsmanager_team AS t1"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY t1.teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
//Erstellen des Array Teams mit Überprüfung der Mannschaften
|
|
$teams_ok = true;
|
|
$teamIds = null;
|
|
for ($i = 1; $i <= $anzahlteams; $i++) {
|
|
$team_id_form = $jInput->get('team_id_' . $i, 0, 'INT');
|
|
if ($team_id_form == "") {
|
|
$teams_ok = false;
|
|
} else {
|
|
if (!isset($teamIds)) {
|
|
$teamIds[$i] = $team_id_form;
|
|
} else {
|
|
if (!in_array($team_id_form, $teamIds)) {
|
|
$teamIds[$i] = $team_id_form;
|
|
} else {
|
|
$teams_ok = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Bei 1 wird nur Hinrunde gespielt, bei 2 wird Rückrunde gespielt
|
|
$runden = $jInput->get('runden', 0, 'INT');
|
|
$generierung = $jInput->get('generierung', 0, 'var');
|
|
//Bei 1 wird Datum überprüft, bei 0 nicht.
|
|
$datumscheck = $jInput->get('datumscheck', 0, 'INT');
|
|
|
|
$spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1;
|
|
$spieltag_basis = array();
|
|
for ($i = 1; $i <= ($spieltage * $runden); $i++) {
|
|
$jahr = $jInput->get('datum_jahr_' . $i, 0, 'INT');
|
|
$kw = $jInput->get('datum_kw_' . $i, 0, 'INT');
|
|
$spieltag_nr = $jInput->get('spieltag_nr_' . $i, 0, 'INT');
|
|
$startzeit = $jInput->get('startzeit_' . $i, 0, 'var');
|
|
$startzeit = UhrzeitWandlerDE($startzeit);
|
|
if (!validateDate($startzeit)) {
|
|
$startzeit = "";
|
|
}
|
|
if ($jahr == 0 && $kw == 0) die("Wrong date!");
|
|
$spieltag_basis[$i] = array();
|
|
$spieltag_basis[$i]["jahr"] = $jahr;
|
|
$spieltag_basis[$i]["kw"] = $kw;
|
|
$spieltag_basis[$i]["startzeit"] = $startzeit;
|
|
$spieltag_basis[$i]["spieltag_nr"] = $spieltag_nr;
|
|
|
|
}
|
|
|
|
//Überprüfung der Spieltag Nummer
|
|
$spieltage_ok = true;
|
|
foreach ($spieltag_basis as $value) {
|
|
$spieltag_nr_form = $value["spieltag_nr"];
|
|
if ($spieltag_nr_form == "") {
|
|
$spieltage_ok = false;
|
|
} else {
|
|
if (!isset($spieltage_check)) {
|
|
$spieltage_check[] = $spieltag_nr_form;
|
|
} else {
|
|
if (!in_array($spieltag_nr_form, $spieltage_check)) {
|
|
$spieltage_check[] = $spieltag_nr_form;
|
|
} else {
|
|
$spieltage_ok = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$spiele = null;
|
|
if ($generierung == "Setzliste") {
|
|
//Generieren des Spielplans über Setzliste
|
|
$spiele = GruppenspieleMatrix($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams);
|
|
}
|
|
if ($generierung == "Automatisch") {
|
|
//Automatisches generieren des Spielplans
|
|
$spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams);
|
|
}
|
|
$Zeile = 0;
|
|
$datumsangaben = true;
|
|
$Begegnung = array();
|
|
for ($spieltag = 1; $spieltag <= $spieltage; $spieltag++) {
|
|
for ($spielnr = 1; $spielnr <= ($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams) / 2; $spielnr++) {
|
|
if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams)
|
|
continue;
|
|
|
|
$heim_team_id = $teamIds[trim($spiele[$spieltag][$spielnr][0])];
|
|
$gast_team_id = $teamIds[trim($spiele[$spieltag][$spielnr][1])];
|
|
|
|
$heim_team = null;
|
|
foreach ($teams as $t) {
|
|
if ($t->team_id == $heim_team_id) {
|
|
$heim_team = $t;
|
|
break;
|
|
}
|
|
}
|
|
if ($heim_team == null) continue;
|
|
|
|
$gast_team = null;
|
|
foreach ($teams as $t) {
|
|
if ($t->team_id == $gast_team_id) {
|
|
$gast_team = $t;
|
|
break;
|
|
}
|
|
}
|
|
if ($gast_team == null) continue;
|
|
|
|
if ($spieltag_basis[$spieltag]["startzeit"] != "") {
|
|
$zeitpunkt = $spieltag_basis[$spieltag]["startzeit"];
|
|
} else {
|
|
if ($heim_team->heimspiel_wochentag == 0 or $spieltag_basis[$spieltag]["kw"] == 0)
|
|
$zeitpunkt = NULL;
|
|
else {
|
|
$ts = getdate(mondaykw($spieltag_basis[$spieltag]["kw"], $spieltag_basis[$spieltag]["jahr"], $heim_team->heimspiel_wochentag - 1));
|
|
$zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d:00", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100);
|
|
}
|
|
}
|
|
|
|
$spieltag_nr = $spieltag_basis[$spieltag]["spieltag_nr"];
|
|
if (!validateDate($zeitpunkt)) {
|
|
$zeitpunkt = NULL;
|
|
if ($datumscheck) $datumsangaben = false;
|
|
}
|
|
|
|
$Begegnung[$Zeile]['spieltag'] = $spieltag_nr;
|
|
$Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt;
|
|
$Begegnung[$Zeile]['heim_team_id'] = $heim_team_id;
|
|
$Begegnung[$Zeile]['gast_team_id'] = $gast_team_id;
|
|
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
|
|
$Zeile++;
|
|
|
|
|
|
if ($runden == 2) {
|
|
$weiterer_spieltag = $spieltag + $spieltage;
|
|
|
|
if ($spieltag_basis[$weiterer_spieltag]["startzeit"] != "") {
|
|
$zeitpunkt = $spieltag_basis[$weiterer_spieltag]["startzeit"];
|
|
} else {
|
|
if ($gast_team->heimspiel_wochentag == 0 or $spieltag_basis[$weiterer_spieltag]["kw"] == 0)
|
|
$zeitpunkt = NULL;
|
|
else {
|
|
$ts = getdate(mondaykw($spieltag_basis[$weiterer_spieltag]["kw"], $spieltag_basis[$weiterer_spieltag]["jahr"], $gast_team->heimspiel_wochentag - 1));
|
|
$zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d:00", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100);
|
|
}
|
|
}
|
|
|
|
$spieltag_nr = $spieltag_basis[$weiterer_spieltag]["spieltag_nr"];
|
|
if (!validateDate($zeitpunkt)) {
|
|
$zeitpunkt = NULL;
|
|
if ($datumscheck) $datumsangaben = false;
|
|
}
|
|
|
|
$Begegnung[$Zeile]['spieltag'] = $spieltag_nr;
|
|
$Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt;
|
|
$Begegnung[$Zeile]['heim_team_id'] = $gast_team_id;
|
|
$Begegnung[$Zeile]['gast_team_id'] = $heim_team_id;
|
|
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
|
|
$Zeile++;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($datumsangaben and $teams_ok and $spieltage_ok) {
|
|
$Zeile = 1;
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (spieltag, spiel_nr, zeitpunkt, heim_team_id, gast_team_id) VALUES ";
|
|
foreach ($Begegnung as $value) {
|
|
if ($Zeile > 1) {
|
|
$query .= ", ";
|
|
}
|
|
$query .= "(" . $value['spieltag'] . "," . $value['spiel_nr'] . "," . ($value['zeitpunkt'] != NULL ? "'" . $value['zeitpunkt'] . "'" : "NULL") . "," . $value['heim_team_id'] . "," . $value['gast_team_id'] . ") ";
|
|
$Zeile++;
|
|
}
|
|
$query .= ";";
|
|
|
|
$db->setQuery($query);
|
|
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
} else {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId, count($Begegnung) . " " . Text::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME_CREATED'));
|
|
}
|
|
} else {
|
|
if (!$datumsangaben) {
|
|
echo "<div style='background-color: red; width: 760px; color: white;'>Der Datumscheck war nicht OK!!!</div>";
|
|
}
|
|
if (!$teams_ok) {
|
|
echo "<div style='background-color: red; width: 760px; color: white;'>Jede Mannschaft muss genau einmal existieren!!!</div>";
|
|
}
|
|
if (!$spieltage_ok) {
|
|
echo "<div style='background-color: red; width: 760px; color: white;'>Jeder Spieltag darf nur einmal existieren!!!</div>";
|
|
}
|
|
?><a href="javascript:history.back()">Zurück</a><?php
|
|
}
|
|
|
|
}
|
|
|
|
function adminBegegnungenImportierenForm(): void
|
|
{
|
|
//Jürgen Meyer 07.03.2025
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
HTML_sportsmanager_admin::adminBegegnungenImportieren($veranstaltung);
|
|
}
|
|
|
|
function vergleich($text1, $text2): bool
|
|
{
|
|
$suchen = ["_","-"," "];
|
|
$ersetzen = ["","",""];
|
|
$begriffe = explode(",", $text2);
|
|
foreach($begriffe as $begriff)
|
|
{
|
|
$text1 = strtolower(str_replace($suchen,$ersetzen,$text1));
|
|
$begriff = strtolower(str_replace($suchen,$ersetzen,$begriff));
|
|
if ($text1 == $begriff) return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function erstelleZeitpunkt($datum_jahr, $datum_kw, $heimspiel_wochentag, $heimspiel_uhrzeit): bool|string
|
|
{
|
|
if (!empty($datum_jahr) && !empty($datum_kw) && !empty($heimspiel_wochentag) && !empty($heimspiel_uhrzeit))
|
|
{
|
|
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $heimspiel_wochentag - 1));
|
|
return sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
|
|
floor($heimspiel_uhrzeit / 100), $heimspiel_uhrzeit % 100, 0);
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function adminBegegnungenImportieren(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $_POST['veranstaltung_id'];
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
echo Text::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME2') . " <br><br>";
|
|
|
|
$query = "SELECT team_id, teamname, heimspiel_wochentag, heimspiel_uhrzeit"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = " . $veranstaltungId . ";";
|
|
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
|
|
$Mannschaften = null;
|
|
foreach ($rows as $value) {
|
|
$Mannschaften[$value->teamname]['team_id'] = $value->team_id;
|
|
$Mannschaften[$value->teamname]['heimspiel_wochentag'] = $value->heimspiel_wochentag;
|
|
$Mannschaften[$value->teamname]['heimspiel_uhrzeit'] = $value->heimspiel_uhrzeit;
|
|
}
|
|
|
|
if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED'));
|
|
}
|
|
|
|
$encoding = detectFileEncoding($_FILES["daten"]["tmp_name"]);
|
|
|
|
$handle = fopen($_FILES["daten"]["tmp_name"], "r");
|
|
if (!$handle) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE'));
|
|
}
|
|
if (feof($handle)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_FILE_IS_EMPTY'));
|
|
}
|
|
|
|
$Zeile = 1;
|
|
echo "<table style='border-collapse: collapse; border: 1px solid black'>";
|
|
echo "<tr style='background-color: blue; color: white;'>";
|
|
echo "<th style='text-align: center; width: 100px'>Spieltag</th>";
|
|
echo "<th style='text-align: center; width: 200px'>Spielstart</th>";
|
|
echo "<th style='text-align: center; width: 300px'>Heim</th>";
|
|
echo "<th style='text-align: center; width: 300px'>Gast</th>";
|
|
echo "</tr>";
|
|
$import = true;
|
|
$Begegnung = array();
|
|
$Titelzeile = null;
|
|
$import_zeile = false;
|
|
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
|
|
if (empty($data[0])){continue;}
|
|
if ($Zeile == 1) {
|
|
foreach($data as $spalte_nr => $spalte)
|
|
{
|
|
if (vergleich($spalte,"spieltagnr,spieltagnummer")) $Titelzeile['Spieltag_Nr'] = $spalte_nr;
|
|
if (vergleich($spalte,"spielstart,zeitpunkt")) $Titelzeile['Spielstart'] = $spalte_nr;
|
|
if (vergleich($spalte,"heim,heimteam,heimmannschaft")) $Titelzeile['Heim'] = $spalte_nr;
|
|
if (vergleich($spalte,"gast,gastteam,gastmannschaft")) $Titelzeile['Gast'] = $spalte_nr;
|
|
if (vergleich($spalte,"spielnr,spielnummer")) $Titelzeile['Spiel_Nr'] = $spalte_nr;
|
|
if (vergleich($spalte,"spieltagtitel,spieltitel")) $Titelzeile['Spieltag_Titel'] = $spalte_nr;
|
|
if (vergleich($spalte,"jahr,spieljahr")) $Titelzeile['Spieljahr'] = $spalte_nr;
|
|
if (vergleich($spalte,"kalenderwoche,woche,kw")) $Titelzeile['Kalenderwoche'] = $spalte_nr;
|
|
}
|
|
} else {
|
|
$import_zeile = true;
|
|
$bgcolor = "green";
|
|
$Begegnung[$Zeile]['spieltag'] = $data[$Titelzeile['Spieltag_Nr']];
|
|
$Begegnung[$Zeile]['zeitpunkt'] = UhrzeitWandlerDE($data[$Titelzeile['Spielstart']]);
|
|
if ($encoding == "UTF-8"){
|
|
$Begegnung[$Zeile]['heim_team_id'] = $Mannschaften[$data[$Titelzeile['Heim']]]['team_id'];
|
|
$Begegnung[$Zeile]['gast_team_id'] = $Mannschaften[$data[$Titelzeile['Gast']]]['team_id'];
|
|
if (isset($data[$Titelzeile['Spieltag_Titel']])) $Begegnung[$Zeile]['spieltag_titel'] = $data[$Titelzeile['Spieltag_Titel']];
|
|
} else {
|
|
$Begegnung[$Zeile]['heim_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Heim']])]['team_id'];
|
|
$Begegnung[$Zeile]['gast_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Gast']])]['team_id'];
|
|
if (isset($data[$Titelzeile['Spieltag_Titel']])) $Begegnung[$Zeile]['spieltag_titel'] = utf8_encode($data[$Titelzeile['Spieltag_Titel']]);
|
|
}
|
|
if (isset($data[$Titelzeile['Spiel_Nr']])) $Begegnung[$Zeile]['spiel_nr'] = $data[$Titelzeile['Spiel_Nr']];
|
|
echo "<tr style='color: white;'>";
|
|
if ($Begegnung[$Zeile]['spieltag'] > 99 or $Begegnung[$Zeile]['spieltag'] < 1) {
|
|
$bgcolor = "red";
|
|
$import = false;
|
|
}
|
|
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spieltag_Nr']] . "</td>";
|
|
|
|
if (empty($data[$Titelzeile['Spielstart']])
|
|
AND !empty($data[$Titelzeile['Spieljahr']])
|
|
AND !empty($data[$Titelzeile['Kalenderwoche']])
|
|
AND !empty($Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_wochentag'])
|
|
AND !empty($Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_uhrzeit']))
|
|
{
|
|
$data[$Titelzeile['Spielstart']] =
|
|
erstelleZeitpunkt($data[$Titelzeile['Spieljahr']], $data[$Titelzeile['Kalenderwoche']],
|
|
$Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_wochentag'],
|
|
$Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_uhrzeit']);
|
|
}
|
|
|
|
if (!validateDate($Begegnung[$Zeile]['zeitpunkt'])) {
|
|
$bgcolor = "red";
|
|
$import = false;
|
|
} else {
|
|
$bgcolor = "green";
|
|
}
|
|
|
|
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spielstart']] . "</td>";
|
|
if ($Begegnung[$Zeile]['heim_team_id'] == "") {
|
|
if ($data[$Titelzeile['Heim']] == "spielfrei") {
|
|
$bgcolor = "orange";
|
|
$import_zeile = false;
|
|
} else {
|
|
$bgcolor = "red";
|
|
$import = false;
|
|
}
|
|
} else {
|
|
$bgcolor = "green";
|
|
}
|
|
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>";
|
|
if ($encoding == "UTF-8")
|
|
echo $data[$Titelzeile['Heim']];
|
|
else
|
|
echo utf8_encode($data[$Titelzeile['Heim']]);
|
|
echo "</td>";
|
|
if ($Begegnung[$Zeile]['gast_team_id'] == "") {
|
|
if ($data[$Titelzeile['Gast']] == "spielfrei") {
|
|
$bgcolor = "orange";
|
|
$import_zeile = false;
|
|
} else {
|
|
$bgcolor = "red";
|
|
$import = false;
|
|
}
|
|
} else {
|
|
$bgcolor = "green";
|
|
}
|
|
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>";
|
|
if ($encoding == "UTF-8")
|
|
echo $data[$Titelzeile['Gast']];
|
|
else
|
|
echo utf8_encode($data[$Titelzeile['Gast']]);
|
|
echo "</td>";
|
|
echo "</tr>";
|
|
}
|
|
if (!$import_zeile) {
|
|
unset($Begegnung[$Zeile]);
|
|
}
|
|
$Zeile++;
|
|
}
|
|
echo "<tr><td colspan=4 style='text-align: center;'>Dateiformat: $encoding</td></tr>";
|
|
echo "</table>";
|
|
fclose($handle);
|
|
|
|
if ($import) {
|
|
$Zeile = 1;
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, spieltag_titel, spiel_nr, heim_team_id, gast_team_id) VALUES ";
|
|
foreach ($Begegnung as $value) {
|
|
if ($Zeile > 1) {
|
|
$query .= ", ";
|
|
}
|
|
$query .= "(" . $value['spieltag'] . ",'" . $value['zeitpunkt'] . "','" .
|
|
($value['spieltag_titel'] ?? "") . "', " . ($value['spiel_nr'] ?? "NULL") . " ," .
|
|
$value['heim_team_id'] . "," . $value['gast_team_id'] . ") ";
|
|
$Zeile++;
|
|
}
|
|
$query .= ";";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
} else {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId, count($Begegnung) . " " . Text::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME_IMPORTED'));
|
|
}
|
|
} else {
|
|
echo "<br><div style='background-color: red; width: 760px; color: white;'>Die csv-Datei ist fehlerhaft und konnte nicht importiert werden! Siehe Tabelle oben!</div>";
|
|
}
|
|
?>
|
|
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm"
|
|
enctype="multipart/form-data">
|
|
|
|
<input type="hidden" name="veranstaltung_id" value=<?php echo $veranstaltungId; ?> size="4"/>
|
|
|
|
<input type="submit" name="cancel" value="<?php echo Text::_('COM_SPORTSMANAGER_CANCEL'); ?>"
|
|
class="button"/>
|
|
<input type="hidden" name="task" value="admin_begegnungen_importieren"/>
|
|
</form>
|
|
<?PHP
|
|
}
|
|
|
|
function adminBegegnungenRundeErzeugenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_begegnung.*"
|
|
. "\n FROM #__sportsmanager_veranstaltung"
|
|
. "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)"
|
|
. "\n INNER JOIN #__sportsmanager_begegnung ON team_id = heim_team_id"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY zeitpunkt DESC LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
$row = count($rows) < 1 ? null : $rows[0]; // Falls keine Begegnung als Vorlage verfügbar
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$rows = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte);
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenRundeErzeugen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$anzahlteams = $jInput->get('anzahlteams', 0, 'INT');
|
|
if ($anzahlteams == 0) die("Wrong number of teams!");
|
|
$datum_jahr = null;
|
|
$zeitpunkt = null;
|
|
if ($jInput->get('datum_tag', 0, 'INT') >= 0) {
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
$datum_kw = 0;
|
|
} else {
|
|
$datum_jahr = $jInput->get('datum_jahr', 0, 'INT');
|
|
$datum_kw = abs($jInput->get('datum_tag', 0, 'INT'));
|
|
}
|
|
$rundentyp = $jInput->get('rundentyp', -1, 'INT');
|
|
$runde = max(min(abs($jInput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1);
|
|
$platzierung_ende = max(min(abs($jInput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1);
|
|
|
|
if ($rundentyp >= 10000)
|
|
$runde = $rundentyp;
|
|
else if ($rundentyp == -2)
|
|
$runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende);
|
|
else if ($rundentyp == 0)
|
|
$runde = 0;
|
|
|
|
$query = "SELECT t1.*"
|
|
. "\n FROM #__sportsmanager_team AS t1"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY t1.teamname";
|
|
$teams = loadObjectList($db, $query);
|
|
$teamIds = [];
|
|
for ($i = 1; $i <= $anzahlteams; $i++)
|
|
$teamIds[$i] = $jInput->get('team_id_' . $i, 0, 'INT');
|
|
|
|
$spielort_ids = array();
|
|
for ($i = 1; $i <= $anzahlteams; $i += 2)
|
|
$spielort_ids[$i] = $jInput->get('spielort_id_' . $i, 0, 'INT');
|
|
|
|
for ($teamNr = 1; $teamNr < $anzahlteams; $teamNr += 2) {
|
|
$heim_team_id = $teamIds[$teamNr];
|
|
$gast_team_id = $teamIds[$teamNr + 1];
|
|
|
|
if ($heim_team_id == 0 || $gast_team_id == 0)
|
|
continue;
|
|
|
|
$heim_team = null;
|
|
foreach ($teams as $t) {
|
|
if ($t->team_id == $heim_team_id) {
|
|
$heim_team = $t;
|
|
break;
|
|
}
|
|
}
|
|
if ($heim_team == null) die("Team id not found!");
|
|
|
|
$gast_team = null;
|
|
foreach ($teams as $t) {
|
|
if ($t->team_id == $gast_team_id) {
|
|
$gast_team = $t;
|
|
break;
|
|
}
|
|
}
|
|
if ($gast_team == null) die("Team id not found!");
|
|
|
|
if ($datum_kw != null && $heim_team->heimspiel_wochentag !== 0) {
|
|
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $heim_team->heimspiel_wochentag - 1));
|
|
$zeitpunkt = sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100);
|
|
}
|
|
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id, spielort_id)"
|
|
. "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", " . ($runde != null ? "'$runde'" : "NULL") . ", '$heim_team_id', '$gast_team_id', " . ($spielort_ids[$teamNr] != 0 ? "'$spielort_ids[$teamNr]'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function getAuswahlSpieltagtitel()
|
|
{
|
|
$db = getDatabase();
|
|
$query = "SELECT spieltag_titel FROM #__sportsmanager_begegnung"
|
|
. "\n WHERE spieltag_titel <> ''"
|
|
. "\n GROUP BY spieltag_titel ORDER BY spieltag_titel;";
|
|
return loadObjectList($db, $query);
|
|
}
|
|
|
|
function adminBegegnungenPokalrundeAuslosenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT COUNT(teamname)"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$anzahlteams = loadResult($db, $query);
|
|
$veranstaltung->letzteRunde = getAnzahlRunden($anzahlteams);
|
|
|
|
$query = "SELECT t1.spieltag AS Runden_Nr
|
|
FROM #__sportsmanager_begegnung AS t1
|
|
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
|
|
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
|
|
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
|
|
WHERE t4.veranstaltung_id = ".$veranstaltungId."
|
|
GROUP BY t1.spieltag
|
|
ORDER BY t1.spieltag DESC LIMIT 1;";
|
|
$Runde = loadObjectList($db, $query);
|
|
if (!isset($Runde[0]))
|
|
$veranstaltung->naechsteRunde = 1;
|
|
else
|
|
$veranstaltung->naechsteRunde = $Runde[0]->Runden_Nr + 1;
|
|
|
|
$veranstaltung->titelVorschlag = getRundenTitel(pow(2, $veranstaltung->letzteRunde - $veranstaltung->naechsteRunde) * 2);
|
|
|
|
// Spieltage ermitteln, die noch nicht abgeschlossen sind
|
|
$query = "SELECT COUNT(DISTINCT spieltag) AS Anzahl"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
|
|
. "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
|
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
|
|
. "\n AND (heim_spielpunkte IS NULL OR gast_spielpunkte IS NULL"
|
|
. "\n OR #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id IS NOT NULL)"
|
|
. "\n ORDER BY spieltag DESC";
|
|
$veranstaltung->nicht_abgeschlossene_spiele = loadResult($db, $query);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_spielort"
|
|
. "\n ORDER BY ortsname, name, ortsteil";
|
|
$spielorte = loadObjectList($db, $query);
|
|
|
|
HTML_sportsmanager_admin::adminBegegnungenPokalrundeAuslosenForm($veranstaltung,getAuswahlSpieltagtitel(),$spielorte);
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenPokalrundeAuslosen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$sperren = false;
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
$spielort_id = $jInput->get('spielort_id', 0, 'INT');
|
|
$rundenNr = $jInput->get('runde', 0, 'INT');
|
|
$rundenTitel = $jInput->get('rundentitel', 0, 'STRING');
|
|
$spielumplatz3 = $jInput->get('spielumplatz3', 0, 'INT');
|
|
|
|
$teams = [];
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$query = "SELECT COUNT(teamname)"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$anzahlteams = loadResult($db, $query);
|
|
$anzahlrunden = getAnzahlRunden($anzahlteams);
|
|
$Verlierer = "";
|
|
|
|
//Alle Teams einlesen
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId ";
|
|
$teams_komplett = json_decode(json_encode(loadObjectList($db, $query)), true);
|
|
foreach($teams_komplett AS $team)
|
|
{
|
|
$teams[$team['team_id']] = $team;
|
|
}
|
|
|
|
if ($rundenNr == 1){
|
|
$anzahlmatches = $anzahlteams - pow(2, $anzahlrunden - 1 );
|
|
}
|
|
else{
|
|
$anzahlmatches = pow(2, $anzahlrunden - $rundenNr);
|
|
//Verlierer rausfiltern
|
|
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2"
|
|
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
|
|
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
|
|
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
|
|
. "\n WHERE t4.veranstaltung_id = $veranstaltungId;";
|
|
$loosers = loadObjectList($db, $query);
|
|
|
|
$Zeile = 0;
|
|
foreach($loosers AS $looser)
|
|
{
|
|
if ($Zeile > 0) $Verlierer .= ",";
|
|
$Verlierer .= $looser->Verlierer;
|
|
$Zeile++;
|
|
}
|
|
}
|
|
|
|
$query = "SELECT team_id"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId ";
|
|
if ($Verlierer != "")
|
|
$query .= "\n AND team_id NOT IN (".$Verlierer.");";
|
|
|
|
$teams_auslosung = json_decode(json_encode(loadObjectList($db, $query)), true);
|
|
|
|
// Teams durchmischen
|
|
shuffle($teams_auslosung);
|
|
|
|
if ($anzahlteams < 2)
|
|
{
|
|
$Fehlertext = "Zu wenige Teams vorhanden!!!";
|
|
$sperren = true;
|
|
}
|
|
|
|
if ($anzahlteams > 128)
|
|
{
|
|
$Fehlertext = "Zu viele Teams vorhanden!!!";
|
|
$sperren = true;
|
|
}
|
|
|
|
$datum_jahr = null;
|
|
$zeitpunkt = "";
|
|
|
|
if ($jInput->get('datum_tag', 0, 'STRING') > 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 0 && $jInput->get('datum_monat', 0, 'STRING') >= 0
|
|
&& $jInput->get('uhrzeit_stunden', 0, 'STRING') >= 0 && $jInput->get('uhrzeit_minuten', 0, 'STRING') >= 0) {
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
$datum_kw = 0;
|
|
} else {
|
|
$datum_jahr = $jInput->get('datum_jahr', 0, 'INT');
|
|
$datum_kw = abs($jInput->get('datum_tag', 0, 'INT'));
|
|
}
|
|
|
|
if (!((($jInput->get('datum_tag', 0, 'STRING') <= 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 2000)) || $zeitpunkt != ""))
|
|
{
|
|
$Fehlertext = "Bitte ein gültiges Datum eingeben!!!";
|
|
$sperren = true;
|
|
}
|
|
|
|
for ($matchNr = 0; $matchNr < $anzahlmatches; $matchNr++) {
|
|
$team_heim = $matchNr * 2 ;
|
|
$team_gast = $team_heim + 1;
|
|
$matches[$matchNr]['heim'] = $teams_auslosung[$team_heim]['team_id'];
|
|
$matches[$matchNr]['gast'] = $teams_auslosung[$team_gast]['team_id'];
|
|
}
|
|
|
|
if ($spielumplatz3)
|
|
{
|
|
//Verlierer Halbfinale ermitteln
|
|
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2"
|
|
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
|
|
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
|
|
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
|
|
. "\n WHERE t4.veranstaltung_id = $veranstaltungId"
|
|
. "\n AND t1.spieltag = " . ($rundenNr - 1) . " ORDER BY RAND();";
|
|
$loosers = loadObjectList($db, $query);
|
|
$matches[2]['heim'] = $loosers[0]->Verlierer;
|
|
$matches[2]['gast'] = $loosers[1]->Verlierer;
|
|
$matches[2]['rundentitel'] = "Spiel um Platz 3";
|
|
}
|
|
|
|
$Fehlertext = "";
|
|
foreach($matches AS $spiel_nr => $match)
|
|
{
|
|
$matches[$spiel_nr]['rundentitel'] = $matches[$spiel_nr]['rundentitel'] ?? $rundenTitel;
|
|
$matches[$spiel_nr]['zeitpunkt'] = $zeitpunkt;
|
|
$matches[$spiel_nr]['heimspielort_id'] = $teams[$teams_setzliste[$setzung[0]]]['heimspielort_id'];
|
|
$team_heim = $match['heim'];
|
|
if ($datum_kw != null && $teams[$team_heim]['heimspiel_wochentag'] !== 0) {
|
|
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $teams[$team_heim]['heimspiel_wochentag'] - 1));
|
|
$matches[$spiel_nr]['zeitpunkt'] = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
|
|
floor($teams[$team_heim]['heimspiel_uhrzeit'] / 100), $teams[$team_heim]['heimspiel_uhrzeit'] % 100, 0);
|
|
}
|
|
if (!validateDate($matches[$spiel_nr]['zeitpunkt'])){
|
|
$sperren = true;
|
|
$Fehlertext .= "Bitte die Heimspiel Uhrzeit des " . $teams[$matches[$spiel_nr]['heim']]['teamname'] . " überprüfen!!!<br>";
|
|
}
|
|
}
|
|
|
|
if (!$sperren){
|
|
$Zeile = 0;
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id) values ";
|
|
foreach ($matches AS $key => $match) {
|
|
if (++$Zeile > 1) $query .= ", ";
|
|
$query .= "('" . $match['zeitpunkt'] . "', " . $rundenNr .
|
|
", '" . $match['rundentitel'] . "', " . $key .
|
|
", '" . $match['heim'] . "', '" . $match['gast'] . "'" .
|
|
", " . ($spielort_id != 0 ? "'" . $spielort_id . "'" : "NULL") . ")";
|
|
}
|
|
$query .= "; ";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
else{
|
|
echo "<span style='display: inline-block; background: red; color: white;vertical-align: middle;'>
|
|
$Fehlertext</span>\n";
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenPokalrundeSetzliste(): void
|
|
{
|
|
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$teams = [];
|
|
$setzliste = [];
|
|
$setzung = [];
|
|
$matches = [];
|
|
|
|
$sperren = false;
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
$spielort_id = $jInput->get('spielort_id', 0, 'INT');
|
|
$rundenNr = $jInput->get('runde', 0, 'INT');
|
|
$rundenTitel = $jInput->get('rundentitel', 0, 'STRING');
|
|
$spielumplatz3 = $jInput->get('spielumplatz3', 0, 'INT');
|
|
$heimrecht_losen = $jInput->get('heimrecht_losen', 0, 'INT');
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
$query = "SELECT COUNT(teamname)"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY teamname";
|
|
$anzahlteams = loadResult($db, $query);
|
|
$anzahlrunden = getAnzahlRunden($anzahlteams);
|
|
|
|
//Vergabe der Setzliste
|
|
if ($rundenNr == 1){
|
|
$query = "UPDATE #__sportsmanager_team AS t
|
|
JOIN (
|
|
SELECT team_id, (@r := @r + 1) AS rnd_num
|
|
FROM (
|
|
SELECT team_id
|
|
FROM #__sportsmanager_team
|
|
WHERE veranstaltung_id = $veranstaltungId
|
|
ORDER BY RAND()
|
|
) AS shuffled
|
|
JOIN (SELECT @r := 0) AS init
|
|
) AS x ON t.team_id = x.team_id
|
|
SET t.setzliste_nr = x.rnd_num;";
|
|
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_team"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId"
|
|
. "\n ORDER BY setzliste_nr;";
|
|
|
|
$teams_array = json_decode(json_encode(loadObjectList($db, $query)), true);
|
|
|
|
foreach($teams_array AS $team)
|
|
{
|
|
$teams_setzliste[$team['setzliste_nr']] = $team['team_id'];
|
|
$teams[$team['team_id']] = $team;
|
|
}
|
|
|
|
if ($anzahlteams < 2)
|
|
{
|
|
$Fehlertext = "Zu wenige Teams vorhanden!!!";
|
|
$sperren = true;
|
|
}
|
|
|
|
$datum_jahr = null;
|
|
$zeitpunkt = "";
|
|
|
|
if ($jInput->get('datum_tag', 0, 'STRING') > 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 0 && $jInput->get('datum_monat', 0, 'STRING') >= 0
|
|
&& $jInput->get('uhrzeit_stunden', 0, 'STRING') >= 0 && $jInput->get('uhrzeit_minuten', 0, 'STRING') >= 0) {
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
$datum_kw = 0;
|
|
} else {
|
|
$datum_jahr = $jInput->get('datum_jahr', 0, 'INT');
|
|
$datum_kw = abs($jInput->get('datum_tag', 0, 'INT'));
|
|
}
|
|
|
|
if (!((($jInput->get('datum_tag', 0, 'STRING') <= 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 2000)) || $zeitpunkt != ""))
|
|
{
|
|
$Fehlertext = "Bitte ein gültiges Datum eingeben!!!";
|
|
$sperren = true;
|
|
}
|
|
|
|
$matches = [];
|
|
|
|
if ($rundenNr == 1){
|
|
$setzliste = getSetzliste($anzahlrunden);
|
|
$spiel_nr = 0;
|
|
foreach($setzliste AS $setzung){
|
|
$spiel_nr++;
|
|
if ($setzung[0] <= $anzahlteams && $setzung[1] <= $anzahlteams){
|
|
$matches[$spiel_nr]['heim'] = $teams_setzliste[$setzung[0]];
|
|
$matches[$spiel_nr]['gast'] = $teams_setzliste[$setzung[1]];
|
|
}
|
|
}
|
|
}
|
|
|
|
//Freilose Runde 1 ermitteln
|
|
if ($rundenNr == 2){
|
|
$setzliste = getSetzliste($anzahlrunden);
|
|
$spiel_nr = 0;
|
|
foreach($setzliste AS $setzung){
|
|
$spiel_nr++;
|
|
if ($setzung[0] > $anzahlteams || $setzung[1] > $anzahlteams){
|
|
if ($spiel_nr % 2)
|
|
$matches[round($spiel_nr/2)]['heim'] = $teams_setzliste[min($setzung[0],$setzung[1])];
|
|
else
|
|
$matches[round($spiel_nr/2)]['gast'] = $teams_setzliste[min($setzung[0],$setzung[1])];
|
|
}
|
|
}
|
|
}
|
|
|
|
//Sieger der vorherigen Runde ermitteln
|
|
if ($rundenNr >= 2){
|
|
$query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast,
|
|
t1.heim_team_id, t1.gast_team_id,
|
|
t1.spieltag_titel AS Runde, t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore, t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte
|
|
FROM #__sportsmanager_begegnung AS t1
|
|
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
|
|
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
|
|
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
|
|
WHERE t4.veranstaltung_id = " . $veranstaltungId . " AND t1.spieltag = " . ($rundenNr - 1) . "
|
|
ORDER BY t4.veranstaltung_id, t1.spieltag, t1.spiel_nr;";
|
|
$begegnungen = json_decode(json_encode(loadObjectList($db, $query)), true);
|
|
foreach($begegnungen AS $begegnung)
|
|
{
|
|
if ($begegnung['Heim_Satzpunkte'] > $begegnung['Gast_Satzpunkte'])
|
|
$sieger = $begegnung['heim_team_id'];
|
|
else
|
|
$sieger = $begegnung['gast_team_id'];
|
|
|
|
if ($begegnung['Spiel_Nr'] % 2)
|
|
$matches[round($begegnung['Spiel_Nr']/2)]['heim'] = $sieger;
|
|
else
|
|
$matches[round($begegnung['Spiel_Nr']/2)]['gast'] = $sieger;
|
|
}
|
|
}
|
|
|
|
if ($spielumplatz3)
|
|
{
|
|
//Verlierer Halbfinale ermitteln
|
|
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
|
|
. "\n FROM #__sportsmanager_begegnung AS t1"
|
|
. "\n LEFT JOIN #__sportsmanager_team AS t2"
|
|
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
|
|
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
|
|
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
|
|
. "\n WHERE t4.veranstaltung_id = $veranstaltungId"
|
|
. "\n AND t1.spieltag = " . ($rundenNr - 1) . ";";
|
|
$loosers = loadObjectList($db, $query);
|
|
$matches[2]['heim'] = $loosers[0]->Verlierer;
|
|
$matches[2]['gast'] = $loosers[1]->Verlierer;
|
|
$matches[2]['rundentitel'] = "Spiel um Platz 3";
|
|
}
|
|
|
|
if ($heimrecht_losen)
|
|
{
|
|
foreach ($matches as $key => $match) {
|
|
if (random_int(0, 1) === 1) {
|
|
$tmp = $matches[$key]['heim'];
|
|
$matches[$key]['heim'] = $matches[$key]['gast'];
|
|
$matches[$key]['gast'] = $tmp;
|
|
}
|
|
}
|
|
}
|
|
|
|
$Fehlertext = "";
|
|
foreach($matches AS $spiel_nr => $match)
|
|
{
|
|
$matches[$spiel_nr]['rundentitel'] = $matches[$spiel_nr]['rundentitel'] ?? $rundenTitel;
|
|
$matches[$spiel_nr]['zeitpunkt'] = $zeitpunkt;
|
|
$team_heim = $match['heim'];
|
|
if ($datum_kw != null && $teams[$team_heim]['heimspiel_wochentag'] !== 0) {
|
|
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $teams[$team_heim]['heimspiel_wochentag'] - 1));
|
|
$matches[$spiel_nr]['zeitpunkt'] = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
|
|
floor($teams[$team_heim]['heimspiel_uhrzeit'] / 100), $teams[$team_heim]['heimspiel_uhrzeit'] % 100, 0);
|
|
}
|
|
if (!validateDate($matches[$spiel_nr]['zeitpunkt'])){
|
|
$sperren = true;
|
|
$Fehlertext .= "Bitte die Heimspiel Uhrzeit des " . $teams[$matches[$spiel_nr]['heim']]['teamname'] . " überprüfen!!!<br>";
|
|
}
|
|
}
|
|
|
|
if (!$sperren){
|
|
$Zeile = 0;
|
|
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id) values ";
|
|
foreach ($matches AS $key => $match) {
|
|
if (++$Zeile > 1) $query .= ", ";
|
|
$query .= "('" . $match['zeitpunkt'] . "', " . $rundenNr .
|
|
", '" . $match['rundentitel'] . "', " . $key .
|
|
", '" . $match['heim'] . "', '" . $match['gast'] . "'" .
|
|
", " . ($spielort_id != 0 ? "'" . $spielort_id . "'" : "NULL") . ")";
|
|
}
|
|
$query .= "; ";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
else{
|
|
echo "<span style='display: inline-block; background: red; color: white;vertical-align: middle;'>
|
|
$Fehlertext</span>\n";
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenAlleEntfernen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
$query = "SELECT MIN(DATE(zeitpunkt))"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId";
|
|
$aktualisieren_ab_datum = loadResult($db, $query);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_begegnung"
|
|
. "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
|
. "\n WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$id = $row->begegnung_id;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_team SET setzliste_nr = NULL WHERE veranstaltung_id = $veranstaltungId;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
function adminBegegnungenExportForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
//Alle Ligen einer Saison ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung
|
|
WHERE saison_id = " . $veranstaltung->saison_id . "
|
|
AND #__sportsmanager_veranstaltung.bezeichnung NOT IN ('Schiedsrichter')
|
|
ORDER BY #__sportsmanager_veranstaltung.reihenfolge;";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$saison = $rows;
|
|
|
|
HTML_sportsmanager_admin::adminBegegnungenExport($veranstaltung,$saison);
|
|
}
|
|
|
|
#[NoReturn] function adminBegegnungenExport(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$veranstaltungId = $jInput->get('veranstaltungId', 0, 'INT');
|
|
$export = $jInput->get('export', '', 'RAW');
|
|
|
|
if ($veranstaltungId == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
|
|
keinZugriff();
|
|
|
|
// Veranstaltung ermitteln
|
|
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
|
|
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$veranstaltung = $rows[0];
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
|
|
}
|
|
|
|
unset($rows);
|
|
|
|
$dateiname = "";
|
|
if ($export == "spieler") {
|
|
$query = "
|
|
SELECT t5.bezeichnung AS Veranstaltung, t2.vereinsname AS Verein, t1.teamname AS Team,
|
|
t4.spielernr AS Passnummer, t4.nachname AS Nachname, t4.vorname AS Vorname, t4.geburtsjahr AS Geburtsjahr,
|
|
t6.saisonbezeichnung AS Saison, t3.erster_spieltag AS Spielberechtigt_von, t3.letzter_spieltag AS Spielberechtigt_bis
|
|
FROM #__sportsmanager_team AS t1
|
|
LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t1.veranstaltung_id = t5.veranstaltung_id
|
|
LEFT JOIN #__sportsmanager_verein AS t2 ON t1.verein_id = t2.verein_id
|
|
LEFT JOIN #__sportsmanager_mitglied_von_team AS t3 ON t1.team_id = t3.team_id
|
|
LEFT JOIN #__sportsmanager_spieler AS t4 ON t3.spieler_id = t4.spieler_id
|
|
LEFT JOIN #__sportsmanager_saison AS t6 ON t5.saison_id = t6.saison_id
|
|
WHERE t1.veranstaltung_id = " . $veranstaltungId . ";
|
|
";
|
|
|
|
$rows = loadObjectList($db, $query);
|
|
$dateiname = "Spieler " . $veranstaltung->bezeichnung;
|
|
}
|
|
|
|
if ($export == "spielplan" or $export == "spielberichte") {
|
|
$query = "
|
|
SELECT t1.begegnung_id AS ID, t5.saisonbezeichnung AS Saison,
|
|
t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast,
|
|
t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore,
|
|
t1.gast_punkte AS Gast_Tore, t1.heim_spielpunkte AS Heim_Satzpunkte,
|
|
t1.gast_spielpunkte AS Gast_Satzpunkte
|
|
FROM #__sportsmanager_begegnung AS t1
|
|
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
|
|
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
|
|
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
|
|
LEFT JOIN #__sportsmanager_saison AS t5 ON t4.saison_id = t5.saison_id
|
|
WHERE t4.veranstaltung_id = " . $veranstaltungId . "
|
|
ORDER BY t4.veranstaltung_id, t1.spieltag, t1.zeitpunkt;
|
|
";
|
|
|
|
$rows = loadObjectList($db, $query);
|
|
$dateiname = "Spielplan " . $veranstaltung->bezeichnung;
|
|
}
|
|
|
|
if (!isset($rows) or count($rows) == 0) {
|
|
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=1', "Zu dieser Auswahl sind keine Daten vorhanden!");
|
|
}
|
|
|
|
if ($export == "spielberichte") {
|
|
// Modus ermitteln
|
|
$query = "
|
|
SELECT t2.* FROM #__sportsmanager_veranstaltung AS t1
|
|
LEFT JOIN #__sportsmanager_teamspiel_modus AS t2 ON t1.modus_id = t2.teamspiel_modus_id
|
|
WHERE t1.veranstaltung_id = " . $veranstaltungId . "
|
|
";
|
|
|
|
$spielmodus = loadObjectList($db, $query);
|
|
$Anzahl_Saetze = count(explode(",", $spielmodus[0]->modus));
|
|
|
|
|
|
foreach ($rows as $value) {
|
|
|
|
// letze Änderung
|
|
$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 (5,6,7,8,9)
|
|
ORDER BY eingetragen DESC
|
|
LIMIT 1;
|
|
";
|
|
|
|
$letzterEintrag = loadObjectList($db, $query);
|
|
$value->gespeichert_um = $letzterEintrag[0]->gespeichert_um;
|
|
$value->gespeichert_von = $letzterEintrag[0]->gespeichert_von;
|
|
|
|
// Spielbericht
|
|
$query = "
|
|
SELECT
|
|
t1.teamspiel_nummer AS Satz_Nr,
|
|
t3.spielernr AS Pass_Heim1, t4.spielernr AS Pass_Heim2,
|
|
t5.spielernr AS Pass_Gast1, t6.spielernr AS Pass_Gast2,
|
|
t1.teamspiel_heim_punkte AS Heim_Tore, t1.teamspiel_gast_punkte AS Gast_Tore,
|
|
t1.teamspiel_heim_spielpunkte AS Heim_Punkte, t1.teamspiel_gast_spielpunkte AS Gast_Punkte
|
|
FROM #__sportsmanager_teamspiel AS t1
|
|
LEFT JOIN #__sportsmanager_begegnung AS t2 ON t1.begegnung_id = t2.begegnung_id
|
|
LEFT JOIN #__sportsmanager_spieler AS t3 ON t1.heim_spieler_1_id = t3.spieler_id
|
|
LEFT JOIN #__sportsmanager_spieler AS t4 ON t1.heim_spieler_2_id = t4.spieler_id
|
|
LEFT JOIN #__sportsmanager_spieler AS t5 ON t1.gast_spieler_1_id = t5.spieler_id
|
|
LEFT JOIN #__sportsmanager_spieler AS t6 ON t1.gast_spieler_2_id = t6.spieler_id
|
|
WHERE t1.begegnung_id = " . $value->ID . "
|
|
ORDER BY t1.teamspiel_nummer;
|
|
";
|
|
|
|
$spielbericht = loadObjectList($db, $query);
|
|
for ($i = 1; $i <= $Anzahl_Saetze; $i++) {
|
|
$variable = "S" . $i . "_Pass_Heim1";
|
|
$value->$variable = $spielbericht[$i - 1]->Pass_Heim1;
|
|
$variable = "S" . $i . "_Pass_Heim2";
|
|
$value->$variable = $spielbericht[$i - 1]->Pass_Heim2;
|
|
$variable = "S" . $i . "_Pass_Gast1";
|
|
$value->$variable = $spielbericht[$i - 1]->Pass_Gast1;
|
|
$variable = "S" . $i . "_Pass_Gast2";
|
|
$value->$variable = $spielbericht[$i - 1]->Pass_Gast2;
|
|
$variable = "S" . $i . "_Heim_Tore";
|
|
$value->$variable = $spielbericht[$i - 1]->Heim_Tore;
|
|
$variable = "S" . $i . "_Gast_Tore";
|
|
$value->$variable = $spielbericht[$i - 1]->Gast_Tore;
|
|
$variable = "S" . $i . "_Heim_Punkte";
|
|
$value->$variable = $spielbericht[$i - 1]->Heim_Punkte;
|
|
$variable = "S" . $i . "_Gast_Punkte";
|
|
$value->$variable = $spielbericht[$i - 1]->Gast_Punkte;
|
|
}
|
|
}
|
|
$dateiname = "Spielberichte " . $veranstaltung->bezeichnung;
|
|
}
|
|
|
|
$dateiname .= ".csv";
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
Header("Content-Type: text/x-csv");
|
|
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
|
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
|
|
Header("Pragma: no-cache");
|
|
|
|
$data = "";
|
|
$trennzeichen = ";";
|
|
$spalte = 0;
|
|
$header = "";
|
|
|
|
foreach ($rows[0] as $field => $value) {
|
|
if ($spalte != 0) {
|
|
$header .= $trennzeichen;
|
|
}
|
|
$header .= $field;
|
|
$spalte++;
|
|
}
|
|
foreach ($rows as $row) {
|
|
$line = '';
|
|
$spalte = 0;
|
|
foreach ($row as $value) {
|
|
if ($spalte != 0) {
|
|
$line .= $trennzeichen;
|
|
}
|
|
$line .= $value;
|
|
$spalte++;
|
|
}
|
|
$data .= trim($line) . "\n";
|
|
}
|
|
|
|
echo $header . "\n" . utf8_decode($data);
|
|
|
|
die();
|
|
}
|
|
|
|
function adminEditTurnier(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == null)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC";
|
|
$saisons = loadObjectList($db, $query);
|
|
if (empty($id)) {
|
|
$berechtigt_fuer_turnier = array();
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_turnier.* FROM #__sportsmanager_berechtigt_fuer_turnier, #__users WHERE berechtigt_user_id = id AND berechtigt_turnier_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_turnier = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 3 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
HTML_sportsmanager_admin::adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien);
|
|
}
|
|
|
|
function adminSaveTurnier(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
$Fehlertext = "";
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$veranstalterId = $jInput->get('veranstalterid', 0, 'INT');
|
|
$turnierbezeichnung = $db->escape(trim($jInput->get('turnierbezeichnung', '', 'RAW')));
|
|
$saison_id = $jInput->get('saison_id', 0, 'INT');
|
|
$turnierort = $db->escape(trim($jInput->get('turnierort', '', 'RAW')));
|
|
$erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT')));
|
|
if (!validateDate($erster_tag,'Y-m-d'))
|
|
$Fehlertext = "Bitte gültiges Datum eingeben";
|
|
$mehrtaegig = $jInput->get('mehrtaegig', 0, 'INT');
|
|
$reminder_count = $jInput->get('reminder_count', 0, 'INT');
|
|
if (!$mehrtaegig)
|
|
$letzter_tag = $erster_tag;
|
|
else
|
|
$letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('letzter_tag_jahr', 2000, 'INT'), $jInput->get('letzter_tag_monat', 1, 'INT'), $jInput->get('letzter_tag_tag', 1, 'INT')));
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
$berechtigt_fuer_turnier_user_ids = array();
|
|
for ($i = 1; $i <= 6; $i++) {
|
|
$berechtigt_user_id = $jInput->get('berechtigt_fuer_turnier_user_' . $i . '_id', 0, 'INT');
|
|
if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_turnier_user_ids))
|
|
$berechtigt_fuer_turnier_user_ids[] = $berechtigt_user_id;
|
|
}
|
|
|
|
if ($Fehlertext != ""){
|
|
echo "<span style='display: inline-block; background: red; color: white;vertical-align: middle;'>$Fehlertext</span>\n";
|
|
return;
|
|
}
|
|
|
|
if ($vorlage) {
|
|
$vorlage_id = $id;
|
|
$id = 0;
|
|
$query = "SELECT erster_tag FROM #__sportsmanager_turnier WHERE turnier_id = $vorlage_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$vorlage_erster_tag = $rows[0]->erster_tag;
|
|
}
|
|
|
|
if ($id == 0) {
|
|
$query = $db->getQuery(true)
|
|
->select('wert')
|
|
->from('#__sportsmanager_einstellungen')
|
|
->where('name = ' . $db->quote('enable_email_reminders'));
|
|
$remindersEnabled = loadResult($db, $query);
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnier (veranstalter_id, turnierbezeichnung, saison_id, turnierort, erster_tag"
|
|
. ($letzter_tag != null ? ", letzter_tag" : "")
|
|
. ", kategorie, reminder_count) VALUES ('$veranstalterId', '$turnierbezeichnung', '$saison_id', '$turnierort', '$erster_tag'"
|
|
. ($letzter_tag != null ? ", '$letzter_tag'" : "")
|
|
. ", '$kategorie', "
|
|
. (!$remindersEnabled ? "'3'" : "'0'")
|
|
. ")";
|
|
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_turnier"
|
|
. "\n SET veranstalter_id = '$veranstalterId',"
|
|
. "\n turnierbezeichnung = '$turnierbezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n turnierort = '$turnierort',"
|
|
. "\n erster_tag = '$erster_tag',"
|
|
. "\n letzter_tag = " . ($letzter_tag != null ? "'$letzter_tag'" : "NULL") . ","
|
|
. "\n kategorie = '$kategorie',"
|
|
. "\n reminder_count = '$reminder_count'"
|
|
. "\n WHERE turnier_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($letzter_tag == $erster_tag){
|
|
$query = "UPDATE #__sportsmanager_turnierdisziplin"
|
|
. "\n SET beginn = CONCAT('$erster_tag', ' ', TIME(beginn))";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id";
|
|
if (!empty($berechtigt_fuer_turnier_user_ids))
|
|
$query .= " AND berechtigt_user_id NOT IN (" . implode(",", $berechtigt_fuer_turnier_user_ids) . ")";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$index = array_search($row->berechtigt_user_id, $berechtigt_fuer_turnier_user_ids);
|
|
if ($index !== false) {
|
|
unset($berechtigt_fuer_turnier_user_ids[$index]);
|
|
}
|
|
}
|
|
|
|
foreach ($berechtigt_fuer_turnier_user_ids as $berechtigt_user_id) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_turnier (berechtigt_user_id, berechtigt_turnier_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($vorlage) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnierdisziplin"
|
|
. "\n WHERE turnier_id = $vorlage_id";
|
|
$disziplinen = loadObjectList($db, $query);
|
|
foreach ($disziplinen as $disziplin) {
|
|
$ts = getdate(strtotime($erster_tag) - strtotime($vorlage_erster_tag) + strtotime($disziplin->beginn));
|
|
$neuer_beginn = $disziplin->beginn == null ? null : sprintf("%04d-%02d-%02d %02d:%02d", $ts["year"], $ts["mon"], $ts["mday"], $ts["hours"], $ts["minutes"]);
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)"
|
|
. "\n VALUES ('$id', '" . $db->escape($disziplin->disziplin) . "', '" . $db->escape($disziplin->kuerzel) . "', " . ($neuer_beginn == null ? "NULL" : "'$neuer_beginn'") . ", '$disziplin->typ', '$disziplin->elo_wertung', " . ($disziplin->voranmeldung == null ? "NULL" : ("'" . $disziplin->voranmeldung . "'")) . ", " . ($disziplin->voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $disziplin->voranmeldungen_rangliste_id . "'")) . ", '$disziplin->voranmeldungen_reihenfolge', '$disziplin->reihenfolge', '$disziplin->status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$disziplin_id = $db->insertid();
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id";
|
|
$ranglisten = loadObjectList($db, $query);
|
|
foreach ($ranglisten as $rangliste) {
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste->rangliste_id', '$disziplin_id', " . ($rangliste->system_id != null ? "'$rangliste->system_id'" : "NULL") . ", '" . $db->escape($rangliste->wertung) . "', '" . $db->escape($rangliste->doppel_teilwertung) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTurnier(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id AND elo_wertung > 0), 1, 0)";
|
|
$elo_aktualisieren = loadResult($db, $query);
|
|
|
|
$query = "SELECT MIN(DATE(beginn))"
|
|
. "\n FROM #__sportsmanager_turnierdisziplin"
|
|
. "\n WHERE turnier_id = $id AND elo_wertung > 0";
|
|
$aktualisieren_ab_datum = loadResult($db, $query);
|
|
|
|
$query = "DELETE #__sportsmanager_turnierspiel FROM #__sportsmanager_turnierspiel, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnierspiel.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung FROM #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_rangliste_turnierdisziplin FROM #__sportsmanager_rangliste_turnierdisziplin, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_rangliste_turnierdisziplin.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turnier_rundenstufe FROM #__sportsmanager_turnier_rundenstufe, #__sportsmanager_turnierdisziplin WHERE #__sportsmanager_turnier_rundenstufe.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnier WHERE turnier_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren();
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminTurnierdisziplinen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$turnierid = $jInput->get('turnierid', 0, 'INT');
|
|
if ($turnierid == 0) die("Missing id!");
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierid))
|
|
keinZugriff(true);
|
|
|
|
$beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnier = $rows[0];
|
|
|
|
$query = "SELECT t1.*,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 20) AS voranmeldungen,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id AND rundenstufe = 0) AS meldungen,"
|
|
. "\n (SELECT COUNT(*) FROM #__sportsmanager_turnierspiel AS t2 WHERE t1.turnierdisziplin_id = t2.turnierdisziplin_id) AS spiele"
|
|
. "\n FROM #__sportsmanager_turnierdisziplin AS t1"
|
|
. "\n WHERE turnier_id = $turnierid"
|
|
. "\n ORDER BY reihenfolge, disziplin, beginn";
|
|
$rows = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTurnierdisziplinen($turnier, $rows, $beschraenkter_zugriff_turniere);
|
|
}
|
|
|
|
function adminEditTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierid = $jInput->get('turnierid', 0, 'INT');
|
|
if ($turnierid == 0) die("Missing id!");
|
|
|
|
if ($id == null)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnier = $rows[0];
|
|
|
|
// Ranglisten ermitteln
|
|
if ($id == 0) {
|
|
$query = "SELECT #__sportsmanager_rangliste.rangliste_id, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
} else {
|
|
$query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, doppel_teilwertung, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id) AS ranglisten USING (rangliste_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
}
|
|
$ranglisten = loadObjectList($db, $query);
|
|
if ($id == 0) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_rangliste_system"
|
|
. "\n WHERE status != 0"
|
|
. "\n ORDER BY systembezeichnung";
|
|
} else {
|
|
$query = "SELECT DISTINCT rangliste_system_id, #__sportsmanager_rangliste_system.*"
|
|
. "\n FROM #__sportsmanager_rangliste_system"
|
|
. "\n LEFT JOIN #__sportsmanager_rangliste_turnierdisziplin ON turnierdisziplin_id = $id AND system_id = rangliste_system_id"
|
|
. "\n WHERE status != 0 OR NOT ISNULL(turnierdisziplin_id)"
|
|
. "\n ORDER BY systembezeichnung";
|
|
}
|
|
$systeme = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierId = $jInput->get('turnierid', 0, 'INT');
|
|
if ($turnierId == 0) die("Missing id!");
|
|
$disziplin = $db->escape(trim($jInput->get('disziplin', '', 'RAW')));
|
|
$kuerzel = $db->escape(trim($jInput->get('kuerzel', '', 'RAW')));
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$beginn = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
$reihenfolge = $jInput->get('reihenfolge', 0, 'INT');
|
|
$aktualisieren_ab_datum = $datum;
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId);
|
|
}
|
|
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
$elo_wertung = $jInput->get('elo_wertung', 0, 'INT');
|
|
$voranmeldung_datum = normalisiertesDatum($jInput->get('voranmeldung_datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('voranmeldung_datum_jahr', 0, 'INT'), $jInput->get('voranmeldung_datum_monat', 0, 'INT'), $jInput->get('voranmeldung_datum_tag', 0, 'INT')));
|
|
$voranmeldung_uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('voranmeldung_uhrzeit_stunden', 0, 'INT'), $jInput->get('voranmeldung_uhrzeit_minuten', 0, 'INT')));
|
|
$voranmeldung = $voranmeldung_datum == null || $voranmeldung_uhrzeit == null ? null : ($voranmeldung_datum . " " . $voranmeldung_uhrzeit);
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$voranmeldungen_rangliste_id = $jInput->get('voranmeldungen_rangliste_id', 0, 'INT');
|
|
$voranmeldungen_reihenfolge = $jInput->get('voranmeldungen_reihenfolge', 0, 'INT');
|
|
|
|
$i = 0;
|
|
$rangliste_id = $jInput->get('rangliste_id_' . $i, 0, 'INT');
|
|
$rangliste_system_id = $jInput->get('rangliste_system_id_' . $i, 0, 'INT');
|
|
$rangliste_wertung = $jInput->get('rangliste_wertung_' . $i, 0, 'RAW');
|
|
$rangliste_doppel_teilwertung = $jInput->get('doppel_teilwertung_' . $i, 0, 'RAW');
|
|
$ranglisten_beruecksichtigt = array();
|
|
$ranglisten_beruecksichtigt_system_id = array();
|
|
$ranglisten_beruecksichtigt_wertung = array();
|
|
$ranglisten_beruecksichtigt_doppel_teilwertung = array();
|
|
while ($rangliste_id != 0 && !in_array($rangliste_id, $ranglisten_beruecksichtigt)) {
|
|
$ranglisten_beruecksichtigt[] = $rangliste_id;
|
|
$ranglisten_beruecksichtigt_system_id[] = $rangliste_system_id;
|
|
$ranglisten_beruecksichtigt_wertung[] = $rangliste_wertung;
|
|
$ranglisten_beruecksichtigt_doppel_teilwertung[] = $rangliste_doppel_teilwertung;
|
|
$i++;
|
|
$rangliste_id = $jInput->get('rangliste_id_' . $i, 0, 'INT');
|
|
$rangliste_system_id = $jInput->get('rangliste_system_id_' . $i, 0, 'INT');
|
|
$rangliste_wertung = $jInput->get('rangliste_wertung_' . $i, 0, 'RAW');
|
|
$rangliste_doppel_teilwertung = $jInput->get('doppel_teilwertung_' . $i, 0, 'RAW');
|
|
}
|
|
|
|
$elo_aktualisieren = false;
|
|
if ($id == 0) {
|
|
$aktualisieren = false;
|
|
$query = "INSERT INTO #__sportsmanager_turnierdisziplin (turnier_id, disziplin, kuerzel, beginn, typ, elo_wertung, voranmeldung, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, reihenfolge, status)"
|
|
. "\n VALUES ('$turnierId', '$disziplin', '$kuerzel', '$beginn', '$typ', '$elo_wertung', " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . ", " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . ", '$voranmeldungen_reihenfolge', '$reihenfolge', '$status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$aktualisieren = true;
|
|
$query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
$elo_aktualisieren = $row->elo_wertung || $elo_wertung;
|
|
|
|
if ($row->typ != $typ) {
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_turnierdisziplin"
|
|
. "\n SET turnier_id = '$turnierId',"
|
|
. "\n disziplin = '$disziplin',"
|
|
. "\n kuerzel = '$kuerzel',"
|
|
. "\n beginn = " . ($beginn == null ? "NULL" : ("'" . $beginn . "'")) . ","
|
|
. "\n typ = '$typ',"
|
|
. "\n elo_wertung = '$elo_wertung',"
|
|
. "\n voranmeldung = " . ($voranmeldung == null ? "NULL" : ("'" . $voranmeldung . "'")) . ","
|
|
. "\n voranmeldungen_rangliste_id = " . ($voranmeldungen_rangliste_id == 0 ? "NULL" : ("'" . $voranmeldungen_rangliste_id . "'")) . ","
|
|
. "\n voranmeldungen_reihenfolge = '$voranmeldungen_reihenfolge',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n status = '$status'"
|
|
. "\n WHERE turnierdisziplin_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
// Berücksichtige Ranglisten prüfen und ggf. aktualisieren
|
|
$query = "SELECT rangliste_id, system_id, wertung, doppel_teilwertung"
|
|
. "\n FROM #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n WHERE turnierdisziplin_id = $id";
|
|
$bestehende_ranglisten_beruecksichtigt = loadObjectList($db, $query);
|
|
foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) {
|
|
$ist_beruecksichtigt = false;
|
|
foreach ($ranglisten_beruecksichtigt as $rangliste_id) {
|
|
if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) {
|
|
$ist_beruecksichtigt = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$ist_beruecksichtigt) {
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $bestehende_rangliste_beruecksichtigt->rangliste_id AND turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) {
|
|
$ist_beruecksichtigt = false;
|
|
$bestehende_rangliste_system_id = null;
|
|
$bestehende_rangliste_wertung = null;
|
|
$bestehende_rangliste_doppel_teilwertung = null;
|
|
foreach ($bestehende_ranglisten_beruecksichtigt as $bestehende_rangliste_beruecksichtigt) {
|
|
if ($bestehende_rangliste_beruecksichtigt->rangliste_id == $rangliste_id) {
|
|
$ist_beruecksichtigt = true;
|
|
$bestehende_rangliste_system_id = $bestehende_rangliste_beruecksichtigt->system_id;
|
|
$bestehende_rangliste_wertung = $bestehende_rangliste_beruecksichtigt->wertung;
|
|
$bestehende_rangliste_doppel_teilwertung = $bestehende_rangliste_beruecksichtigt->doppel_teilwertung;
|
|
break;
|
|
}
|
|
}
|
|
$system_id = $ranglisten_beruecksichtigt_system_id[$index];
|
|
$wertung = $ranglisten_beruecksichtigt_wertung[$index];
|
|
$doppel_teilwertung = $ranglisten_beruecksichtigt_doppel_teilwertung[$index];
|
|
if (!$ist_beruecksichtigt) {
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n WHERE rangliste_id = $rangliste_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n > 0) {
|
|
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin (rangliste_id, turnierdisziplin_id, system_id, wertung, doppel_teilwertung) VALUES ('$rangliste_id', '$id', " . ($system_id != 0 ? "'$system_id'" : "NULL") . ", '" . $db->escape($wertung) . "', '" . $db->escape($doppel_teilwertung) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else if ($system_id != $bestehende_rangliste_system_id || $wertung != $bestehende_rangliste_wertung || $doppel_teilwertung != $bestehende_rangliste_doppel_teilwertung) {
|
|
$query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin"
|
|
. "\n SET system_id = " . ($system_id != 0 ? "'$system_id'" : "NULL") . ","
|
|
. "\n wertung = '" . $db->escape($wertung) . "',"
|
|
. "\n doppel_teilwertung = '" . $db->escape($doppel_teilwertung) . "'"
|
|
. "\n WHERE rangliste_id = $rangliste_id AND turnierdisziplin_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($aktualisieren) {
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren(0, $id);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTurnierdisziplin(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
if ($id == 0) die("Missing id!");
|
|
$turnierId = $jInput->get('turnierid', 0, 'INT');
|
|
if ($turnierId == 0) die("Missing id!");
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
$elo_aktualisieren = $row->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($row->beginn) ? substr($row->beginn, 0, 10) : null;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren();
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId);
|
|
}
|
|
|
|
function adminExportTurniervoranmeldungenForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
if ($turnierDisziplinId == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, voranmeldungen_rangliste_id, voranmeldungen_reihenfolge, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT DISTINCT #__sportsmanager_rangliste.rangliste_id, turnierdisziplin_id, ranglisten.system_id, wertung, bezeichnung, saisonbezeichnung"
|
|
. "\n FROM #__sportsmanager_rangliste"
|
|
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
|
|
. "\n LEFT JOIN (SELECT rangliste_id, turnierdisziplin_id, system_id, wertung FROM #__sportsmanager_rangliste_turnierdisziplin WHERE turnierdisziplin_id = $turnierDisziplinId) AS ranglisten USING (rangliste_id)"
|
|
. "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie";
|
|
$ranglisten = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten);
|
|
}
|
|
|
|
#[NoReturn] function adminExportTurniervoranmeldungen(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$ranglisteId = $jInput->get('ranglisteid', 0, 'INT');
|
|
$sortierung = $jInput->get('sortierung', 0, 'INT');
|
|
$format = $jInput->get('format', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, beginn, typ FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
if ($turnierdisziplin->typ == 0) {
|
|
$query = "SELECT *"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein";
|
|
if ($format != 0)
|
|
$query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht";
|
|
if ($ranglisteId != 0)
|
|
$query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte";
|
|
$query .= "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '20'"
|
|
. "\n ORDER BY " . ($ranglisteId != 0 ? "Punkte DESC, " : "") . "Nachname, Vorname";
|
|
} else {
|
|
$query = "SELECT (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Nachname1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Vorname1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Spielernr1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Verein1";
|
|
if ($format != 0)
|
|
$query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS Geschlecht1";
|
|
if ($ranglisteId != 0)
|
|
$query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0) AS Punkte1";
|
|
$query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Nachname2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Vorname2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), '', #__sportsmanager_spieler.spielernr) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Spielernr2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Verein2";
|
|
if ($format != 0)
|
|
$query .= ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 'M', #__sportsmanager_spieler.geschlecht) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS Geschlecht2";
|
|
if ($ranglisteId != 0) {
|
|
$query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Punkte2";
|
|
if ($sortierung == 0) {
|
|
$query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)"
|
|
. "+ COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0) AS Summe";
|
|
} else {
|
|
$query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1), 0)"
|
|
. ", COALESCE((SELECT punkte FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_rangliste_punkte ON #__sportsmanager_rangliste_punkte.rangliste_id = $ranglisteId AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_turniermeldung_spieler.spieler_id WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1), 0)) AS Maximum";
|
|
}
|
|
}
|
|
$query .= "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '20'"
|
|
. "\n ORDER BY " . ($ranglisteId != 0 ? ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ") : "") . "Nachname1, Vorname1";
|
|
}
|
|
$voranmeldungen = loadObjectList($db, $query);
|
|
$dateiname = 'Voranmeldungen ' . $turnierdisziplin->turnierbezeichnung . ' - ' . $turnierdisziplin->disziplin . '.csv';
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
Header("Content-Type: text/x-csv");
|
|
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
|
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
|
|
Header("Pragma: no-cache");
|
|
|
|
if ($format == 0) {
|
|
$trennzeichen = "\t";
|
|
|
|
$header = "";
|
|
foreach ($voranmeldungen[0] as $field => $value)
|
|
$header .= $field . $trennzeichen;
|
|
|
|
$data = "";
|
|
foreach ($voranmeldungen as $row) {
|
|
$line = '';
|
|
foreach ($row as $value) {
|
|
if ((!isset($value)) or ($value == "")) {
|
|
$value = $trennzeichen;
|
|
} else {
|
|
$value = str_replace('"', '""', $value);
|
|
$value = str_replace("\t", ' ', $value);
|
|
$value = str_replace("\r", '', $value);
|
|
$value = str_replace("\n", ' ', $value);
|
|
$value = '"' . $value . '"' . $trennzeichen;
|
|
}
|
|
$line .= $value;
|
|
}
|
|
$data .= trim($line) . "\n";
|
|
}
|
|
$data = str_replace("\r", "", $data);
|
|
|
|
echo "sep=" . $trennzeichen . "\n" . $header . "\n" . $data;
|
|
} else {
|
|
$gesetzt = ($format - 1) * 4;
|
|
if ($turnierdisziplin->typ == 0) {
|
|
echo "1\r\n";
|
|
echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#PSEUDONYM#SETZPOSITION\r\n";
|
|
} else {
|
|
echo "2\r\n";
|
|
echo "NAME1#VORNAME1#GESCHLECHT1#VEREIN1#NAME2#VORNAME2#GESCHLECHT2#VEREIN2#PSEUDONYM#SETZPOSITION\r\n";
|
|
}
|
|
|
|
$platz = 1;
|
|
$punkte = 0;
|
|
$tatsaechlicher_platz = 0;
|
|
foreach ($voranmeldungen as $row) {
|
|
$row_punkte = $ranglisteId != 0 ? ($turnierdisziplin->typ == 0 ? $row->Punkte : ($sortierung == 0 ? $row->Summe : $row->Maximum)) : 0;
|
|
if ($row_punkte != $punkte) {
|
|
$tatsaechlicher_platz = $platz;
|
|
$punkte = $row_punkte;
|
|
}
|
|
if ($turnierdisziplin->typ == 0) {
|
|
echo utf8_decode(str_replace("#", ' ', $row->Nachname)
|
|
. "#" . str_replace("#", ' ', $row->Vorname)
|
|
. "#" . ($row->Geschlecht == "M" ? "M" : "F")
|
|
. "#" . str_replace("#", ' ', $row->Verein)
|
|
. "#"
|
|
. "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n");
|
|
} else {
|
|
echo utf8_decode(str_replace("#", ' ', $row->Nachname1)
|
|
. "#" . str_replace("#", ' ', $row->Vorname1)
|
|
. "#" . ($row->Geschlecht1 == "M" ? "M" : "F")
|
|
. "#" . str_replace("#", ' ', $row->Verein1)
|
|
. "#" . str_replace("#", ' ', $row->Nachname2)
|
|
. "#" . str_replace("#", ' ', $row->Vorname2)
|
|
. "#" . ($row->Geschlecht2 == "M" ? "M" : "F")
|
|
. "#" . str_replace("#", ' ', $row->Verein2)
|
|
. "#"
|
|
. "#" . ($gesetzt != 0 && $tatsaechlicher_platz <= $gesetzt ? $tatsaechlicher_platz : "0") . "\r\n");
|
|
}
|
|
$platz++;
|
|
}
|
|
}
|
|
|
|
die();
|
|
}
|
|
|
|
function adminTurnierdisziplinMeldungenSpiele(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
if ($turnierDisziplinId == 0) die ("Wrong id!");
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
$disziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierDisziplinId AND platz > 0), 1, 0)";
|
|
$platzierung_anzeigen = loadResult($db, $query) > 0;
|
|
|
|
$meldungen = array();
|
|
$meldungenSpielerNamen = array();
|
|
foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) {
|
|
|
|
$query = "SELECT platz, turniermeldung_id"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '$rundenstufe'"
|
|
. "\n ORDER BY platz, turniermeldung_id";
|
|
$meldungen[$rundenstufe] = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT turniermeldung_id, spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId"
|
|
. "\n ORDER BY turniermeldung_spieler_id";
|
|
$meldungenSpieler = loadObjectList($db, $query);
|
|
foreach ($meldungenSpieler as $s) {
|
|
$spielername = $s->spieler_id == null ? hervorheben($s->nachname . ", " . $s->vorname) : ($s->nachname . ", " . $s->vorname);
|
|
if (empty($meldungenSpielerNamen[$s->turniermeldung_id]))
|
|
$meldungenSpielerNamen[$s->turniermeldung_id] = $spielername;
|
|
else
|
|
$meldungenSpielerNamen[$s->turniermeldung_id] = StringsZusammenfassen($meldungenSpielerNamen[$s->turniermeldung_id], $spielername);
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnier_rundenstufe"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
$rundenstufen_details = array();
|
|
foreach ($rows as $row) {
|
|
$rundenstufen_details[$row->rundenstufe] = $row;
|
|
}
|
|
|
|
$spiele = array();
|
|
foreach (array(1, 2, 3, 10) as $rundenstufe) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnierspiel"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '$rundenstufe'"
|
|
. "\n ORDER BY runde DESC, spiel_nummer";
|
|
$spiele[$rundenstufe] = loadObjectList($db, $query);
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminTurnierdisziplinMeldungenSpiele($disziplin, $rundenstufen_details, $meldungen, $meldungenSpielerNamen, $spiele, $platzierung_anzeigen);
|
|
}
|
|
|
|
#[NoReturn] function adminTurnierdisziplinMeldungenSpieleAlleEntfernen(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id);
|
|
}
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zum Turnier gehört
|
|
$query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
$elo_aktualisieren = $turnierdisziplin->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren(0, $id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id);
|
|
}
|
|
|
|
function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($row->turnier_id)) {
|
|
keinZugriff(true);
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter);
|
|
}
|
|
|
|
#[NoReturn] function adminImportTurnierdisziplinMeldungenSpiele(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$veranstalter_id = $jInput->get('veranstalterid', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id);
|
|
}
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zum Turnier gehört
|
|
$query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (benutzerZugriff("turniere_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
$zugriffsebene = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($zugriffsebene == 2 && $veranstalter_id != 0)
|
|
$wertungsbedingung = "(SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_verein USING (verein_id) WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND veranstalter_id = $veranstalter_id) > 0 AND ";
|
|
else
|
|
$wertungsbedingung = "NOT ISNULL(aktueller_verein_id) AND ";
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
$elo_aktualisieren = $turnierdisziplin->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null;
|
|
|
|
if (!empty($_FILES["daten"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["daten"]["tmp_name"])) {
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$handle = fopen($_FILES["daten"]["tmp_name"], "r");
|
|
if (!$handle) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei kann nicht geöffnet werden.");
|
|
}
|
|
if (feof($handle)) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer.");
|
|
}
|
|
$titelzeile = chop(utf8_encode(fgets($handle, 4096)));
|
|
if (str_starts_with($titelzeile, "sep=")) {
|
|
$titelzeile = chop(utf8_encode(fgets($handle, 4096)));
|
|
}
|
|
if (str_contains($titelzeile, "\t"))
|
|
$trennzeichen = "\t";
|
|
else if (str_contains($titelzeile, ";"))
|
|
$trennzeichen = ";";
|
|
else
|
|
$trennzeichen = ",";
|
|
|
|
$spalte = array();
|
|
$titel = explode($trennzeichen, strtolower($titelzeile));
|
|
|
|
foreach ($titel as $index => $bezeichnung) {
|
|
if ($bezeichnung == "platz" || $bezeichnung == "platzierung")
|
|
$spalte["platz"] = $index;
|
|
else if ($bezeichnung == "itsf")
|
|
$spalte["itsf"] = $index;
|
|
else if ($bezeichnung == "name" || $bezeichnung == "nachname" || $bezeichnung == "name1" || $bezeichnung == "nachname1" || $bezeichnung == "nachname 1")
|
|
$spalte["nachname1"] = $index;
|
|
else if ($bezeichnung == "vorname" || $bezeichnung == "vorname1" || $bezeichnung == "vorname 1")
|
|
$spalte["vorname1"] = $index;
|
|
else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1")
|
|
$spalte["spielernr1"] = $index;
|
|
else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1")
|
|
$spalte["verein1"] = $index;
|
|
else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2")
|
|
$spalte["nachname2"] = $index;
|
|
else if ($bezeichnung == "vorname2" || $bezeichnung == "vorname 2")
|
|
$spalte["vorname2"] = $index;
|
|
else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2")
|
|
$spalte["spielernr2"] = $index;
|
|
else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2")
|
|
$spalte["verein1"] = $index;
|
|
}
|
|
|
|
// CSV-Import
|
|
if ((isset($spalte["platz"]) && isset($spalte["vorname1"]) && isset($spalte["nachname1"])) || isset($spalte["itsf"])) {
|
|
$spielerMeldungen = array();
|
|
|
|
$ist_doppel = false;
|
|
if (isset($spalte["vorname2"]) && isset($spalte["nachname2"]))
|
|
$ist_doppel = true;
|
|
|
|
while (!feof($handle)) {
|
|
$buffer = chop(utf8_encode(fgets($handle, 4096)));
|
|
$daten = explode($trennzeichen, $buffer);
|
|
|
|
foreach ($daten as $index => $wert) {
|
|
$wert = trim($wert);
|
|
$len = strlen($wert);
|
|
if ($len < 2 || $wert[0] != '"' || $wert[$len - 1] != '"')
|
|
$daten[$index] = $wert;
|
|
else
|
|
$daten[$index] = str_replace('""', '"', substr($wert, 1, $len - 2));
|
|
}
|
|
$vorname2 = null;
|
|
$nachname2 = null;
|
|
$verein2 = null;
|
|
if (isset($spalte["itsf"])) {
|
|
if (!isset($daten[$spalte["itsf"]]))
|
|
continue;
|
|
$itsf_daten = $daten[$spalte["itsf"]];
|
|
if (empty($itsf_daten))
|
|
continue;
|
|
|
|
if (!$ist_doppel && str_contains($itsf_daten, " - ")) {
|
|
if (count($spielerMeldungen) != 0)
|
|
continue;
|
|
$ist_doppel = true;
|
|
}
|
|
|
|
$nachname1 = "";
|
|
$vorname1 = "";
|
|
$spielernr1 = "";
|
|
$verein1 = "";
|
|
if ($ist_doppel) {
|
|
$nachname2 = "";
|
|
$vorname2 = "";
|
|
$spielernr2 = "";
|
|
$verein2 = "";
|
|
}
|
|
|
|
$itsf_felder = explode(" ", $itsf_daten);
|
|
$position = 0; // 0: Platz, 1: Vorname1, 2: Nachname1, 3: Land1, 4: Vorname2, 5: Nachname2, 6: Land2
|
|
foreach ($itsf_felder as $feld) {
|
|
if ($position == 0) {
|
|
if (!is_numeric($feld))
|
|
break;
|
|
$platz = $feld;
|
|
$position++;
|
|
continue;
|
|
}
|
|
if ($position == 1) {
|
|
if (strtoupper($feld) != $feld) {
|
|
if (!empty($vorname1))
|
|
$vorname1 .= " ";
|
|
$vorname1 .= $feld;
|
|
continue;
|
|
}
|
|
$position = 2;
|
|
}
|
|
if ($position == 2) {
|
|
if ($feld != "-" && !str_starts_with($feld, "(")) {
|
|
if (!empty($nachname1))
|
|
$nachname1 .= " ";
|
|
$nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1));
|
|
continue;
|
|
}
|
|
$position = 3;
|
|
}
|
|
if ($position == 3) {
|
|
if ($feld == "-")
|
|
continue;
|
|
if (str_starts_with($feld, "(") && substr($feld, 4) == ")") {
|
|
$verein1 = substr($feld, 1, 3);
|
|
continue;
|
|
}
|
|
if (!$ist_doppel)
|
|
break;
|
|
$position = 4;
|
|
}
|
|
if ($position == 4) {
|
|
if (strtoupper($feld) != $feld) {
|
|
if (!empty($vorname2))
|
|
$vorname2 .= " ";
|
|
$vorname2 .= $feld;
|
|
continue;
|
|
}
|
|
$position = 5;
|
|
}
|
|
if ($position == 5) {
|
|
if ($feld != "-" && !str_starts_with($feld, "(")) {
|
|
if (ctype_digit($feld))
|
|
continue;
|
|
if (!empty($nachname2))
|
|
$nachname2 .= " ";
|
|
$nachname2 .= substr($feld, 0, 1) . strtolower(substr($feld, 1));
|
|
continue;
|
|
}
|
|
$position = 6;
|
|
}
|
|
if ($position == 6) {
|
|
if ($feld == "-")
|
|
continue;
|
|
if (str_starts_with($feld, "(") && substr($feld, 4) == ")") {
|
|
$verein2 = substr($feld, 1, 3);
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (empty($platz) || empty($vorname1) || empty($nachname1))
|
|
continue;
|
|
if ($ist_doppel && (empty($vorname2) || empty($nachname2)))
|
|
continue;
|
|
} else {
|
|
$platz = str_replace(".", "", $daten[$spalte["platz"]]);
|
|
if (empty($platz))
|
|
continue;
|
|
|
|
if (!isset($daten[$spalte["vorname1"]]) || !isset($daten[$spalte["nachname1"]]))
|
|
continue;
|
|
|
|
$nachname1 = $daten[$spalte["nachname1"]];
|
|
$vorname1 = $daten[$spalte["vorname1"]];
|
|
$spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : "";
|
|
$verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : "";
|
|
|
|
if ($vorname1 == "" || $nachname1 == "")
|
|
continue;
|
|
|
|
if ($ist_doppel) {
|
|
if (!isset($daten[$spalte["vorname2"]]) || !isset($daten[$spalte["nachname2"]]))
|
|
continue;
|
|
|
|
$nachname2 = $daten[$spalte["nachname2"]];
|
|
$vorname2 = $daten[$spalte["vorname2"]];
|
|
$spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : "";
|
|
$verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : "";
|
|
|
|
if ($vorname2 == "" || $nachname2 == "")
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if ($ist_doppel) {
|
|
// Spielernummern und -namen ermitteln
|
|
$spieler2_id = null;
|
|
if (!empty($spielernr2)) {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr2) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
if (count($s) == 1)
|
|
$spieler2_id = $s[0]->spieler_id;
|
|
}
|
|
if ($spieler2_id == null) {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname2) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname2) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
if (count($s) == 1)
|
|
$spieler2_id = $s[0]->spieler_id;
|
|
}
|
|
}
|
|
|
|
// Spielernummern und -namen ermitteln
|
|
$spieler1_id = null;
|
|
if (!empty($spielernr1)) {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr1) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
if (count($s) == 1)
|
|
$spieler1_id = $s[0]->spieler_id;
|
|
}
|
|
if ($spieler1_id == null) {
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname1) . "') = 0 AND STRCMP(nachname, '" . $db->escape($nachname1) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
if (count($s) == 1)
|
|
$spieler1_id = $s[0]->spieler_id;
|
|
}
|
|
|
|
$spielerMeldung = array();
|
|
$spielerMeldung["p"] = $platz;
|
|
if ($spieler1_id == null) {
|
|
$spielerMeldung["1n"] = $nachname1;
|
|
$spielerMeldung["1v"] = $vorname1;
|
|
$spielerMeldung["1vn"] = $verein1;
|
|
} else
|
|
$spielerMeldung["1"] = $spieler1_id;
|
|
|
|
if ($ist_doppel) {
|
|
if ($spieler2_id == null) {
|
|
$spielerMeldung["2n"] = $nachname2;
|
|
$spielerMeldung["2v"] = $vorname2;
|
|
$spielerMeldung["2vn"] = $verein2;
|
|
} else
|
|
$spielerMeldung["2"] = $spieler2_id;
|
|
}
|
|
$spielerMeldungen[] = $spielerMeldung;
|
|
}
|
|
fclose($handle);
|
|
|
|
foreach ($spielerMeldungen as $spielerMeldung) {
|
|
$platz = $spielerMeldung["p"];
|
|
$spieler1_id = $spielerMeldung["1"] ?? null;
|
|
if ($ist_doppel)
|
|
$spieler2_id = $spielerMeldung["2"] ?? null;
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)"
|
|
. "\n VALUES ('$id', '0', '$platz');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$meldungId = $db->insertid();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$meldungId', " . ($spieler1_id != null ? "'$spieler1_id'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$meldungSpielerId = $db->insertid();
|
|
|
|
if ($spieler1_id == null) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["1n"]) . "', '" . $db->escape($spielerMeldung["1v"]) . "', '" . $db->escape($spielerMeldung["1vn"]) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($ist_doppel) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$meldungId', " . ($spieler2_id != null ? "'$spieler2_id'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$meldungSpielerId = $db->insertid();
|
|
|
|
if ($spieler2_id == null) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else { // XML-Import
|
|
fclose($handle);
|
|
|
|
// Daten zu Vorrunde laden
|
|
$disziplinVorrunde = null;
|
|
if (!empty($_FILES["daten_vorrunde"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["daten_vorrunde"]["tmp_name"])) {
|
|
$disziplinVorrunde = new DOMDocument();
|
|
$disziplinVorrunde->recover = true;
|
|
$success = $disziplinVorrunde->load($_FILES["daten_vorrunde"]["tmp_name"]);
|
|
if (!$success) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei.");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Daten zu Zusatzrunde laden
|
|
$disziplinZusatzrunde = null;
|
|
if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) {
|
|
$disziplinZusatzrunde = new DOMDocument();
|
|
$disziplinZusatzrunde->recover = true;
|
|
$success = $disziplinZusatzrunde->load($_FILES["daten_zusatzrunde"]["tmp_name"]);
|
|
if (!$success) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei.");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Daten zu 2. Zusatzrunde laden
|
|
$disziplinZusatzrunde2 = null;
|
|
if (!empty($_FILES["daten_zusatzrunde2"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["daten_zusatzrunde2"]["tmp_name"])) {
|
|
$disziplinZusatzrunde2 = new DOMDocument();
|
|
$disziplinZusatzrunde2->recover = true;
|
|
$success = $disziplinZusatzrunde2->load($_FILES["daten_zusatzrunde2"]["tmp_name"]);
|
|
if (!$success) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei.");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Daten zu Hauptrunde laden
|
|
$disziplin = new DOMDocument();
|
|
$disziplin->recover = true;
|
|
$success = $disziplin->load($_FILES["daten"]["tmp_name"]);
|
|
if (!$success) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei.");
|
|
}
|
|
|
|
if ($disziplinVorrunde != null) {
|
|
$matchingNodes = $disziplinVorrunde->getElementsByTagName("disziplin");
|
|
if ($matchingNodes == null) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin.");
|
|
}
|
|
if ($matchingNodes->length != 1) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten.");
|
|
}
|
|
}
|
|
|
|
if ($disziplinZusatzrunde != null) {
|
|
$matchingNodes = $disziplinZusatzrunde->getElementsByTagName("disziplin");
|
|
if ($matchingNodes == null) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin.");
|
|
}
|
|
if ($matchingNodes->length != 1) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten.");
|
|
}
|
|
}
|
|
|
|
if ($disziplinZusatzrunde2 != null) {
|
|
$matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("disziplin");
|
|
if ($matchingNodes == null) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin.");
|
|
}
|
|
if ($matchingNodes->length != 1) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten.");
|
|
}
|
|
}
|
|
|
|
$matchingNodes = $disziplin->getElementsByTagName("disziplin");
|
|
if ($matchingNodes == null) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin.");
|
|
}
|
|
if ($matchingNodes->length != 1) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten.");
|
|
}
|
|
|
|
// Spieler-Ids über Spielerliste ermitteln
|
|
$meldungenSpieler = array();
|
|
$meldungenPlatz = array();
|
|
foreach (array(0, 1, 2, 3, 10) as $rundenstufe)
|
|
$meldungenPlatz[$rundenstufe] = array();
|
|
$meldungenIds = array();
|
|
$matchingNodes = $disziplin->getElementsByTagName("meldung");
|
|
if ($matchingNodes != null) {
|
|
$totalHauptrunde = $matchingNodes->length;
|
|
for ($i = 0; $i < $totalHauptrunde; $i++) {
|
|
$currNode = $matchingNodes->item($i);
|
|
$meldungName = $currNode->getAttribute("name");
|
|
$meldungPlatz = (int)$currNode->getAttribute("platz");
|
|
$meldungenSpieler[$meldungName] = array();
|
|
$meldungenPlatz[0][$meldungName] = $meldungPlatz;
|
|
$meldungenPlatz[1][$meldungName] = $meldungPlatz;
|
|
|
|
$spielerNodes = $currNode->getElementsByTagName("spieler");
|
|
foreach ($spielerNodes as $spieler) {
|
|
$spielernr = $spieler->getAttribute("spielerpass");
|
|
|
|
if (!empty($spielernr)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '$spielernr') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
} else
|
|
$gefunden = null;
|
|
|
|
$spielerNachname = null;
|
|
$spielerVorname = null;
|
|
$spielerVerein = null;
|
|
if (!$gefunden) {
|
|
$spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : "";
|
|
$spielerNachname = trim($spieler->getAttribute("nachname"));
|
|
$spielerVerein = trim($spieler->getAttribute("verein"));
|
|
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
}
|
|
|
|
if ($gefunden != -1 && $gefunden != null)
|
|
$meldungenSpieler[$meldungName][] = $gefunden;
|
|
else
|
|
$meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein);
|
|
}
|
|
}
|
|
|
|
$neueMeldungenZusatzrunde = 0;
|
|
if ($disziplinZusatzrunde != null) {
|
|
$matchingNodesZusatzrunde = $disziplinZusatzrunde->getElementsByTagName("meldung");
|
|
if ($matchingNodesZusatzrunde != null) {
|
|
$totalZusatzrunde = $matchingNodesZusatzrunde->length;
|
|
for ($i = 0; $i < $totalZusatzrunde; $i++) {
|
|
$currNode = $matchingNodesZusatzrunde->item($i);
|
|
$meldungName = $currNode->getAttribute("name");
|
|
$meldungPlatz = (int)$currNode->getAttribute("platz");
|
|
$meldungenPlatz[2][$meldungName] = $meldungPlatz;
|
|
if (!isset($meldungenSpieler[$meldungName])) {
|
|
$neueMeldungenZusatzrunde++;
|
|
$meldungenSpieler[$meldungName] = array();
|
|
$meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz;
|
|
|
|
$spielerNodes = $currNode->getElementsByTagName("spieler");
|
|
foreach ($spielerNodes as $spieler) {
|
|
$spielernr = $spieler->getAttribute("spielerpass");
|
|
|
|
if (!empty($spielernr)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
} else
|
|
$gefunden = null;
|
|
|
|
$spielerVorname = null;
|
|
$spielerNachname = null;
|
|
$spielerVerein = null;
|
|
if (!$gefunden) {
|
|
$spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : "";
|
|
$spielerNachname = trim($spieler->getAttribute("nachname"));
|
|
$spielerVerein = trim($spieler->getAttribute("verein"));
|
|
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
}
|
|
|
|
if ($gefunden != -1 && $gefunden != null)
|
|
$meldungenSpieler[$meldungName][] = $gefunden;
|
|
else
|
|
$meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$neueMeldungenZusatzrunde2 = 0;
|
|
if ($disziplinZusatzrunde2 != null) {
|
|
$matchingNodesZusatzrunde2 = $disziplinZusatzrunde2->getElementsByTagName("meldung");
|
|
if ($matchingNodesZusatzrunde2 != null) {
|
|
$totalZusatzrunde2 = $matchingNodesZusatzrunde2->length;
|
|
for ($i = 0; $i < $totalZusatzrunde2; $i++) {
|
|
$currNode = $matchingNodesZusatzrunde2->item($i);
|
|
$meldungName = $currNode->getAttribute("name");
|
|
$meldungPlatz = (int)$currNode->getAttribute("platz");
|
|
$meldungenPlatz[3][$meldungName] = $meldungPlatz;
|
|
if (!isset($meldungenSpieler[$meldungName])) {
|
|
$neueMeldungenZusatzrunde2++;
|
|
$meldungenSpieler[$meldungName] = array();
|
|
$meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz;
|
|
|
|
$spielerNodes = $currNode->getElementsByTagName("spieler");
|
|
foreach ($spielerNodes as $spieler) {
|
|
$spielernr = $spieler->getAttribute("spielerpass");
|
|
|
|
if (!empty($spielernr)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
} else
|
|
$gefunden = null;
|
|
|
|
$spielerVorname = null;
|
|
$spielerNachname = null;
|
|
$spielerVerein = null;
|
|
if (!$gefunden) {
|
|
$spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : "";
|
|
$spielerNachname = trim($spieler->getAttribute("nachname"));
|
|
$spielerVerein = trim($spieler->getAttribute("verein"));
|
|
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
}
|
|
|
|
if ($gefunden != -1 && $gefunden != null)
|
|
$meldungenSpieler[$meldungName][] = $gefunden;
|
|
else
|
|
$meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$disziplinVorrundeErsterPlatz = 0;
|
|
if ($disziplinVorrunde != null) {
|
|
$matchingNodesVorrunde = $disziplinVorrunde->getElementsByTagName("meldung");
|
|
if ($matchingNodesVorrunde != null) {
|
|
$totalVorrunde = $matchingNodesVorrunde->length;
|
|
for ($i = 0; $i < $totalVorrunde; $i++) {
|
|
$currNode = $matchingNodesVorrunde->item($i);
|
|
$meldungName = $currNode->getAttribute("name");
|
|
if (isset($meldungenSpieler[$meldungName]))
|
|
continue;
|
|
$meldungPlatz = $currNode->getAttribute("platz");
|
|
if ($meldungPlatz < $disziplinVorrundeErsterPlatz || $disziplinVorrundeErsterPlatz == 0)
|
|
$disziplinVorrundeErsterPlatz = $meldungPlatz;
|
|
}
|
|
|
|
for ($i = 0; $i < $totalVorrunde; $i++) {
|
|
$currNode = $matchingNodesVorrunde->item($i);
|
|
$meldungName = $currNode->getAttribute("name");
|
|
$meldungPlatz = (int)$currNode->getAttribute("platz");
|
|
$meldungenPlatz[10][$meldungName] = $meldungPlatz;
|
|
if ($disziplinVorrundeErsterPlatz == 0)
|
|
$disziplinVorrundeErsterPlatz = $meldungPlatz;
|
|
if (!isset($meldungenSpieler[$meldungName])) {
|
|
$meldungenSpieler[$meldungName] = array();
|
|
$meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $neueMeldungenZusatzrunde2 + $meldungPlatz - $disziplinVorrundeErsterPlatz + 1;
|
|
|
|
$spielerNodes = $currNode->getElementsByTagName("spieler");
|
|
foreach ($spielerNodes as $spieler) {
|
|
$spielernr = $spieler->getAttribute("spielerpass");
|
|
|
|
if (!empty($spielernr)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
} else
|
|
$gefunden = null;
|
|
|
|
$spielerVorname = null;
|
|
$spielerNachname = null;
|
|
$spielerVerein = null;
|
|
if (!$gefunden) {
|
|
$spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : "";
|
|
$spielerNachname = trim($spieler->getAttribute("nachname"));
|
|
$spielerVerein = trim($spieler->getAttribute("verein"));
|
|
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0 AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$s = loadObjectList($db, $query);
|
|
$gefunden = count($s) == 1 ? $s[0]->spieler_id : null;
|
|
}
|
|
|
|
if ($gefunden != -1 && $gefunden != null)
|
|
$meldungenSpieler[$meldungName][] = $gefunden;
|
|
else
|
|
$meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Meldungen speichern
|
|
foreach ($meldungenSpieler as $meldungName => $spielerIds) {
|
|
$meldungPlatz = $meldungenPlatz[0][$meldungName];
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)"
|
|
. "\n VALUES ('$id', '0', '$meldungPlatz');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$meldungId = $db->insertid();
|
|
$meldungenIds[$meldungName] = $meldungId;
|
|
|
|
foreach ($spielerIds as $spielerId) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$meldungId', " . (!is_array($spielerId) ? "'$spielerId'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$meldungSpielerId = $db->insertid();
|
|
|
|
if (is_array($spielerId)) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
$rundenstufen = array(0);
|
|
$platzierungen = array(0 => $meldungenPlatz[0][$meldungName]);
|
|
foreach (array(1, 2, 3, 10) as $rundenstufe) {
|
|
if (isset($meldungenPlatz[$rundenstufe][$meldungName])) {
|
|
$rundenstufen[] = $rundenstufe;
|
|
$platzierungen[$rundenstufe] = $meldungenPlatz[$rundenstufe][$meldungName];
|
|
}
|
|
}
|
|
meldungsgruppe_verknuepfen($meldungId, $rundenstufen, $platzierungen);
|
|
}
|
|
}
|
|
|
|
// Spiele speichern
|
|
$totalVorrunde = 0;
|
|
if ($disziplinVorrunde != null) {
|
|
$matchingNodes = $disziplinVorrunde->getElementsByTagName("runde");
|
|
if ($matchingNodes != null) {
|
|
$totalVorrunde = $matchingNodes->length;
|
|
$ergebnis_saetze_maximum = 0;
|
|
for ($i = 0; $i < $totalVorrunde; $i++) {
|
|
$currNode = $matchingNodes->item($i);
|
|
$rundenNr = $currNode->getAttribute("no");
|
|
|
|
$spielNodes = $currNode->getElementsByTagName("spiel");
|
|
foreach ($spielNodes as $spiel) {
|
|
$heim = $spiel->getAttribute("heim");
|
|
$gast = $spiel->getAttribute("gast");
|
|
|
|
$heimGewonneneSaetze = 0;
|
|
$gastGewonneneSaetze = 0;
|
|
$ergebnis_detailliert = "";
|
|
$ergebnis_saetze = 0;
|
|
$satzNodes = $spiel->getElementsByTagName("satz");
|
|
foreach ($satzNodes as $satz) {
|
|
$heimPunkte = $satz->getAttribute("heim");
|
|
$gastPunkte = $satz->getAttribute("gast");
|
|
if ($heimPunkte > $gastPunkte)
|
|
$heimGewonneneSaetze++;
|
|
else if ($heimPunkte < $gastPunkte)
|
|
$gastGewonneneSaetze++;
|
|
if ($heimPunkte > 1 || $gastPunkte > 1) {
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte;
|
|
$ergebnis_saetze++;
|
|
}
|
|
}
|
|
if ($ergebnis_saetze > $ergebnis_saetze_maximum)
|
|
$ergebnis_saetze_maximum = $ergebnis_saetze;
|
|
|
|
$heimId = $meldungenIds[$heim];
|
|
$gastId = $meldungenIds[$gast];
|
|
$spielNr = $i + 1;
|
|
if ($heimGewonneneSaetze > $gastGewonneneSaetze)
|
|
$ergebnis = 1;
|
|
else if ($heimGewonneneSaetze < $gastGewonneneSaetze)
|
|
$ergebnis = 2;
|
|
else
|
|
$ergebnis = 0;
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)"
|
|
. "\n VALUES ('$id', '$spielNr', '$rundenNr', '10', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
}
|
|
}
|
|
if ($ergebnis_saetze_maximum > 0) {
|
|
$query = "INSERT #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '',"
|
|
. "\n typ = null,"
|
|
. "\n runden = null,"
|
|
. "\n tabellenwertung = null,"
|
|
. "\n saetze = " . "'$ergebnis_saetze_maximum'" . ","
|
|
. "\n tore = null,"
|
|
. "\n spielfelder = null,"
|
|
. "\n turnierdisziplin_id = '$id',"
|
|
. "\n rundenstufe = '10'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Spiele speichern
|
|
if ($disziplinZusatzrunde != null) {
|
|
$matchingNodes = $disziplinZusatzrunde->getElementsByTagName("runde");
|
|
if ($matchingNodes != null) {
|
|
$totalZusatzrunde = $matchingNodes->length;
|
|
$ergebnis_saetze_maximum = 0;
|
|
for ($i = 0; $i < $totalZusatzrunde; $i++) {
|
|
$currNode = $matchingNodes->item($i);
|
|
$rundenNr = $currNode->getAttribute("no");
|
|
|
|
$spielNodes = $currNode->getElementsByTagName("spiel");
|
|
foreach ($spielNodes as $spiel) {
|
|
$heim = $spiel->getAttribute("heim");
|
|
$gast = $spiel->getAttribute("gast");
|
|
|
|
$heimGewonneneSaetze = 0;
|
|
$gastGewonneneSaetze = 0;
|
|
$ergebnis_detailliert = "";
|
|
$ergebnis_saetze = 0;
|
|
$satzNodes = $spiel->getElementsByTagName("satz");
|
|
foreach ($satzNodes as $satz) {
|
|
$heimPunkte = $satz->getAttribute("heim");
|
|
$gastPunkte = $satz->getAttribute("gast");
|
|
if ($heimPunkte > $gastPunkte)
|
|
$heimGewonneneSaetze++;
|
|
else if ($heimPunkte < $gastPunkte)
|
|
$gastGewonneneSaetze++;
|
|
if ($heimPunkte > 1 || $gastPunkte > 1) {
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte;
|
|
$ergebnis_saetze++;
|
|
}
|
|
}
|
|
if ($ergebnis_saetze > $ergebnis_saetze_maximum)
|
|
$ergebnis_saetze_maximum = $ergebnis_saetze;
|
|
|
|
$heimId = $meldungenIds[$heim];
|
|
$gastId = $meldungenIds[$gast];
|
|
$spielNr = $i + 1;
|
|
if ($heimGewonneneSaetze > $gastGewonneneSaetze)
|
|
$ergebnis = 1;
|
|
else if ($heimGewonneneSaetze < $gastGewonneneSaetze)
|
|
$ergebnis = 2;
|
|
else
|
|
$ergebnis = 0;
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)"
|
|
. "\n VALUES ('$id', '$spielNr', '$rundenNr', '2', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
if ($ergebnis_saetze_maximum > 0) {
|
|
$query = "INSERT #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '',"
|
|
. "\n typ = null,"
|
|
. "\n runden = null,"
|
|
. "\n tabellenwertung = null,"
|
|
. "\n saetze = " . "'$ergebnis_saetze_maximum'" . ","
|
|
. "\n tore = null,"
|
|
. "\n spielfelder = null,"
|
|
. "\n turnierdisziplin_id = '$id',"
|
|
. "\n rundenstufe = '2'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Spiele speichern
|
|
if ($disziplinZusatzrunde2 != null) {
|
|
$matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("runde");
|
|
if ($matchingNodes != null) {
|
|
$totalZusatzrunde2 = $matchingNodes->length;
|
|
$ergebnis_saetze_maximum = 0;
|
|
for ($i = 0; $i < $totalZusatzrunde2; $i++) {
|
|
$currNode = $matchingNodes->item($i);
|
|
$rundenNr = $currNode->getAttribute("no");
|
|
|
|
$spielNodes = $currNode->getElementsByTagName("spiel");
|
|
foreach ($spielNodes as $spiel) {
|
|
$heim = $spiel->getAttribute("heim");
|
|
$gast = $spiel->getAttribute("gast");
|
|
|
|
$heimGewonneneSaetze = 0;
|
|
$gastGewonneneSaetze = 0;
|
|
$ergebnis_detailliert = "";
|
|
$ergebnis_saetze = 0;
|
|
$satzNodes = $spiel->getElementsByTagName("satz");
|
|
foreach ($satzNodes as $satz) {
|
|
$heimPunkte = $satz->getAttribute("heim");
|
|
$gastPunkte = $satz->getAttribute("gast");
|
|
if ($heimPunkte > $gastPunkte)
|
|
$heimGewonneneSaetze++;
|
|
else if ($heimPunkte < $gastPunkte)
|
|
$gastGewonneneSaetze++;
|
|
if ($heimPunkte > 1 || $gastPunkte > 1) {
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte;
|
|
$ergebnis_saetze++;
|
|
}
|
|
}
|
|
if ($ergebnis_saetze > $ergebnis_saetze_maximum)
|
|
$ergebnis_saetze_maximum = $ergebnis_saetze;
|
|
|
|
$heimId = $meldungenIds[$heim];
|
|
$gastId = $meldungenIds[$gast];
|
|
$spielNr = $i + 1;
|
|
if ($heimGewonneneSaetze > $gastGewonneneSaetze)
|
|
$ergebnis = 1;
|
|
else if ($heimGewonneneSaetze < $gastGewonneneSaetze)
|
|
$ergebnis = 2;
|
|
else
|
|
$ergebnis = 0;
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)"
|
|
. "\n VALUES ('$id', '$spielNr', '$rundenNr', '3', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
if ($ergebnis_saetze_maximum > 0) {
|
|
$query = "INSERT #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '',"
|
|
. "\n typ = null,"
|
|
. "\n runden = null,"
|
|
. "\n tabellenwertung = null,"
|
|
. "\n saetze = " . "'$ergebnis_saetze_maximum'" . ","
|
|
. "\n tore = null,"
|
|
. "\n spielfelder = null,"
|
|
. "\n turnierdisziplin_id = '$id',"
|
|
. "\n rundenstufe = '3'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$matchingNodes = $disziplin->getElementsByTagName("runde");
|
|
if ($matchingNodes != null) {
|
|
$total = $matchingNodes->length;
|
|
$ergebnis_saetze_maximum = 0;
|
|
for ($i = 0; $i < $total; $i++) {
|
|
$currNode = $matchingNodes->item($i);
|
|
$rundenNr = $currNode->getAttribute("no");
|
|
|
|
$spielNodes = $currNode->getElementsByTagName("spiel");
|
|
foreach ($spielNodes as $spiel) {
|
|
$heim = $spiel->getAttribute("heim");
|
|
$gast = $spiel->getAttribute("gast");
|
|
|
|
$heimGewonneneSaetze = 0;
|
|
$gastGewonneneSaetze = 0;
|
|
$ergebnis_detailliert = "";
|
|
$ergebnis_saetze = 0;
|
|
$satzNodes = $spiel->getElementsByTagName("satz");
|
|
foreach ($satzNodes as $satz) {
|
|
$heimPunkte = $satz->getAttribute("heim");
|
|
$gastPunkte = $satz->getAttribute("gast");
|
|
if ($heimPunkte > $gastPunkte)
|
|
$heimGewonneneSaetze++;
|
|
else if ($heimPunkte < $gastPunkte)
|
|
$gastGewonneneSaetze++;
|
|
if ($heimPunkte > 1 || $gastPunkte > 1) {
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte;
|
|
$ergebnis_saetze++;
|
|
}
|
|
}
|
|
if ($ergebnis_saetze > $ergebnis_saetze_maximum)
|
|
$ergebnis_saetze_maximum = $ergebnis_saetze;
|
|
|
|
$heimId = $meldungenIds[$heim];
|
|
$gastId = $meldungenIds[$gast];
|
|
$spielNr = $totalVorrunde + $i + 1;
|
|
if ($heimGewonneneSaetze > $gastGewonneneSaetze)
|
|
$ergebnis = 1;
|
|
else if ($heimGewonneneSaetze < $gastGewonneneSaetze)
|
|
$ergebnis = 2;
|
|
else
|
|
$ergebnis = 0;
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert)"
|
|
. "\n VALUES ('$id', '$spielNr', '$rundenNr', '1', '$heimId', '$gastId', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
if ($ergebnis_saetze_maximum > 0) {
|
|
$query = "INSERT #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '',"
|
|
. "\n typ = null,"
|
|
. "\n runden = null,"
|
|
. "\n tabellenwertung = null,"
|
|
. "\n saetze = " . "'$ergebnis_saetze_maximum'" . ","
|
|
. "\n tore = null,"
|
|
. "\n spielfelder = null,"
|
|
. "\n turnierdisziplin_id = '$id',"
|
|
. "\n rundenstufe = '1'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach (array(1, 2, 3, 10) as $rundenstufe) {
|
|
$query = "SELECT runde, COUNT(*) AS spiele"
|
|
. "\n FROM #__sportsmanager_turnierspiel"
|
|
. "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe"
|
|
. "\n GROUP BY runde"
|
|
. "\n ORDER BY runde DESC";
|
|
$runden = loadObjectList($db, $query);
|
|
if (count($runden) < 2
|
|
|| ($runden[0]->spiele != 1 && $runden[0]->spiele != 2)
|
|
|| $runden[1]->spiele != 2)
|
|
continue;
|
|
if (count($runden) >= 3
|
|
&& ($runden[2]->spiele > 4))
|
|
continue;
|
|
if (count($runden) >= 4
|
|
&& ($runden[2]->spiele != 4 || $runden[3]->spiele > 8))
|
|
continue;
|
|
if (count($runden) >= 5
|
|
&& ($runden[3]->spiele != 8 || $runden[4]->spiele > 16))
|
|
continue;
|
|
|
|
$query = "SELECT turnierspiel_id"
|
|
. "\n FROM #__sportsmanager_turnierspiel"
|
|
. "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[0]->runde
|
|
. "\n ORDER BY turnierspiel_id";
|
|
$rows = loadObjectList($db, $query);
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET runde = '19999'"
|
|
. "\n WHERE turnierspiel_id = '" . $rows[0]->turnierspiel_id . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if (count($rows) >= 2) {
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET runde = '19998'"
|
|
. "\n WHERE turnierspiel_id = '" . $rows[1]->turnierspiel_id . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
for ($i = 1; $i < count($runden) && $i <= 6; $i++) {
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET runde = '" . (19998 - $i) . "'"
|
|
. "\n WHERE turnierdisziplin_id = $id AND rundenstufe = $rundenstufe AND runde = " . $runden[$i]->runde;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren(0, $id);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id);
|
|
}
|
|
|
|
function adminEditTurnierdisziplinSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, typ, turnierbezeichnung, turnierort, beginn, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
$disziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
if (empty($id))
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnier_rundenstufe"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$rows = loadObjectList($db, $query);
|
|
$rundenstufen_details = count($rows) >= 1 ? $rows[0] : null;
|
|
|
|
$query = "SELECT *"
|
|
. ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1"
|
|
. ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND (rundenstufe = '$rundenstufe'" . ($rundenstufe != 0 ? " OR rundenstufe = 0" : "") . ")"
|
|
. "\n ORDER BY rundenstufe, name1, name2";
|
|
$meldungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditTurnierdisziplinSpiel($row, $disziplin, $rundenstufen_details, $meldungen, $rundenstufe);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTurnierdisziplinSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$ergebnis = $jInput->get('ergebnis', 0, 'INT');
|
|
$ergebnis_punkte_heim = $jInput->get('ergebnis_punkte_heim', array(), 'ARRAY');
|
|
$ergebnis_punkte_gast = $jInput->get('ergebnis_punkte_gast', array(), 'ARRAY');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$spiel_nummer = $jInput->get('spiel_nummer', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
$rundentyp = $jInput->get('rundentyp', -1, 'INT');
|
|
$runde = max(min(abs($jInput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1);
|
|
$platzierung_ende = max(min(abs($jInput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id);
|
|
}
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
$ergebnis_detailliert = "";
|
|
$saetze_heim = 0;
|
|
$saetze_gast = 0;
|
|
for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) {
|
|
if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i])))
|
|
continue;
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i];
|
|
$punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i];
|
|
if ($punkte_heim > $punkte_gast)
|
|
$saetze_heim++;
|
|
else if ($punkte_gast > $punkte_heim)
|
|
$saetze_gast++;
|
|
$ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast;
|
|
}
|
|
if ($saetze_heim > 0 || $saetze_gast > 0)
|
|
$ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0);
|
|
|
|
if ($rundentyp >= 10000)
|
|
$runde = $rundentyp;
|
|
else if ($rundentyp == -2)
|
|
$runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende);
|
|
|
|
$gewinner_meldung_id = $jInput->get('gewinner_meldung_id', 0, 'INT');
|
|
$verlierer_meldung_id = $jInput->get('verlierer_meldung_id', 0, 'INT');
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
$elo_aktualisieren = $turnierdisziplin->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null;
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_turnierspiel (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id, ergebnis, ergebnis_detailliert) VALUES ('$turnierDisziplinId', " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . ", '$runde', '$rundenstufe', '$gewinner_meldung_id', '$verlierer_meldung_id', '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ")";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET spiel_nummer = " . ($spiel_nummer != 0 ? "'$spiel_nummer'" : "NULL") . ","
|
|
. "\n runde = '$runde',"
|
|
. "\n heim_meldung_id = '$gewinner_meldung_id',"
|
|
. "\n gast_meldung_id = '$verlierer_meldung_id',"
|
|
. "\n ergebnis = '$ergebnis',"
|
|
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'")
|
|
. "\n WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTurnierdisziplinSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, elo_wertung FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
$elo_aktualisieren = $turnierdisziplin->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierDisziplinId;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($elo_aktualisieren) {
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
function adminEditTurnierdisziplinRunde(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$runde = $jInput->get('runde', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
HTML_sportsmanager_admin::adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $turnierdisziplin);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTurnierdisziplinRunde(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$runde_alt = $jInput->get('runde_alt', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
$rundentyp = $jInput->get('rundentyp', -1, 'INT');
|
|
$runde = max(min(abs($jInput->get('runde', 1, 'INT')), $rundentyp == -2 ? 99 : 9999), 1);
|
|
$platzierung_ende = max(min(abs($jInput->get('platzierung_ende', 0, 'INT')), $runde + 99), 1);
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id);
|
|
}
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
if ($rundentyp >= 10000)
|
|
$runde = $rundentyp;
|
|
else if ($rundentyp == -2)
|
|
$runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende);
|
|
else if ($runde_alt >= 0 && $rundentyp == 0)
|
|
$runde = 0;
|
|
if ($runde_alt < 0)
|
|
$runde = -$runde;
|
|
|
|
if ($runde != $runde_alt) {
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET runde = '$runde'"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND runde = $runde_alt AND rundenstufe = $rundenstufe";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id);
|
|
}
|
|
|
|
function adminEditTurnierdisziplinMeldung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$weitere = $jInput->get('weitere', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 0 && $rundenstufe != 20 && $rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
|
|
$query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$rundenstufen = array();
|
|
$platzierungen = array(0 => "0", 1 => "0", 2 => "0", 3 => "0", 10 => "0", 20 => "0");
|
|
if ($id == null) {
|
|
$meldung = null;
|
|
$meldung_spieler = null;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierDisziplinId ORDER BY rundenstufe, platz DESC";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) > 0) {
|
|
$rundenstufen[] = $rows[0]->rundenstufe;
|
|
$platzierungen[$rows[0]->rundenstufe] = $rows[0]->platz;
|
|
}
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$meldung = $rows[0];
|
|
|
|
if ($meldung->meldungsgruppe_id != null) {
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $meldung->turnierdisziplin_id AND meldungsgruppe_id = $meldung->meldungsgruppe_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$rundenstufen[] = $row->rundenstufe;
|
|
$platzierungen[$row->rundenstufe] = $row->platz;
|
|
}
|
|
} else {
|
|
$rundenstufen[] = $meldung->rundenstufe;
|
|
$platzierungen[$meldung->rundenstufe] = $meldung->platz;
|
|
}
|
|
|
|
$query = "SELECT spieler_id, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vorname, #__sportsmanager_spieler.vorname) AS vorname, "
|
|
. "\n IF(ISNULL(spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) AS vereinsname"
|
|
. "\n FROM #__sportsmanager_turniermeldung_spieler"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id)"
|
|
. "\n WHERE turniermeldung_id = $meldung->turniermeldung_id";
|
|
$meldung_spieler = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE NOT ISNULL(aktueller_verein_id)"
|
|
. "\n ORDER BY nachname, vorname";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditTurnierdisziplinMeldung($meldung, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTurnierdisziplinMeldung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$spieler_1_id = $jInput->get('spieler_1_id', 0, 'INT');
|
|
$spieler_1_nachname = $db->escape($jInput->get('spieler_1_nachname', '', 'RAW'));
|
|
$spieler_1_vorname = $db->escape($jInput->get('spieler_1_vorname', '', 'RAW'));
|
|
$spieler_1_verein = $db->escape($jInput->get('spieler_1_verein', '', 'RAW'));
|
|
$spieler_2_id = $jInput->get('spieler_2_id', 0, 'INT');
|
|
$spieler_2_nachname = $db->escape($jInput->get('spieler_2_nachname', '', 'RAW'));
|
|
$spieler_2_vorname = $db->escape($jInput->get('spieler_2_vorname', '', 'RAW'));
|
|
$spieler_2_verein = $db->escape($jInput->get('spieler_2_verein', '', 'RAW'));
|
|
$weitere = $jInput->get('weitere', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#mid' . $id);
|
|
}
|
|
|
|
$rundenstufen = $jInput->get('rundenstufen', array(), 'ARRAY');
|
|
$platzierungen = $jInput->get('platzierungen', array(), 'ARRAY');
|
|
$platzierungen = array(0 => $platzierungen[0], 1 => $platzierungen[1], 2 => $platzierungen[2], 3 => $platzierungen[3], 10 => $platzierungen[4], 20 => 0);
|
|
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
$elo_aktualisieren = $turnierdisziplin->elo_wertung;
|
|
$aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null;
|
|
|
|
if ($id == 0) {
|
|
$rundenstufe = count($rundenstufen) > 0 ? $rundenstufen[0] : 0;
|
|
$platz = $platzierungen[$rundenstufe];
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)"
|
|
. "\n VALUES ('$turnierDisziplinId', '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$id', " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$turniermeldung_spieler_id = $db->insertid();
|
|
|
|
if ($spieler_1_id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ($turniermeldung_spieler_id, '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($turnierdisziplin->typ == 1) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$id', " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$turniermeldung_spieler_id = $db->insertid();
|
|
|
|
if ($spieler_2_id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ($turniermeldung_spieler_id, '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$meldung = $rows[0];
|
|
|
|
$rundenstufe = $meldung->rundenstufe;
|
|
$platz = $platzierungen[$rundenstufe];
|
|
|
|
$query = "UPDATE #__sportsmanager_turniermeldung"
|
|
. "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL")
|
|
. "\n WHERE turniermeldung_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if ($rows[0]->spieler_id == 0 && $spieler_1_id == 0) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n SET nachname = '$spieler_1_nachname',"
|
|
. "\n vorname = '$spieler_1_vorname',"
|
|
. "\n vereinsname = '$spieler_1_verein'"
|
|
. "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($rows[0]->spieler_id == 0 && $spieler_1_id != 0) {
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n WHERE turniermeldung_spieler_name_id = " . $rows[0]->turniermeldung_spieler_name_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($rows[0]->spieler_id != 0 && $spieler_1_id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES (" . $rows[0]->turniermeldung_spieler_id . ", '$spieler_1_nachname', '$spieler_1_vorname', '$spieler_1_verein');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler"
|
|
. "\n SET spieler_id = " . ($spieler_1_id != 0 ? "'$spieler_1_id'" : "NULL")
|
|
. "\n WHERE turniermeldung_spieler_id = " . $rows[0]->turniermeldung_spieler_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($turnierdisziplin->typ == 1) {
|
|
if ($rows[1]->spieler_id == 0 && $spieler_2_id == 0) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n SET nachname = '$spieler_2_nachname',"
|
|
. "\n vorname = '$spieler_2_vorname',"
|
|
. "\n vereinsname = '$spieler_2_verein'"
|
|
. "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($rows[1]->spieler_id == 0 && $spieler_2_id != 0) {
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n WHERE turniermeldung_spieler_name_id = " . $rows[1]->turniermeldung_spieler_name_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($rows[1]->spieler_id != 0 && $spieler_2_id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES (" . $rows[1]->turniermeldung_spieler_id . ", '$spieler_2_nachname', '$spieler_2_vorname', '$spieler_2_verein');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler"
|
|
. "\n SET spieler_id = " . ($spieler_2_id != 0 ? "'$spieler_2_id'" : "NULL")
|
|
. "\n WHERE turniermeldung_spieler_id = " . $rows[1]->turniermeldung_spieler_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
meldungsgruppe_verknuepfen($id, $rundenstufen, $platzierungen);
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
}
|
|
ranglisteAktualisieren(0, $turnierDisziplinId);
|
|
einstufungAktualisieren();
|
|
|
|
if (!$weitere)
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#mid' . $id);
|
|
else
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldung_edit&turnierdisziplinid=' . $turnierDisziplinId . '&id=' . $id . '&weitere=1');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTurnierdisziplinMeldung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
// Sicherstellen, dass Meldung zur Turnierdisziplin und damit zum Turnier gehört
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
|
|
meldungssgruppe_entfernen($id);
|
|
|
|
ranglisteAktualisieren(0, $turnierDisziplinId);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
function adminVerknuepfenTurnierdisziplinMeldungForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
|
|
$query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, typ, turnier_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
$disziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$meldungen = array();
|
|
foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) {
|
|
$query = "SELECT *"
|
|
. ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS name1"
|
|
. ", (SELECT CONCAT_WS(', ', #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_turniermeldung_spieler_name.vorname) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS name2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS verknuepft1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), 0, 1) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS verknuepft2"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS vereinsname1"
|
|
. ", (SELECT IF(ISNULL(#__sportsmanager_turniermeldung_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.vereinsname, (SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten LIMIT 1)) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_spieler USING (spieler_id) LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS vereinsname2"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '$rundenstufe'"
|
|
. "\n ORDER BY platz, name1, name2";
|
|
$meldungen[$rundenstufe] = loadObjectList($db, $query);
|
|
}
|
|
HTML_sportsmanager_admin::adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen);
|
|
}
|
|
|
|
#[NoReturn] function adminVerknuepfenTurnierdisziplinMeldung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$ids = array();
|
|
foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe)
|
|
$ids[$rundenstufe] = $jInput->get('ids' . $rundenstufe, array(), 'ARRAY');
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
if ($turnierDisziplinId == 0) die("Missing id!");
|
|
$rundenstufen = $jInput->get('rundenstufen', array(), 'ARRAY');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zu Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1) die("Wrong id!");
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($rows[0]->turnier_id))
|
|
keinZugriff();
|
|
|
|
foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) {
|
|
foreach ($ids[$rundenstufe] as $meldung_id) {
|
|
// Sicherstellen, dass Meldung zu Turnierdisziplin und damit zu Turnier gehört
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $meldung_id AND turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
|
|
meldungsgruppe_erweitern($meldung_id, $rundenstufen);
|
|
}
|
|
}
|
|
|
|
ranglisteAktualisieren(0, $turnierDisziplinId);
|
|
einstufungAktualisieren();
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
function meldungsgruppe_erweitern($quelle_turniermeldung_id, $rundenstufen): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turniermeldung_id = $quelle_turniermeldung_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$quelle_meldung = $rows[0];
|
|
$meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id;
|
|
|
|
if ($quelle_meldung->meldungsgruppe_id != null) {
|
|
$query = "SELECT DISTINCT rundenstufe FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE meldungsgruppe_id = $meldungsgruppe_id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
if (!in_array($row->rundenstufe, $rundenstufen))
|
|
$rundenstufen[] = $row->rundenstufe;
|
|
}
|
|
} else {
|
|
if (!in_array($quelle_meldung->rundenstufe, $rundenstufen))
|
|
$rundenstufen[] = $quelle_meldung->rundenstufe;
|
|
}
|
|
|
|
meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, null);
|
|
}
|
|
|
|
function meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, $platzierungen): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turniermeldung_id = $quelle_turniermeldung_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$quelle_meldung = $rows[0];
|
|
$meldungsgruppe_id = $quelle_meldung->meldungsgruppe_id != null ? $quelle_meldung->meldungsgruppe_id : $quelle_turniermeldung_id;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $quelle_turniermeldung_id ORDER BY turniermeldung_spieler_id";
|
|
$quelle_meldung_spieler = loadObjectList($db, $query);
|
|
if ($quelle_meldung->meldungsgruppe_id == null && count($rundenstufen) > 1) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung"
|
|
. "\n SET meldungsgruppe_id = '$meldungsgruppe_id'"
|
|
. "\n WHERE turniermeldung_id = $quelle_turniermeldung_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE meldungsgruppe_id = '$meldungsgruppe_id' AND turnierdisziplin_id = '$quelle_meldung->turnierdisziplin_id' AND rundenstufe = '$rundenstufe'";
|
|
$rows = loadObjectList($db, $query);
|
|
if (empty($rundenstufen) || !in_array($rundenstufe, $rundenstufen)) {
|
|
if (count($rows) == 0)
|
|
continue;
|
|
$ziel_meldung = $rows[0];
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $ziel_meldung->turniermeldung_id OR gast_meldung_id = $ziel_meldung->turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $ziel_meldung->turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($quelle_meldung->rundenstufe == $rundenstufe) {
|
|
continue;
|
|
} else if (count($rows) == 0) {
|
|
$platz = (empty($platzierungen) || !isset($platzierungen[$rundenstufe])) ? 0 : $platzierungen[$rundenstufe];
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, meldungsgruppe_id, rundenstufe, platz)"
|
|
. "\n VALUES ('$quelle_meldung->turnierdisziplin_id', " . (count($rundenstufen) > 1 ? "'$meldungsgruppe_id'" : "NULL") . ", '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$ziel_turniermeldung_id = $db->insertid();
|
|
|
|
for ($i = 0; $i < count($quelle_meldung_spieler); $i++) {
|
|
$row = $quelle_meldung_spieler[$i];
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)"
|
|
. "\n VALUES ('$ziel_turniermeldung_id', " . ($row->spieler_id != null ? "'$row->spieler_id'" : "NULL") . ");";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$turniermeldung_spieler_id = $db->insertid();
|
|
|
|
if ($row->spieler_id == null) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ($turniermeldung_spieler_id, '" . $db->escape($row->nachname) . "', '" . $db->escape($row->vorname) . "', '" . $db->escape($row->vereinsname) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$ziel_meldung = $rows[0];
|
|
if (!empty($platzierungen)) {
|
|
$platz = !isset($platzierungen[$rundenstufe]) ? 0 : $platzierungen[$rundenstufe];
|
|
$query = "UPDATE #__sportsmanager_turniermeldung"
|
|
. "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL")
|
|
. "\n WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $ziel_meldung->turniermeldung_id ORDER BY turniermeldung_spieler_id";
|
|
$ziel_meldung_spieler = loadObjectList($db, $query);
|
|
if (count($ziel_meldung_spieler) != count($quelle_meldung_spieler)) die("Wrong id!");
|
|
|
|
for ($i = 0; $i < count($quelle_meldung_spieler); $i++) {
|
|
$quelle_row = $quelle_meldung_spieler[$i];
|
|
$ziel_row = $ziel_meldung_spieler[$i];
|
|
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler"
|
|
. "\n SET spieler_id = " . ($quelle_row->spieler_id != null ? "'$quelle_row->spieler_id'" : "NULL")
|
|
. "\n WHERE turniermeldung_spieler_id = $ziel_row->turniermeldung_spieler_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($quelle_row->spieler_id == null && $ziel_row->spieler_id == null) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n SET nachname = '" . $db->escape($quelle_row->nachname) . "',"
|
|
. "\n vorname = '" . $db->escape($quelle_row->vorname) . "',"
|
|
. "\n vereinsname = '" . $db->escape($quelle_row->vereinsname) . "'"
|
|
. "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($quelle_row->spieler_id == null && $ziel_row->spieler_id != null) {
|
|
$query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name (turniermeldung_spieler_id, nachname, vorname, vereinsname)"
|
|
. "\n VALUES ($ziel_row->turniermeldung_spieler_id, '" . $db->escape($quelle_row->nachname) . "', '" . $db->escape($quelle_row->vorname) . "', '" . $db->escape($quelle_row->vereinsname) . "');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($quelle_row->spieler_id != null && $ziel_row->spieler_id == null) {
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung_spieler_name"
|
|
. "\n WHERE turniermeldung_spieler_name_id = $ziel_row->turniermeldung_spieler_name_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE meldungsgruppe_id = $meldungsgruppe_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n == 1) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung"
|
|
. "\n SET meldungsgruppe_id = NULL"
|
|
. "\n WHERE meldungsgruppe_id = $meldungsgruppe_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
function meldungssgruppe_entfernen($turniermeldung_id): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE turniermeldung_id = $turniermeldung_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) === 0) die("Wrong id!");
|
|
$meldung = $rows[0];
|
|
$meldungsgruppe_id = $meldung->meldungsgruppe_id != null ? $meldung->meldungsgruppe_id : $turniermeldung_id;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE heim_meldung_id = $turniermeldung_id OR gast_meldung_id = $turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE #__sportsmanager_turniermeldung_spieler_name FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id AND turniermeldung_id = $turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung_spieler WHERE turniermeldung_id = $turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turniermeldung_id = $turniermeldung_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_turniermeldung"
|
|
. "\n WHERE meldungsgruppe_id = $meldungsgruppe_id";
|
|
$n = loadResult($db, $query);
|
|
|
|
if ($n == 1) {
|
|
$query = "UPDATE #__sportsmanager_turniermeldung"
|
|
. "\n SET meldungsgruppe_id = NULL"
|
|
. "\n WHERE meldungsgruppe_id = $meldungsgruppe_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
function adminEditTurnierdisziplinRundenstufe(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff(true);
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
|
|
$query = "SELECT turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn, typ, turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnier_rundenstufe"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$rows = loadObjectList($db, $query);
|
|
$rundenstufen_details = count($rows) >= 1 ? $rows[0] : null;
|
|
|
|
HTML_sportsmanager_admin::adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTurnierdisziplinRundenstufe(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
$bezeichnung = $db->escape($jInput->get('bezeichnung', '', 'RAW'));
|
|
$typ = $jInput->get('typ', 0, 'INT');
|
|
$runden = $jInput->get('runden', 0, 'INT');
|
|
$tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT');
|
|
$saetze = $jInput->get('saetze', 0, 'INT');
|
|
$tore = $jInput->get('tore', 0, 'INT');
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zum Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_turnier_rundenstufe"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$rows = loadObjectList($db, $query);
|
|
$rundenstufen_details = count($rows) >= 1 ? $rows[0] : null;
|
|
|
|
if ($rundenstufen_details == null) {
|
|
$query = "INSERT #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . ","
|
|
. "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . ","
|
|
. "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . ","
|
|
. "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . ","
|
|
. "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . ","
|
|
. "\n spielfelder = null,"
|
|
. "\n turnierdisziplin_id = '$turnierDisziplinId',"
|
|
. "\n rundenstufe = '$rundenstufe'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_turnier_rundenstufe"
|
|
. "\n SET bezeichnung = '$bezeichnung',"
|
|
. "\n typ = " . ($typ != 0 ? "'$typ'" : "null") . ","
|
|
. "\n runden = " . ($runden != 0 ? "'$runden'" : "null") . ","
|
|
. "\n tabellenwertung = " . ($tabellenwertung != 0 ? "'$tabellenwertung'" : "null") . ","
|
|
. "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . ","
|
|
. "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . ","
|
|
. "\n spielfelder = null"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if (($rundenstufen_details->typ == null && $typ != 0) || ($rundenstufen_details->typ != null && $typ != 0 && $rundenstufen_details->typ != $typ)) {
|
|
$query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else if ($rundenstufen_details->saetze != null && $rundenstufen_details->saetze > $saetze) {
|
|
$query = "UPDATE #__sportsmanager_turnierspiel"
|
|
. "\n SET ergebnis_detailliert = null"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTurnierdisziplinRundenstufe(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator())
|
|
keinZugriff();
|
|
|
|
$turnierDisziplinId = $jInput->get('turnierdisziplinid', 0, 'INT');
|
|
$rundenstufe = $jInput->get('rundenstufe', 0, 'INT');
|
|
if ($rundenstufe != 10 && $rundenstufe != 1 && $rundenstufe != 2 && $rundenstufe != 3) die("Wrong id!");
|
|
|
|
// Sicherstellen, dass Turnierdisziplin zum Turnier gehört
|
|
$query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$turnierdisziplin = $rows[0];
|
|
|
|
if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id))
|
|
keinZugriff();
|
|
|
|
$query = "DELETE FROM #__sportsmanager_turnier_rundenstufe"
|
|
. "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId);
|
|
}
|
|
|
|
function adminSpielerExportBilderForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*"
|
|
. "\n FROM #__sportsmanager_veranstalter";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN");
|
|
$query .= "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielerExportBilder($veranstalter, $beschraenkter_zugriff);
|
|
}
|
|
|
|
#[NoReturn] function adminSpielerExportBilder(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
$ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
setMinMemoryLimit('256M');
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$filter = $jInput->get('filter', 0, 'INT');
|
|
$veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT');
|
|
if ($veranstalter_id != 0) {
|
|
$query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$veranstalter = $rows[0];
|
|
} else
|
|
$veranstalter = null;
|
|
|
|
if ($beschraenkter_zugriff == 1) {
|
|
$query = "SELECT DISTINCT veranstalter_id"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n WHERE veranstalter_id = $veranstalter_id" . " AND" . veranstalterFilter("veranstalter_id IN")
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
if (count($veranstalter) == 0)
|
|
keinZugriff();
|
|
}
|
|
|
|
$ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export';
|
|
if (!is_dir($ziel_bilder_pfad) && !Folder::create($ziel_bilder_pfad, 0777)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden.");
|
|
}
|
|
|
|
$alte_bilder = Folder::files($ziel_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden.rstellt werden.");
|
|
}
|
|
}
|
|
|
|
$query = "SELECT spieler_id, vorname, nachname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($veranstalter_id != 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n WHERE NOT ISNULL(aktueller_verein_id)";
|
|
if ($filter != 0)
|
|
$query .= " AND NOT bild_ausblenden";
|
|
$spieler = loadObjectList($db, $query);
|
|
foreach ($spieler as $s) {
|
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . $s->spieler_id . '.';
|
|
if (file_exists($pfad . 'png') && is_file($pfad . 'png'))
|
|
$ext = "png";
|
|
else if (file_exists($pfad . 'jpg') && is_file($pfad . 'jpg'))
|
|
$ext = "jpg";
|
|
else
|
|
continue;
|
|
|
|
if (!File::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Spieler ' . utf8_decode(bereinigterDateiname($s->nachname . ", " . $s->vorname . (!empty($s->spielernr) ? (" (" . $s->spielernr . ")") : "") . '.' . $ext)))) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Ein Bild (" . $s->spieler_id . ") konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
}
|
|
|
|
$zip_dateien = array();
|
|
$neue_bilder = Folder::files($ziel_bilder_pfad);
|
|
foreach ($neue_bilder as $fn) {
|
|
$data = file_get_contents($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
$zip_dateien[] = array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data);
|
|
}
|
|
$file = tempnam("tmp", "zip");
|
|
$zip = new Zip();
|
|
$zip->create($file, $zip_dateien);
|
|
|
|
foreach ($neue_bilder as $fn)
|
|
File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
|
|
$dateiname = "Spielerbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip";
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
header("Content-Type: application/zip");
|
|
header("Content-Length: " . filesize($file));
|
|
header("Content-Disposition: attachment; filename=\"" . $dateiname . "\"");
|
|
readfile($file);
|
|
unlink($file);
|
|
die();
|
|
}
|
|
|
|
function adminVereineExportBilderForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVereineExportBilder($veranstalter);
|
|
}
|
|
|
|
#[NoReturn] function adminVereineExportBilder(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_vereine');
|
|
}
|
|
|
|
setMinMemoryLimit('256M');
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT');
|
|
if ($veranstalter_id != 0) {
|
|
$query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$veranstalter = $rows[0];
|
|
} else
|
|
$veranstalter = null;
|
|
|
|
$ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export';
|
|
if (!is_dir($ziel_bilder_pfad) && !Folder::create($ziel_bilder_pfad, 0777)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden.");
|
|
}
|
|
|
|
$alte_bilder = Folder::files($ziel_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden.");
|
|
}
|
|
}
|
|
|
|
$query = "SELECT verein_id, vereinsname"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE NOT ausgetreten";
|
|
if ($veranstalter_id != 0)
|
|
$query .= " AND veranstalter_id = $veranstalter_id";
|
|
$vereine = loadObjectList($db, $query);
|
|
foreach ($vereine as $v) {
|
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine' . DIRECTORY_SEPARATOR . $v->verein_id . '.';
|
|
if (file_exists($pfad . 'png') && is_file($pfad . 'png'))
|
|
$ext = "png";
|
|
else if (file_exists($pfad . 'jpg') && is_file($pfad . 'jpg'))
|
|
$ext = "jpg";
|
|
else
|
|
continue;
|
|
|
|
if (!File::copy($pfad . $ext, $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export' . DIRECTORY_SEPARATOR . 'Verein ' . utf8_decode(bereinigterDateiname($v->vereinsname)) . '.' . $ext)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Ein Bild (" . $v->verein_id . ") konnte nicht an die Zielposition kopiert werden.");
|
|
}
|
|
}
|
|
|
|
$neue_bilder = Folder::files($ziel_bilder_pfad);
|
|
$zip_dateien = array();
|
|
foreach ($neue_bilder as $fn) {
|
|
$data = file_get_contents($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
$zip_dateien[] = array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data);
|
|
}
|
|
$file = tempnam("tmp", "zip");
|
|
$zip = new Zip();
|
|
$zip->create($file, $zip_dateien);
|
|
|
|
foreach ($neue_bilder as $fn)
|
|
File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
|
|
$dateiname = "Vereinsbilder" . ($veranstalter != null ? (" " . utf8_decode($veranstalter->veranstalterbezeichnung)) : "") . ".zip";
|
|
$dateiname = bereinigterDateiname($dateiname);
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
header("Content-Type: application/zip");
|
|
header("Content-Length: " . filesize($file));
|
|
header("Content-Disposition: attachment; filename=\"" . $dateiname . "\"");
|
|
readfile($file);
|
|
unlink($file);
|
|
die();
|
|
}
|
|
|
|
function adminSpielerImportBilderForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT DISTINCT veranstalter_id, #__sportsmanager_veranstalter.*"
|
|
. "\n FROM #__sportsmanager_veranstalter";
|
|
if ($beschraenkter_zugriff == 1)
|
|
$query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN");
|
|
$query .= "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminSpielerImportBilder($veranstalter, $beschraenkter_zugriff);
|
|
}
|
|
|
|
function adminSpielerImportBilder(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3";
|
|
|
|
if (benutzerZugriff("spieler_aendern"))
|
|
$beschraenkter_zugriff = 0;
|
|
else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten)
|
|
$beschraenkter_zugriff = 1;
|
|
else
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_spieler');
|
|
}
|
|
|
|
$veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT');
|
|
$bilder_beibehalten = $jInput->get('bilder_beibehalten', 0, 'INT');
|
|
|
|
if ($beschraenkter_zugriff == 1) {
|
|
$query = "SELECT DISTINCT veranstalter_id"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n WHERE veranstalter_id = $veranstalter_id" . " AND" . veranstalterFilter("veranstalter_id IN")
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
if (count($veranstalter) == 0)
|
|
keinZugriff();
|
|
}
|
|
|
|
$quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import';
|
|
if (!is_dir($quelle_bilder_pfad) && !Folder::create($quelle_bilder_pfad, 0777)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/import' existiert nicht.");
|
|
}
|
|
|
|
$alte_bilder = Folder::files($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!File::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden.");
|
|
}
|
|
}
|
|
$alte_bilder = Folder::folders($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!Folder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden.");
|
|
}
|
|
}
|
|
|
|
$zip = new Zip();
|
|
if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) {
|
|
redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (Z).");
|
|
}
|
|
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$anzahlSpieler = 0;
|
|
$ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler';
|
|
$neue_bilder_alle = Folder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$');
|
|
foreach ($neue_bilder_alle as $index => $bild) {
|
|
$ppos = strrpos($bild, ".");
|
|
if ($ppos === false)
|
|
continue;
|
|
$len = strlen($bild);
|
|
$ext = strtolower(substr($bild, $ppos + 1));
|
|
if ($ext != "jpg" && $ext != "png")
|
|
continue;
|
|
$lpos = strrpos($bild, "(");
|
|
$rpos = $lpos !== false ? strpos($bild, ")", $lpos + 1) : false;
|
|
$spielernr = "";
|
|
$name = "";
|
|
if ($lpos !== false && $rpos !== false && $rpos - $lpos > 2) {
|
|
$spielernr = substr($bild, $lpos + 1, $rpos - $lpos - 1);
|
|
} else if (str_contains($bild, ",")) {
|
|
$name = substr($bild, 0, $len - 4);
|
|
} else
|
|
$spielernr = substr($bild, 0, $len - 4);
|
|
|
|
if (!empty($spielernr)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($veranstalter_id != 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1)
|
|
continue;
|
|
$spieler_id = $rows[0]->spieler_id;
|
|
} else if (!empty($name)) {
|
|
// Spielernummern und -namen ermitteln
|
|
$query = "SELECT spieler_id"
|
|
. "\n FROM #__sportsmanager_spieler";
|
|
if ($veranstalter_id != 0)
|
|
$query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND veranstalter_id = $veranstalter_id GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)";
|
|
$query .= "\n WHERE NOT ISNULL(aktueller_verein_id) AND STRCMP(CONCAT_WS(', ', nachname, vorname), '" . $db->escape($name) . "') = 0"
|
|
. "\n LIMIT 2";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1)
|
|
continue;
|
|
$spieler_id = $rows[0]->spieler_id;
|
|
} else
|
|
continue;
|
|
|
|
if ($bilder_beibehalten) {
|
|
$ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.';
|
|
if (file_exists($ziel_pfad . 'jpg') && is_file($ziel_pfad . 'jpg') || file_exists($ziel_pfad . 'png') && is_file($ziel_pfad . 'png'))
|
|
continue;
|
|
}
|
|
|
|
$quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild;
|
|
$ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.' . $ext;
|
|
if (!files_identical($quelle_pfad, $ziel_pfad)) {
|
|
bildLoeschen("spieler", $spieler_id);
|
|
if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 180, 240, 1))
|
|
continue;
|
|
}
|
|
$anzahlSpieler++;
|
|
unset($neue_bilder_alle[$index]);
|
|
}
|
|
|
|
$alte_bilder = Folder::files($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn)
|
|
File::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
$alte_bilder = Folder::folders($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn)
|
|
Folder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
|
|
sort($neue_bilder_alle);
|
|
|
|
HTML_sportsmanager_admin::adminSpielerImportBilderBericht($anzahlSpieler, $neue_bilder_alle);
|
|
}
|
|
|
|
function adminVereineImportBilderForm(): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_veranstalter"
|
|
. "\n ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminVereineImportBilder($veranstalter);
|
|
}
|
|
|
|
function adminVereineImportBilder(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("vereine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_vereine');
|
|
}
|
|
|
|
$veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT');
|
|
$bilder_beibehalten = $jInput->get('bilder_beibehalten', 0, 'INT');
|
|
|
|
$quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import';
|
|
if (!is_dir($quelle_bilder_pfad) && !Folder::create($quelle_bilder_pfad, 0777)) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Der Ordner 'images/sportsmanager/import' existiert nicht.");
|
|
}
|
|
|
|
$alte_bilder = Folder::files($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!File::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden.");
|
|
}
|
|
}
|
|
$alte_bilder = Folder::folders($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn) {
|
|
if (!Folder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden.");
|
|
}
|
|
}
|
|
|
|
$zip = new Zip();
|
|
if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Die ZIP-Datei kann nicht geöffnet werden (Z).");
|
|
}
|
|
|
|
if (!ini_get('safe_mode'))
|
|
set_time_limit(300);
|
|
|
|
$anzahlVereine = 0;
|
|
$ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine';
|
|
$neue_bilder_alle = Folder::files($quelle_bilder_pfad, '(?i)(\.jpg|\.png)$');
|
|
foreach ($neue_bilder_alle as $index => $bild) {
|
|
$ppos = strrpos($bild, ".");
|
|
if ($ppos === false)
|
|
continue;
|
|
$len = strlen($bild);
|
|
$ext = strtolower(substr($bild, $ppos + 1));
|
|
if ($ext != "jpg" && $ext != "png")
|
|
continue;
|
|
if (!str_starts_with($bild, "Verein "))
|
|
continue;
|
|
$name = substr($bild, 7, $len - 11);
|
|
if (empty($name))
|
|
continue;
|
|
|
|
$query = "SELECT verein_id"
|
|
. "\n FROM #__sportsmanager_verein"
|
|
. "\n WHERE NOT ausgetreten AND STRCMP(vereinsname, '" . $db->escape($name) . "') = 0";
|
|
if ($veranstalter_id != 0)
|
|
$query .= " AND veranstalter_id = $veranstalter_id";
|
|
$query .= "\n LIMIT 2";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) != 1)
|
|
continue;
|
|
$verein_id = $rows[0]->verein_id;
|
|
|
|
if ($bilder_beibehalten) {
|
|
$ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.';
|
|
if (file_exists($ziel_pfad . 'jpg') && is_file($ziel_pfad . 'jpg') || file_exists($ziel_pfad . 'png') && is_file($ziel_pfad . 'png'))
|
|
continue;
|
|
}
|
|
|
|
$quelle_pfad = $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $bild;
|
|
$ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.' . $ext;
|
|
if (!files_identical($quelle_pfad, $ziel_pfad)) {
|
|
bildLoeschen("vereine", $verein_id);
|
|
if (!bildKopierenAngepasst($quelle_pfad, $ziel_pfad, 240, 240, 0))
|
|
continue;
|
|
}
|
|
$anzahlVereine++;
|
|
unset($neue_bilder_alle[$index]);
|
|
}
|
|
|
|
$alte_bilder = Folder::files($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn)
|
|
File::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
$alte_bilder = Folder::folders($quelle_bilder_pfad);
|
|
foreach ($alte_bilder as $fn)
|
|
Folder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
|
|
|
sort($neue_bilder_alle);
|
|
|
|
HTML_sportsmanager_admin::adminVereineImportBilderBericht($anzahlVereine, $neue_bilder_alle);
|
|
}
|
|
|
|
function adminTermine($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (benutzerZugriff("termine_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (einstellungswert("termine_beantragen") == "1" && !Factory::getContainer()->get(SiteApplication::class)->getIdentity()->guest && !isExternalDatabase())
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
$filter_jahr = $jInput->get('filter_jahr', 0, 'INT');
|
|
if (empty($filter_jahr))
|
|
$filter_jahr = date('Y');
|
|
$filter_veranstaltung = $jInput->get('filter_veranstaltung', '', 'RAW');
|
|
$filter_zusatz = $jInput->get('filter_zusatz', '', 'RAW');
|
|
$filter_land = $jInput->get('filter_land', '', 'RAW');
|
|
$filter_ort = $jInput->get('filter_ort', '', 'RAW');
|
|
|
|
$query = "SELECT DISTINCT YEAR(erster_tag) AS jahr"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n ORDER BY erster_tag DESC";
|
|
$jahre = loadObjectList($db, $query);
|
|
$jahr_gefunden = false;
|
|
foreach ($jahre as $jahr) {
|
|
if ($jahr->jahr == $filter_jahr) {
|
|
$jahr_gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!$jahr_gefunden && !empty($jahre))
|
|
$filter_jahr = $jahre[0]->jahr;
|
|
|
|
$query = "SELECT *, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)";
|
|
if (!empty($filter_veranstaltung))
|
|
$query .= " AND bezeichnung = '" . $db->escape($filter_veranstaltung) . "'";
|
|
if (!empty($filter_zusatz))
|
|
$query .= " AND EXISTS(SELECT * FROM #__sportsmanager_termin_zusatz WHERE termin_id = #__sportsmanager_termin.termin_id AND zusatz = '" . $db->escape($filter_zusatz) . "')";
|
|
if (!empty($filter_land))
|
|
$query .= " AND land = '" . $db->escape($filter_land) . "'";
|
|
if (!empty($filter_ort))
|
|
$query .= " AND ort = '" . $db->escape($filter_ort) . "'";
|
|
$query .= "\n GROUP BY termin_id"
|
|
. "\n ORDER BY erster_tag, bezeichnung";
|
|
$termine = loadObjectList($db, $query);
|
|
$query = "SELECT termin_id, termin_symbol_id"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"
|
|
. "\n ORDER BY termin_symbolanzeige_id";
|
|
$terminsymbole = loadObjectList($db, $query);
|
|
$termineSymbole = array();
|
|
foreach ($terminsymbole as $termin) {
|
|
$termin_id = $termin->termin_id;
|
|
$termin_symbol_id = $termin->termin_symbol_id;
|
|
if (!isset($termineSymbole[$termin_id]))
|
|
$termineSymbole[$termin_id] = array();
|
|
$termineSymbole[$termin_id][] = $termin_symbol_id;
|
|
}
|
|
|
|
$query = "SELECT COUNT(*)"
|
|
. "\n FROM #__sportsmanager_termin_aktion"
|
|
. "\n WHERE status = 2";
|
|
$anzahl_beantragte_termine = loadResult($db, $query);
|
|
|
|
$query = "SELECT bezeichnung"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n INNER JOIN #__sportsmanager_termin_bezeichnung USING (bezeichnung)"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"
|
|
. "\n GROUP BY bezeichnung"
|
|
. "\n ORDER BY bezeichnung";
|
|
$veranstaltungen = loadObjectList($db, $query);
|
|
$query = "SELECT bezeichnungszusatz, titel"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n INNER JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n INNER JOIN #__sportsmanager_termin_bezeichnungszusatz ON bezeichnungszusatz = zusatz"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"
|
|
. "\n GROUP BY bezeichnungszusatz"
|
|
. "\n ORDER BY IF(titel = '', bezeichnungszusatz, titel)";
|
|
$zusaetze = loadObjectList($db, $query);
|
|
$query = "SELECT land"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1) AND land <> ''"
|
|
. "\n GROUP BY land"
|
|
. "\n ORDER BY land";
|
|
$laender = loadObjectList($db, $query);
|
|
$query = "SELECT ort"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1) AND ort <> ''"
|
|
. "\n GROUP BY ort"
|
|
. "\n ORDER BY ort";
|
|
$orte = loadObjectList($db, $query);
|
|
if (isJson()) {
|
|
$jsonexport = array_map(
|
|
function ($termin) {
|
|
return [
|
|
"bestaetigt" => $termin->bestaetigt,
|
|
"erster_tag" => $termin->erster_tag,
|
|
"letzter_tag" => $termin->letzter_tag,
|
|
"bezeichnung" => $termin->bezeichnung,
|
|
"ort" => $termin->ort,
|
|
"land" => $termin->land,
|
|
"zusaetze" => $termin->zusaetze,
|
|
"url" => $termin->url,
|
|
"ergebnisse_url" => $termin->ergebnisse_url,
|
|
"email" => $termin->email,
|
|
];
|
|
}, $termine);
|
|
JSON_sportsmanager::JSON($jsonexport);
|
|
} else {
|
|
HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $filter_ort, $veranstaltungen, $zusaetze, $laender, $orte, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase());
|
|
|
|
if (!$admin_uebersicht) {
|
|
administrationFooter();
|
|
}
|
|
}
|
|
}
|
|
|
|
function adminEditTermin($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (benutzerZugriff("termine_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (einstellungswert("termine_beantragen") == "1" && !Factory::getContainer()->get(SiteApplication::class)->getIdentity()->guest && !isExternalDatabase())
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
if ($zugriffsebene == 0)
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$uebersicht = $jInput->get('uebersicht', 0, 'INT');
|
|
$ueberarbeiten = $jInput->get('ueberarbeiten', 0, 'INT');
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$termin = null;
|
|
$terminsymbolanzeige = null;
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Der bisherige Termin existiert nicht mehr.");
|
|
}
|
|
$termin = $rows[0];
|
|
|
|
$query = "SELECT termin_symbol_id"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n INNER JOIN #__sportsmanager_termin_symbolanzeige USING (termin_id)"
|
|
. "\n WHERE termin_id = $termin->termin_id"
|
|
. "\n ORDER BY termin_symbolanzeige_id";
|
|
$terminsymbolanzeige = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT termin_symbol_id, symboltitel, status"
|
|
. "\n FROM #__sportsmanager_termin_symbol"
|
|
. "\n ORDER BY status DESC, symboltitel";
|
|
$terminsymbole = loadObjectList($db, $query);
|
|
$benachrichtigung_email = "";
|
|
if (empty($id)) {
|
|
$aktion_user = Factory::getContainer()->get(SiteApplication::class)->getIdentity();
|
|
if (!empty($aktion_user->id) && !empty($aktion_user->email)) {
|
|
$benachrichtigung_email = $aktion_user->email;
|
|
}
|
|
} else {
|
|
$benachrichtigung_email = $termin->benachrichtigung_email;
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnung ORDER BY bezeichnung";
|
|
$bezeichnungen = loadObjectList($db, $query);
|
|
if (!empty($id)) {
|
|
$bezeichnung_vorauswahl = null;
|
|
} else {
|
|
// Häufigste Bezeichnung suchen
|
|
$query = "SELECT bezeichnung"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE DATEDIFF(erster_tag, CURDATE()) >= -365 AND status = 0 AND (typ = 0 OR typ = 1)"
|
|
. "\n GROUP BY bezeichnung"
|
|
. "\n ORDER BY COUNT(*) DESC"
|
|
. "\n LIMIT 1";
|
|
$rows = loadObjectList($db, $query);
|
|
$bezeichnung_vorauswahl = count($rows) > 0 ? $rows[0]->bezeichnung : null;
|
|
}
|
|
|
|
if (empty($id)) {
|
|
$zusaetze = null;
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_zusatz"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_bezeichnungszusatz ON zusatz = bezeichnungszusatz"
|
|
. "\n WHERE termin_id = $id AND ISNULL(termin_bezeichnungszusatz_id)"
|
|
. "\n ORDER BY zusatz";
|
|
$zusaetze = loadObjectList($db, $query);
|
|
}
|
|
|
|
if (empty($id)) {
|
|
$query = "SELECT *, NULL AS termin_zusatz_id"
|
|
. "\n FROM #__sportsmanager_termin_bezeichnungszusatz"
|
|
. "\n ORDER BY bezeichnungszusatz";
|
|
} else {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_bezeichnungszusatz"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz ON termin_id = $id AND bezeichnungszusatz = zusatz"
|
|
. "\n ORDER BY bezeichnungszusatz";
|
|
}
|
|
$bezeichnungszusaetze = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bundesland ORDER BY bundesland";
|
|
$bundeslaender = loadObjectList($db, $query);
|
|
$query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land";
|
|
$laender = loadObjectList($db, $query);
|
|
$query = "SELECT ort FROM #__sportsmanager_termin WHERE ort <> '' GROUP BY ort ORDER BY ort";
|
|
$orte = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $orte, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte);
|
|
}
|
|
|
|
function adminSaveTermin($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (benutzerZugriff("termine_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (einstellungswert("termine_beantragen") == "1" && !Factory::getContainer()->get(SiteApplication::class)->getIdentity()->guest && !isExternalDatabase())
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
if ($zugriffsebene == 0 || isExternalDatabase())
|
|
keinZugriff();
|
|
|
|
$uebersicht = $jInput->get('uebersicht', 0, 'INT');
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''));
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vorhandener_termin = !empty($id);
|
|
$erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT')));
|
|
$mehrtaegig = $jInput->get('mehrtaegig', 0, 'INT');
|
|
if (!$mehrtaegig)
|
|
$letzter_tag = $erster_tag;
|
|
else
|
|
$letzter_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('letzter_tag_jahr', 2000, 'INT'), $jInput->get('letzter_tag_monat', 1, 'INT'), $jInput->get('letzter_tag_tag', 1, 'INT')));
|
|
if (empty($erster_tag) || empty($letzter_tag)) die("Wrong date!");
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$bezeichnungszusaetze = $jInput->get('bezeichnungszusaetze', array(), 'ARRAY');
|
|
$bezeichnungszusatz_benutzerdefiniert = trim($jInput->get('bezeichnungszusatz_benutzerdefiniert', '', 'RAW'));
|
|
if (!empty($bezeichnungszusatz_benutzerdefiniert))
|
|
$bezeichnungszusaetze[] = $bezeichnungszusatz_benutzerdefiniert;
|
|
$ort = $db->escape(trim($jInput->get('ort', '', 'RAW')));
|
|
$land = $db->escape(trim($jInput->get('land', '', 'RAW')));
|
|
$beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW')));
|
|
$info = $jInput->get('info', 0, 'INT');
|
|
$url = $info == 0 ? $db->escape(trim($jInput->get('url', '', 'RAW'))) : '';
|
|
$email = $db->escape(trim($jInput->get('email', '', 'RAW')));
|
|
$ergebnisse_url = $db->escape(trim($jInput->get('ergebnisse_url', '', 'RAW')));
|
|
$bestaetigt = $jInput->get('bestaetigt', 0, 'INT');
|
|
$kommentar = $db->escape(trim($jInput->get('kommentar', '', 'RAW')));
|
|
$ueberarbeiten = $jInput->get('ueberarbeiten', 0, 'INT');
|
|
$ergebnisse_live = $jInput->get('ergebnisse_live', 0, 'INT');
|
|
$benachrichtigung_email = $db->escape(trim(str_replace(';', ',', $jInput->get('benachrichtigung_email', '', 'RAW'))));
|
|
|
|
// Sicherstellen, dass Überarbeitenaktionen nur durchgeführt werden wenn tatsächlich ein bestehender Termin dahinter steht und der Benutzer Moderator ist
|
|
if ($ueberarbeiten && (empty($id) || $zugriffsebene != 2))
|
|
die ("Wrong id");
|
|
|
|
$termin_bezug_id = 0;
|
|
$termin = null;
|
|
if (!empty($id)) {
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE termin_id = $id" . ($zugriffsebene != 2 ? " AND status = 0" : " AND (status = 0 OR status = 2)") . " AND (typ = 0 OR typ = 1)";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf'), "Der bisherige Termin existiert nicht mehr.");
|
|
}
|
|
$termin = $rows[0];
|
|
$termin_bezug_id = $termin->termin_bezug_id;
|
|
}
|
|
|
|
$query = "INSERT #__sportsmanager_termin"
|
|
. "\n SET termin_bezug_id = '$termin_bezug_id',"
|
|
. "\n erster_tag = '$erster_tag',"
|
|
. "\n letzter_tag = '$letzter_tag',"
|
|
. "\n bezeichnung = '$bezeichnung',"
|
|
. "\n beschreibung = '$beschreibung',"
|
|
. "\n ort = '$ort',"
|
|
. "\n land = '$land',"
|
|
. "\n url = '$url',"
|
|
. "\n email = '$email',"
|
|
. "\n ergebnisse_url = '$ergebnisse_url',"
|
|
. "\n ergebnisse_live = '$ergebnisse_live',"
|
|
. "\n bestaetigt = '$bestaetigt'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$neuer_termin_id = $db->insertid();
|
|
|
|
foreach ($bezeichnungszusaetze as $bezeichnungszusatz) {
|
|
$query = "INSERT #__sportsmanager_termin_zusatz"
|
|
. "\n SET termin_id = $neuer_termin_id,"
|
|
. "\n zusatz = '" . $db->escape($bezeichnungszusatz) . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
for ($i = 0; $i <= 5; $i++) {
|
|
|
|
$input = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
$symbol_id = $input->getInt('symbol_id_' . $i, 0);
|
|
if ($symbol_id != 0) {
|
|
$query = "INSERT #__sportsmanager_termin_symbolanzeige"
|
|
. "\n SET termin_id = $neuer_termin_id,"
|
|
. "\n termin_symbol_id = $symbol_id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!$vorhandener_termin) {
|
|
$query = "UPDATE #__sportsmanager_termin"
|
|
. "\n SET termin_bezug_id = $neuer_termin_id"
|
|
. "\n WHERE termin_id = $neuer_termin_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine';
|
|
$dokument_kopieren_gescheitert = 0;
|
|
$info_dokument = $_FILES['info_dokument'];
|
|
if ($info == 1 && !empty($id)) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $id . ' ');
|
|
if (empty($dokumente)) {
|
|
$dokument_kopieren_gescheitert = 2;
|
|
} else {
|
|
$info_dokument_dateiname = substr($dokumente[0], strlen((string)$id) + 1);
|
|
$quelle_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $dokumente[0];
|
|
$ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname;
|
|
if (!File::copy($quelle_pfad, $ziel_pfad))
|
|
$dokument_kopieren_gescheitert = 2;
|
|
}
|
|
} else if ($info == 2 && isset($info_dokument) && !$info_dokument['error']) {
|
|
$info_dokument_dateiname = File::makeSafe($info_dokument["name"]);
|
|
if ($info_dokument["size"] > 8388608) {
|
|
$dokument_kopieren_gescheitert = 1;
|
|
} else {
|
|
$ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname;
|
|
if (!File::upload($info_dokument["tmp_name"], $ziel_pfad))
|
|
$dokument_kopieren_gescheitert = 2;
|
|
}
|
|
}
|
|
|
|
if (!empty($dokument_kopieren_gescheitert)) {
|
|
$query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_id = $neuer_termin_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_zusatz WHERE termin_id = $neuer_termin_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin WHERE termin_id = $neuer_termin_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der Termin wurde nicht erstellt weil der Anhang " . ($dokument_kopieren_gescheitert == 1 ? "zu groß ist." : "nicht kopiert werden konnte."));
|
|
}
|
|
|
|
if ($vorhandener_termin && $zugriffsebene != 1) {
|
|
$query = "SELECT DISTINCT termin_id"
|
|
. "\n FROM #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $row->termin_id . ' ');
|
|
foreach ($dokumente as $dokument)
|
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument);
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n SET status = 1"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND " . ($ueberarbeiten ? "(status = 0 OR termin_id = $id)" : "status = 0") . ";";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
|
|
$query = "INSERT #__sportsmanager_termin_aktion"
|
|
. "\n SET termin_id = $neuer_termin_id,"
|
|
. "\n typ = '" . ($vorhandener_termin ? 1 : 0) . "'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen
|
|
. "\n benachrichtigung_email = '$benachrichtigung_email',"
|
|
. "\n aktion_user_id = '" . ($ueberarbeiten ? $termin->aktion_user_id : $user_id) . "',"
|
|
. "\n aktion_zeitpunkt = " . ($ueberarbeiten ? ("'$termin->aktion_zeitpunkt'") : "NOW()") . ","
|
|
. "\n aktion_kommentar = '" . ($ueberarbeiten ? $db->escape($termin->aktion_kommentar) : $kommentar) . "',"
|
|
. "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . ","
|
|
. "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . ","
|
|
. "\n moderation_kommentar = '" . ($ueberarbeiten ? $kommentar : "") . "',"
|
|
. "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$termin_aktion_id = $db->insertid();
|
|
|
|
termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten);
|
|
|
|
if ($zugriffsebene == 1) {
|
|
HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht);
|
|
} else {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''));
|
|
}
|
|
}
|
|
|
|
function adminRemoveTerminForm($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (benutzerZugriff("termine_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (einstellungswert("termine_beantragen") == "1" && !Factory::getContainer()->get(SiteApplication::class)->getIdentity()->guest && !isExternalDatabase())
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
if ($zugriffsebene == 0 || isExternalDatabase())
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1)"
|
|
. "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr.");
|
|
}
|
|
$terminaktion = $rows[0];
|
|
|
|
HTML_sportsmanager_admin::adminRemoveTermin($terminaktion, $nur_beantragte, $zugriffsebene, $admin_uebersicht);
|
|
}
|
|
|
|
function adminCheckRelativerPfad($Url)
|
|
{
|
|
if (str_starts_with($Url, "index.php")) {
|
|
$Scriptname = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
|
|
$Url = str_replace('index.php', $Scriptname, $Url);
|
|
}
|
|
return $Url;
|
|
}
|
|
|
|
function adminRemoveTermin($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (benutzerZugriff("termine_aendern"))
|
|
$zugriffsebene = 2;
|
|
else if (einstellungswert("termine_beantragen") == "1" && !Factory::getContainer()->get(SiteApplication::class)->getIdentity()->guest && !isExternalDatabase())
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
if ($zugriffsebene == 0 || isExternalDatabase())
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$kommentar = $db->escape(trim($jInput->get('kommentar', '', 'RAW')));
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n WHERE termin_id = $id AND status = 0 AND (typ = 0 OR typ = 1);";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr.");
|
|
}
|
|
$termin = $rows[0];
|
|
$termin_bezug_id = $termin->termin_bezug_id;
|
|
|
|
if ($zugriffsebene != 1) {
|
|
$query = "SELECT DISTINCT termin_id"
|
|
. "\n FROM #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;";
|
|
$rows = loadObjectList($db, $query);
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine';
|
|
foreach ($rows as $row) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $row->termin_id . ' ');
|
|
foreach ($dokumente as $dokument)
|
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument);
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n SET status = 1"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$benachrichtigung_email = $db->escape(trim(str_replace(';', ',', $jInput->get('benachrichtigung_email', '', 'RAW'))));
|
|
|
|
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
|
|
$query = "INSERT #__sportsmanager_termin_aktion"
|
|
. "\n SET termin_id = $id,"
|
|
. "\n typ = '2'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen
|
|
. "\n benachrichtigung_email = '$benachrichtigung_email',"
|
|
. "\n aktion_user_id = '$user_id',"
|
|
. "\n aktion_zeitpunkt = NOW(),"
|
|
. "\n aktion_kommentar = '$kommentar',"
|
|
. "\n moderation_user_id = " . ($zugriffsebene != 1 ? "'$user_id'" : "NULL") . ","
|
|
. "\n moderation_zeitpunkt = " . ($zugriffsebene != 1 ? "NOW()" : "NULL") . ","
|
|
. "\n moderation_kommentar = '',"
|
|
. "\n status = " . ($zugriffsebene != 1 ? "0" : "2"); // 0: Akzeptiert, 1: Archiviert, 2: Beantragt, 3: Abgelehnt
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$termin_aktion_id = $db->insertid();
|
|
|
|
termineEmailBenachrichtigung($termin_aktion_id);
|
|
|
|
if ($zugriffsebene == 1) {
|
|
HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht);
|
|
} else {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine');
|
|
}
|
|
}
|
|
|
|
// $aktion = 0: Beantragt, 1: ...
|
|
function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false): bool
|
|
{
|
|
$db = getDatabase();
|
|
$app = Factory::getContainer()->get(SiteApplication::class);
|
|
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id"
|
|
. "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id"
|
|
. "\n WHERE termin_aktion_id = $termin_aktion_id"
|
|
. "\n GROUP BY #__sportsmanager_termin.termin_id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) return false;
|
|
$terminaktion = $rows[0];
|
|
|
|
$benachrichtigung_moderatoren_informieren = array();
|
|
$benachrichtigung_moderatoren_aendern = array();
|
|
$query = "SELECT DISTINCT email, IF(EXISTS(SELECT * FROM #__sportsmanager_moderator_zugriff AS m2 WHERE zugriff = 'termine_aendern' AND m2.moderator_id = #__sportsmanager_moderator_zugriff.moderator_id), 1, 0) AS termine_aendern"
|
|
. "\n FROM #__sportsmanager_moderator"
|
|
. "\n INNER JOIN #__sportsmanager_moderator_zugriff USING (moderator_id)"
|
|
. "\n INNER JOIN #__users ON moderator_user_id = id"
|
|
. "\n WHERE zugriff = 'termine_benachrichtigung'";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
if ($row->termine_aendern)
|
|
$benachrichtigung_moderatoren_aendern[] = $row->email;
|
|
else
|
|
$benachrichtigung_moderatoren_informieren[] = $row->email;
|
|
}
|
|
|
|
$benachrichtigung_emails = explode(",", $terminaktion->benachrichtigung_email);
|
|
|
|
$termin_beschreibung = "<tr>\r\n"
|
|
. "<td nowrap>Datum:</td>\r\n"
|
|
. "<td nowrap>" . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true) . ($terminaktion->bestaetigt ? "" : " (in Planung)") . "</td>\r\n"
|
|
. "</tr>\r\n"
|
|
. "<tr>\r\n"
|
|
. "<td nowrap>Veranstaltung:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($terminaktion->bezeichnung) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
if (!empty($terminaktion->zusaetze)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>Zusätze:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($terminaktion->zusaetze) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($terminaktion->ort)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>Ort:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($terminaktion->ort) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($terminaktion->land)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>Land:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($terminaktion->land) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($terminaktion->beschreibung)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>Beschreibung:</td>\r\n"
|
|
. "<td>" . htmlentities_utf8($terminaktion->beschreibung) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
$info_dokument_dateiname = terminDokumentname($terminaktion->termin_id);
|
|
if ($info_dokument_dateiname !== false) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap style='vertical-align: top'>Weitere Informationen:</td>\r\n"
|
|
. "<td><a href=\"" . SportsManagerURL('&task=anhang_termin&id=' . $terminaktion->termin_id, -1) . "\" target=\"_blank\">" . htmlentities_utf8(NichtLeererString($info_dokument_dateiname)) . "</a></td>\r\n"
|
|
. "</tr>\r\n";
|
|
} else if (!empty($terminaktion->url)) {
|
|
$terminaktion->url = adminCheckRelativerPfad($terminaktion->url);
|
|
if (!str_contains($terminaktion->url, "://")) {
|
|
$termin_url_anzeige = $terminaktion->url;
|
|
$termin_url = "https://" . $terminaktion->url;
|
|
} else {
|
|
$termin_url_anzeige = str_starts_with($terminaktion->url, "https://") ? substr($terminaktion->url, 8) : $terminaktion->url;
|
|
$termin_url = $terminaktion->url;
|
|
}
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap style='vertical-align: top'>Weitere Informationen:</td>\r\n"
|
|
. "<td><a href=\"" . htmlentities_utf8($termin_url) . "\" target=\"_blank\">" . htmlentities_utf8($termin_url_anzeige) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($terminaktion->email)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>E-Mail öffentlich:</td>\r\n"
|
|
. "<td><a href=\"mailto:" . htmlentities_utf8($terminaktion->email) . "\">" . htmlentities_utf8($terminaktion->email) . "</a></td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($benachrichtigung_emails)) {
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>E-Mail bei Änderungen:</td>\r\n"
|
|
. "<td>";
|
|
foreach ($benachrichtigung_emails as $index => $email) {
|
|
$email_trimmed = trim($email);
|
|
$termin_beschreibung .= ($index > 0 ? ", " : "") . "<a href=\"mailto:" . htmlentities_utf8($email_trimmed) . "\">" . htmlentities_utf8($email_trimmed) . "</a>";
|
|
}
|
|
$termin_beschreibung .= "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
if (!empty($terminaktion->ergebnisse_url)) {
|
|
$terminaktion->ergebnisse_url = adminCheckRelativerPfad($terminaktion->ergebnisse_url);
|
|
if (!str_contains($terminaktion->ergebnisse_url, "://")) {
|
|
$termin_url_anzeige = $terminaktion->ergebnisse_url;
|
|
$termin_url = "https://" . $terminaktion->ergebnisse_url;
|
|
} else {
|
|
$termin_url_anzeige = str_starts_with($terminaktion->ergebnisse_url, "https://") ? substr($terminaktion->ergebnisse_url, 8) : $terminaktion->ergebnisse_url;
|
|
$termin_url = $terminaktion->ergebnisse_url;
|
|
}
|
|
$termin_beschreibung .= "<tr>\r\n"
|
|
. "<td nowrap>" . ($terminaktion->ergebnisse_live ? "Live-" : "") . "Ergebnisse:</td>\r\n"
|
|
. "<td><a href=\"" . htmlentities_utf8($termin_url) . "\" target=\"_blank\">" . htmlentities_utf8($termin_url_anzeige) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
|
|
$status = array(0 => "Akzeptiert", 1 => "Archiviert", 2 => "Beantragt", 3 => "Abgelehnt");
|
|
$aktion = array(0 => "Hinzufügen", 1 => "Ändern", 2 => "Entfernen");
|
|
if (empty($terminaktion->aktion_user_email))
|
|
$aktion_user = htmlentities_utf8($terminaktion->aktion_user_name);
|
|
else
|
|
$aktion_user = "<a href=\"mailto:" . htmlentities_utf8($terminaktion->aktion_user_email) . "\">" . htmlentities_utf8($terminaktion->aktion_user_name) . "</a>";
|
|
if (empty($terminaktion->moderation_zeitpunkt))
|
|
$moderation_user = "";
|
|
else if (empty($terminaktion->aktion_user_email))
|
|
$moderation_user = htmlentities_utf8($terminaktion->moderation_user_name);
|
|
else
|
|
$moderation_user = "<a href=\"mailto:" . htmlentities_utf8($terminaktion->moderation_user_email) . "\">" . htmlentities_utf8($terminaktion->moderation_user_name) . "</a>";
|
|
$termin_moderationsstatus = "<tr>\r\n"
|
|
. "<td nowrap colspan=\"2\"> </td>\r\n"
|
|
. "</tr>\r\n"
|
|
. "<tr>\r\n"
|
|
. "<td nowrap>Status:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($status[$terminaktion->status]) . "</td>\r\n"
|
|
. "</tr>\r\n"
|
|
. "<tr>\r\n"
|
|
. "<td nowrap>Aktionstyp:</td>\r\n"
|
|
. "<td nowrap>" . htmlentities_utf8($aktion[$terminaktion->typ]) . "</td>\r\n"
|
|
. "</tr>\r\n"
|
|
. "<tr>\r\n"
|
|
. "<td nowrap>Erstellung:</td>\r\n"
|
|
. "<td nowrap>" . FormatiertesDatum($terminaktion->aktion_zeitpunkt, true, false) . " von " . $aktion_user . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
if (!empty($terminaktion->aktion_kommentar)) {
|
|
$termin_moderationsstatus .= "<tr>\r\n"
|
|
. "<td nowrap style='vertical-align: top'>Erstellerkommentar:</td>\r\n"
|
|
. "<td>" . nl2br(htmlentities_utf8($terminaktion->aktion_kommentar)) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
$termin_moderationsstatus .= "<tr>\r\n"
|
|
. "<td nowrap>Moderation:</td>\r\n"
|
|
. "<td nowrap>" . (empty($terminaktion->moderation_zeitpunkt) ? "Nicht erfolgt" : (FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . $moderation_user)) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
if (!empty($terminaktion->moderation_kommentar)) {
|
|
$termin_moderationsstatus .= "<tr>\r\n"
|
|
. "<td nowrap style='vertical-align: top'>Moderatorkommentar:</td>\r\n"
|
|
. "<td>" . nl2br(htmlentities_utf8($terminaktion->moderation_kommentar)) . "</td>\r\n"
|
|
. "</tr>\r\n";
|
|
}
|
|
|
|
$from = $app->getCfg('mailfrom');
|
|
$fromName = $app->getCfg('fromname');
|
|
if ($terminaktion->status == 2) {
|
|
$subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
|
|
$body = "<p>Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde beantragt und wird nun von den Moderatoren geprüft. Sobald der Termin bearbeitet wurde, wird eine E-Mail-Benachrichtigung verschickt.</p>";
|
|
} else {
|
|
$subject = "Termin " . $aktion[$terminaktion->typ] . " " . ($terminaktion->status == 0 ? "akzeptiert" : "abgelehnt") . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
|
|
$body = "<p>Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde " . ($terminaktion->status == 0 ? ($ueberarbeiten ? "in überarbeiteter Form akzeptiert" : "akzeptiert") : "abgelehnt") . ".</p>";
|
|
}
|
|
$body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n";
|
|
if(!empty($benachrichtigung_emails)) {
|
|
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
|
|
$mailer->setSender($from, $fromName);
|
|
$mailer->setSubject($subject);
|
|
$mailer->isHtml(true);
|
|
$mailer->setBody($body);
|
|
foreach ($benachrichtigung_emails as $email)
|
|
$mailer->addBcc($email);
|
|
$mailer->send();
|
|
}
|
|
|
|
$from = $app->getCfg('mailfrom');
|
|
$fromName = $app->getCfg('fromname');
|
|
if ($terminaktion->status == 2) {
|
|
$subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt von " . $terminaktion->aktion_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
|
|
$body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " beantragt:</p>\r\n";
|
|
} else if ($terminaktion->status == 0) {
|
|
$subject = "Termin " . $aktion[$terminaktion->typ] . " akzeptiert von " . $terminaktion->moderation_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
|
|
$body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " akzeptiert:</p>";
|
|
} else {
|
|
$subject = "Termin " . $aktion[$terminaktion->typ] . " abgelehnt von " . $terminaktion->moderation_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true);
|
|
$body = "<p>Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " abgelehnt:</p>";
|
|
}
|
|
$body .= "<table>\r\n" . $termin_beschreibung . $termin_moderationsstatus . "</table>\r\n";
|
|
if(!empty($benachrichtigung_moderatoren_informieren)) {
|
|
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
|
|
$mailer->setSender($from, $fromName);
|
|
$mailer->setSubject($subject);
|
|
$mailer->isHtml(true);
|
|
$mailer->setBody($body);
|
|
foreach ($benachrichtigung_moderatoren_informieren as $email)
|
|
$mailer->addBcc($email);
|
|
$mailer->send();
|
|
}
|
|
|
|
$body .= "<p>Bitte <a href=\"" . SportsManagerURL('&task=admin_termin_details&nur_beantragte=1&id=' . $terminaktion->termin_aktion_id, -1) . "\">hier</a> klicken, um den Termin zu moderieren.</p>\r\n";
|
|
if(!empty($benachrichtigung_moderatoren_aendern)) {
|
|
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
|
|
$mailer->setSender($from, $fromName);
|
|
$mailer->setSubject($subject);
|
|
$mailer->isHtml(true);
|
|
$mailer->setBody($body);
|
|
foreach ($benachrichtigung_moderatoren_aendern as $email)
|
|
$mailer->addBcc($email);
|
|
$mailer->send();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
#[NoReturn] function adminTerminModerieren($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern") || isExternalDatabase())
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
$uebersicht = $jInput->get('uebersicht', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''));
|
|
}
|
|
|
|
if ($jInput->get('ueberarbeiten', false, 'BOOL')) {
|
|
$termin_id = $jInput->get('termin_id', 0, 'INT');
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termin_edit&ueberarbeiten=1&id=' . $termin_id . ($nur_beantragte ? '&nur_beantragte=1' : ''));
|
|
}
|
|
|
|
$akzeptieren = $jInput->get('akzeptieren', false, 'BOOL');
|
|
$kommentar = $db->escape(trim($jInput->get('kommentar', '', 'RAW')));
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE termin_aktion_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$terminaktion = $rows[0];
|
|
$termin_bezug_id = $terminaktion->termin_bezug_id;
|
|
|
|
if ($terminaktion->status != 2) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Die Moderation wurde nicht umgesetzt weil der Termin nicht mehr im Beantragt-Status war.");
|
|
}
|
|
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine';
|
|
if ($akzeptieren) {
|
|
$query = "SELECT DISTINCT termin_id"
|
|
. "\n FROM #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $row->termin_id . ' ');
|
|
foreach ($dokumente as $dokument)
|
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument);
|
|
}
|
|
|
|
if ($terminaktion->typ == 2) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' ');
|
|
foreach ($dokumente as $dokument)
|
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument);
|
|
}
|
|
|
|
$query = "UPDATE #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n SET status = 1"
|
|
. "\n WHERE termin_bezug_id = $termin_bezug_id AND status = 0;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
} else {
|
|
if ($terminaktion->typ != 2) {
|
|
$dokumente = Folder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' ');
|
|
foreach ($dokumente as $dokument)
|
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument);
|
|
}
|
|
}
|
|
|
|
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
|
|
$query = "UPDATE #__sportsmanager_termin_aktion"
|
|
. "\n INNER JOIN #__sportsmanager_termin USING (termin_id)"
|
|
. "\n SET status = " . ($akzeptieren ? 0 : 3) . ","
|
|
. "\n moderation_user_id = $user_id,"
|
|
. "\n moderation_zeitpunkt = NOW(),"
|
|
. "\n moderation_kommentar = '$kommentar'"
|
|
. "\n WHERE termin_aktion_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
termineEmailBenachrichtigung($id);
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''));
|
|
}
|
|
|
|
function adminTermineVerlauf($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
|
|
if ($nur_beantragte) {
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id"
|
|
. "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id"
|
|
. "\n WHERE status = 2"
|
|
. "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"
|
|
. "\n ORDER BY aktion_zeitpunkt, bezeichnung"
|
|
. "\n LIMIT 1000";
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id"
|
|
. "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id"
|
|
. "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"
|
|
. "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung"
|
|
. "\n LIMIT 1000";
|
|
}
|
|
$terminaktionen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineVerlauf($terminaktionen, $nur_beantragte, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function terminDokument(): void
|
|
{
|
|
$db = getDatabase();
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezug_id = $jInput->get('bezug_id', 0, 'INT');
|
|
|
|
if (benutzerZugriff("termine_aendern") || benutzerZugriff("termine_benachrichtigung"))
|
|
$zugriffsebene = 1;
|
|
else
|
|
$zugriffsebene = 0;
|
|
|
|
if (!empty($bezug_id)) {
|
|
$query = "SELECT termin_id"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE termin_bezug_id = $bezug_id AND status = 0 AND (typ = 0 OR typ = 1)";
|
|
$rows = loadObjectList($db, $query);
|
|
$termin_vorhanden = count($rows) > 0;
|
|
if ($termin_vorhanden)
|
|
$id = $rows[0]->termin_id;
|
|
} else {
|
|
$query = "SELECT IF (EXISTS (SELECT *"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n WHERE termin_id = $id" . ($zugriffsebene == 0 ? " AND status = 0 AND (typ = 0 OR typ = 1)" : "") . "), 1, 0)";
|
|
$termin_vorhanden = loadResult($db, $query);
|
|
}
|
|
|
|
if (!$termin_vorhanden)
|
|
keinZugriff(true);
|
|
|
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine';
|
|
$dokumente = Folder::files($pfad, '^' . $id . ' ');
|
|
|
|
if (empty($dokumente)) {
|
|
redirectSportsManagerURL(null, "Der Anhang existiert nicht mehr.");
|
|
}
|
|
|
|
$extension = strtolower(File::getExt($dokumente[0]));
|
|
$mimeTypes = [
|
|
'jpg' => 'image/jpeg',
|
|
'jpeg' => 'image/jpeg',
|
|
'png' => 'image/png',
|
|
'webp' => 'image/webp',
|
|
'pdf' => 'application/pdf',
|
|
'txt' => 'text/plain'
|
|
// Add more as needed
|
|
];
|
|
|
|
// Return the corresponding MIME type or a default
|
|
$mm_type = $mimeTypes[$extension] ?? 'application/octet-stream';
|
|
|
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
|
header("Pragma: public");
|
|
header("Expires: 0");
|
|
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
|
header("Cache-Control: public");
|
|
header("Content-Description: File Transfer");
|
|
header("Content-Type: " . $mm_type);
|
|
header("Content-Length: " . filesize($pfad . DIRECTORY_SEPARATOR . $dokumente[0]));
|
|
header('Content-Disposition: inline; filename="' . substr($dokumente[0], strlen((string)$id) + 1) . '"');
|
|
header("Content-Transfer-Encoding: binary\n");
|
|
|
|
readfile($pfad . DIRECTORY_SEPARATOR . $dokumente[0]);
|
|
|
|
exit();
|
|
}
|
|
|
|
function adminTerminDetails($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$nur_beantragte = $jInput->get('nur_beantragte', 0, 'INT');
|
|
$uebersicht = $jInput->get('uebersicht', 0, 'INT');
|
|
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, aktion_user.name AS aktion_user_name, aktion_user.email AS aktion_user_email, moderation_user.name AS moderation_user_name, moderation_user.email AS moderation_user_email, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id"
|
|
. "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id"
|
|
. "\n WHERE termin_aktion_id = $id"
|
|
. "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id";
|
|
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$terminaktion = $rows[0];
|
|
|
|
$query = "SELECT #__sportsmanager_termin.*, #__sportsmanager_termin_aktion.*, DATEDIFF(erster_tag, NOW()) AS datumsdifferenz, aktion_user.name AS aktion_user_name, moderation_user.name AS moderation_user_name, GROUP_CONCAT(zusatz ORDER BY zusatz SEPARATOR ', ') AS zusaetze"
|
|
. "\n FROM #__sportsmanager_termin"
|
|
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_termin_zusatz USING (termin_id)"
|
|
. "\n LEFT JOIN #__users AS aktion_user ON aktion_user_id = aktion_user.id"
|
|
. "\n LEFT JOIN #__users AS moderation_user ON moderation_user_id = moderation_user.id"
|
|
. "\n WHERE termin_bezug_id = $terminaktion->termin_bezug_id"
|
|
. "\n GROUP BY #__sportsmanager_termin_aktion.termin_aktion_id"
|
|
. "\n ORDER BY aktion_zeitpunkt DESC, bezeichnung";
|
|
$terminaktionen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, isExternalDatabase());
|
|
}
|
|
|
|
function adminTermineBezeichnungen($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_bezeichnung"
|
|
. "\n ORDER BY bezeichnung";
|
|
$bezeichnungen = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineBezeichnungen($bezeichnungen, $admin_uebersicht);
|
|
}
|
|
|
|
function adminEditTermineBezeichnung($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$bezeichnung = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$bezeichnung = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTermineBezeichnung($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
|
|
|
if (!empty($id) && $termine_umbenennen) {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$alte_bezeichnung = $db->escape($rows[0]->bezeichnung);
|
|
|
|
$query = "UPDATE #__sportsmanager_termin"
|
|
. "\n SET bezeichnung = '$bezeichnung'"
|
|
. "\n WHERE bezeichnung = '$alte_bezeichnung'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE bezeichnung = '$bezeichnung' AND termin_bezeichnung_id != $id";
|
|
$rows = loadObjectList($db, $query);
|
|
// Datenbankeintrag verwerfen, falls Bezeichnung schon existiert
|
|
if (count($rows) > 0) {
|
|
if (!empty($id)) {
|
|
$query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (empty($id)) {
|
|
$query = "INSERT #__sportsmanager_termin_bezeichnung"
|
|
. "\n SET bezeichnung = '$bezeichnung'";
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_termin_bezeichnung"
|
|
. "\n SET bezeichnung = '$bezeichnung'"
|
|
. "\n WHERE termin_bezeichnung_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTermineBezeichnung($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen');
|
|
}
|
|
|
|
function adminTermineBezeichnungszusaetze($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_bezeichnungszusatz"
|
|
. "\n ORDER BY bezeichnungszusatz";
|
|
$bezeichnungszusaetze = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineBezeichnungszusaetze($bezeichnungszusaetze, $admin_uebersicht);
|
|
}
|
|
|
|
function adminEditTermineBezeichnungszusatz($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$bezeichnungszusatz = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$bezeichnungszusatz = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTermineBezeichnungszusatz($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bezeichnungszusatz = $db->escape(trim($jInput->get('bezeichnungszusatz', '', 'RAW')));
|
|
$titel = $db->escape(trim($jInput->get('titel', '', 'RAW')));
|
|
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
|
|
|
if (!empty($id) && $termine_umbenennen) {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$alter_bezeichnungszusatz = $db->escape($rows[0]->bezeichnungszusatz);
|
|
|
|
$query = "UPDATE #__sportsmanager_termin_zusatz"
|
|
. "\n SET zusatz = '$bezeichnungszusatz'"
|
|
. "\n WHERE zusatz = '$alter_bezeichnungszusatz'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE bezeichnungszusatz = '$bezeichnungszusatz' AND termin_bezeichnungszusatz_id != $id";
|
|
$rows = loadObjectList($db, $query);
|
|
// Datenbankeintrag verwerfen, falls Bezeichnungszusatz schon existiert
|
|
if (count($rows) > 0) {
|
|
if (!empty($id)) {
|
|
$query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (empty($id)) {
|
|
$query = "INSERT #__sportsmanager_termin_bezeichnungszusatz"
|
|
. "\n SET bezeichnungszusatz = '$bezeichnungszusatz',"
|
|
. "\n titel = '$titel'";
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_termin_bezeichnungszusatz"
|
|
. "\n SET bezeichnungszusatz = '$bezeichnungszusatz',"
|
|
. "\n titel = '$titel'"
|
|
. "\n WHERE termin_bezeichnungszusatz_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTermineBezeichnungszusatz($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze');
|
|
}
|
|
|
|
function adminTermineBundeslaender($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_bundesland"
|
|
. "\n ORDER BY bundesland";
|
|
$bundeslaender = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineBundeslaender($bundeslaender, $admin_uebersicht);
|
|
}
|
|
|
|
function adminEditTermineBundesland($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$bundesland = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$bundesland = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTermineBundesland($bundesland, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTermineBundesland($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$bundesland = $db->escape(trim($jInput->get('bundesland', '', 'RAW')));
|
|
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
|
|
|
if ($termine_umbenennen) {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$altes_bundesland = $db->escape($rows[0]->bundesland);
|
|
|
|
$query = "UPDATE #__sportsmanager_termin"
|
|
. "\n SET land = '$bundesland'"
|
|
. "\n WHERE land = '$altes_bundesland'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE bundesland = '$bundesland' AND termin_bundesland_id != $id";
|
|
$rows = loadObjectList($db, $query);
|
|
// Datenbankeintrag verwerfen, falls Bundesland schon existiert
|
|
if (count($rows) > 0) {
|
|
if (!empty($id)) {
|
|
$query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (empty($id)) {
|
|
$query = "INSERT #__sportsmanager_termin_bundesland"
|
|
. "\n SET bundesland = '$bundesland'";
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_termin_bundesland"
|
|
. "\n SET bundesland = '$bundesland'"
|
|
. "\n WHERE termin_bundesland_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTermineBundesland($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender');
|
|
}
|
|
|
|
function adminTermineLaender($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_land"
|
|
. "\n ORDER BY land";
|
|
$laender = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineLaender($laender, $admin_uebersicht);
|
|
}
|
|
|
|
function adminEditTermineLand($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$land = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$land = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTermineLand($land, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTermineLand($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$land = $db->escape(trim($jInput->get('land', '', 'RAW')));
|
|
$termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT');
|
|
|
|
|
|
if ($termine_umbenennen) {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$altes_land = $db->escape($rows[0]->land);
|
|
|
|
$query = "UPDATE #__sportsmanager_termin"
|
|
. "\n SET land = '$land'"
|
|
. "\n WHERE land = '$altes_land'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_termin_land WHERE land = '$land' AND termin_land_id != $id";
|
|
$rows = loadObjectList($db, $query);
|
|
// Datenbankeintrag verwerfen, falls Bundesland schon existiert
|
|
if (count($rows) > 0) {
|
|
if (!empty($id)) {
|
|
$query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
if (empty($id)) {
|
|
$query = "INSERT #__sportsmanager_termin_land"
|
|
. "\n SET land = '$land'";
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_termin_land"
|
|
. "\n SET land = '$land'"
|
|
. "\n WHERE termin_land_id = $id";
|
|
}
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTermineLand($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender');
|
|
}
|
|
|
|
function adminTermineSymbole($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_termin_symbol"
|
|
. "\n ORDER BY status DESC, symboltitel";
|
|
$symbole = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminTermineSymbole($symbole, $admin_uebersicht);
|
|
}
|
|
|
|
function adminEditTermineSymbol($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
if (empty($id)) {
|
|
$symbol = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die ("Wrong id");
|
|
$symbol = $rows[0];
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminEditTermineSymbol($symbol, $admin_uebersicht);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveTermineSymbol($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
global $_FILES;
|
|
global $sportsmanager_joomla_path;
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
$input = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if ($input->getBool('cancel')) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole');
|
|
}
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$symboltitel = $db->escape(trim($jInput->get('symboltitel', '', 'RAW')));
|
|
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT INTO #__sportsmanager_termin_symbol (symboltitel,status)"
|
|
. "\n VALUES ('$symboltitel', '$status');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_termin_symbol"
|
|
. "\n SET symboltitel = '$symboltitel', "
|
|
. "\n status = '$status'"
|
|
. "\n WHERE termin_symbol_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
if ($bildbeibehalten == 0) {
|
|
bildLoeschen('terminsymbole', $id);
|
|
|
|
if (!empty($_FILES["bild"]["tmp_name"])) {
|
|
if (is_uploaded_file($_FILES["bild"]["tmp_name"])) {
|
|
$size = getimagesize($_FILES["bild"]["tmp_name"]);
|
|
if (!$size
|
|
|| ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG)
|
|
|| ($size[0] > 8192 || $size[1] > 8192)) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', Text::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT'));
|
|
}
|
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole';
|
|
if (!File::copy($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) {
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', Text::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED'));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole');
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveTermineSymbol($admin_uebersicht): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("termine_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_symbol_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
bildLoeschen("terminsymbole", $id);
|
|
|
|
redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole');
|
|
}
|
|
|
|
function adminEditIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern"))
|
|
keinZugriff(true);
|
|
|
|
if ($id == 0)
|
|
$row = null;
|
|
else {
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung";
|
|
$veranstalter = loadObjectList($db, $query);
|
|
$query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 6 ORDER BY nummer";
|
|
$rows_kategorien = loadObjectList($db, $query);
|
|
$kategorien = array();
|
|
foreach ($rows_kategorien as $kategorie)
|
|
$kategorien[$kategorie->nummer] = $kategorie->bezeichnung;
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC";
|
|
$saisons = loadObjectList($db, $query);
|
|
if (empty($id)) {
|
|
$berechtigt_fuer_individualwettbewerb = array();
|
|
} else {
|
|
$query = "SELECT #__sportsmanager_berechtigt_fuer_individualwettbewerb.* FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb, #__users WHERE berechtigt_user_id = id AND berechtigt_individualwettbewerb_id = $id ORDER BY username, name";
|
|
$berechtigt_fuer_individualwettbewerb = loadObjectList($db, $query);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__users ORDER BY name, username";
|
|
$users = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern"))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$vorlage = $jInput->get('vorlage', 0, 'INT');
|
|
$veranstalterId = $jInput->get('veranstalterid', 0, 'INT');
|
|
$bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW')));
|
|
$saison_id = $jInput->get('saison_id', 0, 'INT');
|
|
$saetze = $jInput->get('saetze', 0, 'INT');
|
|
$tore = $jInput->get('tore', 0, 'INT');
|
|
$tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT');
|
|
$elo_wertung = $jInput->get('elo_wertung', 0, 'INT');
|
|
$status = $jInput->get('status', 0, 'INT');
|
|
$reihenfolge = $jInput->get('reihenfolge', 0, 'INT');
|
|
$kategorie = $jInput->get('kategorie', 0, 'INT');
|
|
$berechtigt_fuer_individualwettbewerb_user_ids = array();
|
|
for ($i = 1; $i <= 6; $i++) {
|
|
$berechtigt_user_id = $jInput->get('berechtigt_fuer_individualwettbewerb_user_' . $i . '_id', 0, 'INT');
|
|
if (!empty($berechtigt_user_id) && !in_array($berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids))
|
|
$berechtigt_fuer_individualwettbewerb_user_ids[] = $berechtigt_user_id;
|
|
}
|
|
|
|
$elo_aktualisieren = false;
|
|
if ($vorlage) {
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb"
|
|
. "\n SET veranstalter_id = '$veranstalterId',"
|
|
. "\n bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . ","
|
|
. "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . ","
|
|
. "\n tabellenwertung = '$tabellenwertung',"
|
|
. "\n elo_wertung = '$elo_wertung',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
|
|
foreach ($rows as $row) {
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET individualwettbewerb_id = '$id',"
|
|
. "\n spieler_id = '" . $row->spieler_id . "',"
|
|
. "\n platz = '" . $row->platz . "'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else if ($id == 0) {
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb"
|
|
. "\n SET veranstalter_id = '$veranstalterId',"
|
|
. "\n bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . ","
|
|
. "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . ","
|
|
. "\n tabellenwertung = '$tabellenwertung',"
|
|
. "\n elo_wertung = '$elo_wertung',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!");
|
|
}
|
|
$row = $rows[0];
|
|
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb"
|
|
. "\n SET veranstalter_id = '$veranstalterId',"
|
|
. "\n bezeichnung = '$bezeichnung',"
|
|
. "\n saison_id = '$saison_id',"
|
|
. "\n saetze = " . ($saetze != 0 ? "'$saetze'" : "null") . ","
|
|
. "\n tore = " . ($tore != 0 ? "'$tore'" : "null") . ","
|
|
. "\n tabellenwertung = '$tabellenwertung',"
|
|
. "\n elo_wertung = '$elo_wertung',"
|
|
. "\n status = '$status',"
|
|
. "\n reihenfolge = '$reihenfolge',"
|
|
. "\n kategorie = '$kategorie'"
|
|
. "\n WHERE individualwettbewerb_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0))
|
|
$elo_aktualisieren = true;
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id";
|
|
if (!empty($berechtigt_fuer_individualwettbewerb_user_ids))
|
|
$query .= " AND berechtigt_user_id NOT IN (" . implode(", ", $berechtigt_fuer_individualwettbewerb_user_ids) . ")";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
foreach ($rows as $row) {
|
|
$index = array_search($row->berechtigt_user_id, $berechtigt_fuer_individualwettbewerb_user_ids);
|
|
if ($index !== false) {
|
|
unset($berechtigt_fuer_individualwettbewerb_user_ids[$index]);
|
|
}
|
|
}
|
|
|
|
foreach ($berechtigt_fuer_individualwettbewerb_user_ids as $berechtigt_user_id) {
|
|
$query = "INSERT INTO #__sportsmanager_berechtigt_fuer_individualwettbewerb (berechtigt_user_id, berechtigt_individualwettbewerb_id) VALUES ('$berechtigt_user_id', '$id');";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id";
|
|
$aktualisieren_ab_datum = loadResult($db, $query);
|
|
|
|
if ($elo_aktualisieren && $aktualisieren_ab_datum != null) {
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
|
|
individualwettbewerbTabelleAktualisieren($id);
|
|
spielerstatistikAktualisieren(0, 0, $id);
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function individualwettbewerbTabelleAktualisieren($id = null): void
|
|
{
|
|
$db = getDatabase();
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb";
|
|
if (!empty($id))
|
|
$query .= "\n WHERE individualwettbewerb_id = $id";
|
|
$individualwettbewerbe = loadObjectList($db, $query);
|
|
foreach ($individualwettbewerbe as $individualwettbewerb) {
|
|
$individualwettbewerb_id = $individualwettbewerb->individualwettbewerb_id;
|
|
if ($individualwettbewerb->tabellenwertung == 0) {
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $individualwettbewerb_id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
$query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis FROM #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerb_id"
|
|
. "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id";
|
|
$spiele = loadObjectList($db, $query);
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerb_id"
|
|
. "\n ORDER BY platz";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
$platzierungen = array();
|
|
foreach ($ausgangsplatzierungen as $ausgangsplatzierung)
|
|
$platzierungen[] = $ausgangsplatzierung->spieler_id;
|
|
|
|
foreach ($spiele as $spiel) {
|
|
if ($spiel->ergebnis == 0)
|
|
continue;
|
|
if ($spiel->heim_spieler_2_id != null) // Bis auf Weiteres keine Doppelspiele für Tabelle berücksichtigen
|
|
continue;
|
|
$sieger_spieler_id = $spiel->ergebnis == 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id;
|
|
$verlierer_spieler_id = $spiel->ergebnis != 1 ? $spiel->heim_spieler_1_id : $spiel->gast_spieler_1_id;
|
|
|
|
if (!in_array($verlierer_spieler_id, $platzierungen))
|
|
$platzierungen[] = $verlierer_spieler_id;
|
|
|
|
$sieger_platzierung = array_search($sieger_spieler_id, $platzierungen);
|
|
$verlierer_platzierung = array_search($verlierer_spieler_id, $platzierungen);
|
|
if ($sieger_platzierung !== false) {
|
|
if ($sieger_platzierung < $verlierer_platzierung)
|
|
continue;
|
|
array_splice($platzierungen, $sieger_platzierung, 1);
|
|
}
|
|
array_splice($platzierungen, $verlierer_platzierung, 0, $sieger_spieler_id);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerb_id";
|
|
$platzierungen_vorhanden = loadObjectList($db, $query);
|
|
$platzierungen_uebrig = $platzierungen;
|
|
foreach ($platzierungen_vorhanden as $platzierung_vorhanden) {
|
|
$index = array_search($platzierung_vorhanden->spieler_id, $platzierungen);
|
|
if ($index !== false) {
|
|
$platz = $index + 1;
|
|
if ($platzierung_vorhanden->platz != $platz) {
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_platzierung"
|
|
. "\n SET platz = '$platz'"
|
|
. "\n WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig);
|
|
unset($platzierungen_uebrig[$index_uebrig]);
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_platzierung_id = " . $platzierung_vorhanden->individualwettbewerb_platzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($platzierungen_uebrig as $platzierung_uebrig) {
|
|
$index = array_search($platzierung_uebrig, $platzierungen);
|
|
$platz = $index + 1;
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb_platzierung"
|
|
. "\n SET individualwettbewerb_id = '$individualwettbewerb_id',"
|
|
. "\n spieler_id = '$platzierung_uebrig',"
|
|
. "\n platz = '$platz'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveIndividualwettbewerb(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern"))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) {
|
|
redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!");
|
|
}
|
|
$row = $rows[0];
|
|
|
|
$query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id";
|
|
$aktualisieren_ab_datum = loadResult($db, $query);
|
|
|
|
$query = "DELETE FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
if ($row->elo_wertung && $aktualisieren_ab_datum != null) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
spielerstatistikAktualisieren(0, 0, $id);
|
|
|
|
redirectSportsManagerURL('&task=admin_uebersicht');
|
|
}
|
|
|
|
function adminIndividualwettbewerbSpiele(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator())
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT *,"
|
|
. " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname,"
|
|
. " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname,"
|
|
. " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname,"
|
|
. " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler AS theim1 ON theim1.spieler_id = heim_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler AS theim2 ON theim2.spieler_id = heim_spieler_2_id"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler AS tgast1 ON tgast1.spieler_id = gast_spieler_1_id"
|
|
. "\n LEFT JOIN #__sportsmanager_spieler AS tgast2 ON tgast2.spieler_id = gast_spieler_2_id"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC";
|
|
$spiele = loadObjectList($db, $query);
|
|
if ($row->tabellenwertung) {
|
|
$query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY platz, nachname, vorname";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
} else {
|
|
$ausgangsplatzierungen = null;
|
|
}
|
|
|
|
HTML_sportsmanager_admin::adminIndividualwettbewerbSpiele($row, $spiele, $ausgangsplatzierungen);
|
|
}
|
|
|
|
function adminEditIndividualwettbewerbSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator())
|
|
keinZugriff(true);
|
|
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$individualwettbewerb = $rows[0];
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff(true);
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$typ = $jInput->get('typ', 0, 'RAW');
|
|
|
|
if (empty($id)) {
|
|
$row = null;
|
|
$spiel_spieler_ids = null;
|
|
} else {
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$row = $rows[0];
|
|
|
|
$spiel_spieler_ids = array($row->heim_spieler_1_id, $row->gast_spieler_1_id);
|
|
if ($row->heim_spieler_2_id != null)
|
|
array_push($spiel_spieler_ids, $row->heim_spieler_2_id, $row->gast_spieler_2_id);
|
|
$typ = $row->heim_spieler_2_id != null ? "doppel" : "einzel";
|
|
}
|
|
|
|
$query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode(", ", $spiel_spieler_ids) . ")") : "")
|
|
. "\n ORDER BY nachname, vorname";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditIndividualwettbewerbSpiel($row, $typ, $individualwettbewerb, $spieler);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveIndividualwettbewerbSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$typ = $jInput->get('typ', 0, 'RAW');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id);
|
|
}
|
|
|
|
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
|
|
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
|
|
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
|
|
|
|
if ($zeitpunkt == null) {
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id, "Es muss ein gültiges Datum angegeben werden.");
|
|
}
|
|
|
|
$ergebnis_punkte_heim = $jInput->get('ergebnis_punkte_heim', array(), 'ARRAY');
|
|
$ergebnis_punkte_gast = $jInput->get('ergebnis_punkte_gast', array(), 'ARRAY');
|
|
|
|
$ergebnis_detailliert = "";
|
|
$saetze_heim = 0;
|
|
$saetze_gast = 0;
|
|
for ($i = 0; $i < count($ergebnis_punkte_heim); $i++) {
|
|
if (($ergebnis_punkte_heim[$i] == 0 || empty($ergebnis_punkte_heim[$i])) && ($ergebnis_punkte_gast[$i] == 0 || empty($ergebnis_punkte_gast[$i])))
|
|
continue;
|
|
if (!empty($ergebnis_detailliert))
|
|
$ergebnis_detailliert .= " ";
|
|
$punkte_heim = empty($ergebnis_punkte_heim[$i]) ? "0" : $ergebnis_punkte_heim[$i];
|
|
$punkte_gast = empty($ergebnis_punkte_gast[$i]) ? "0" : $ergebnis_punkte_gast[$i];
|
|
if ($punkte_heim > $punkte_gast)
|
|
$saetze_heim++;
|
|
else if ($punkte_gast > $punkte_heim)
|
|
$saetze_gast++;
|
|
$ergebnis_detailliert .= $punkte_heim . ":" . $punkte_gast;
|
|
}
|
|
$ergebnis = $saetze_heim > $saetze_gast ? 1 : ($saetze_heim < $saetze_gast ? 2 : 0);
|
|
|
|
$heim_spieler_1_id = $jInput->get('heim_spieler_1_id', 0, 'INT');
|
|
$heim_spieler_2_id = $jInput->get('heim_spieler_2_id', 0, 'INT');
|
|
$gast_spieler_1_id = $jInput->get('gast_spieler_1_id', 0, 'INT');
|
|
$gast_spieler_2_id = $jInput->get('gast_spieler_2_id', 0, 'INT');
|
|
|
|
if (!empty($id)) {
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$spiel = $rows[0];
|
|
|
|
$typ = $spiel->heim_spieler_2_id != null ? "doppel" : "einzel";
|
|
}
|
|
|
|
if (empty($heim_spieler_1_id) || empty($gast_spieler_1_id) || ($typ != "einzel" && (empty($heim_spieler_2_id) || empty($gast_spieler_2_id)))) {
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id, "Es müssen Spieler ausgewählt werden.");
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$individualwettbewerb = $rows[0];
|
|
|
|
$elo_aktualisieren = $individualwettbewerb->elo_wertung;
|
|
$aktualisieren_ab_datum = $zeitpunkt;
|
|
|
|
if ($id == 0) {
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET individualwettbewerb_id = $individualwettbewerbId,"
|
|
. "\n zeitpunkt = '$zeitpunkt',"
|
|
. "\n heim_spieler_1_id = '$heim_spieler_1_id',"
|
|
. "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . ","
|
|
. "\n gast_spieler_1_id = '$gast_spieler_1_id',"
|
|
. "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . ","
|
|
. "\n ergebnis = '$ergebnis',"
|
|
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'");
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
$id = $db->insertid();
|
|
} else {
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_spiel"
|
|
. "\n SET zeitpunkt = '$zeitpunkt',"
|
|
. "\n heim_spieler_1_id = '$heim_spieler_1_id',"
|
|
. "\n heim_spieler_2_id = " . ($typ != "einzel" ? "'$heim_spieler_2_id'" : "NULL") . ","
|
|
. "\n gast_spieler_1_id = '$gast_spieler_1_id',"
|
|
. "\n gast_spieler_2_id = " . ($typ != "einzel" ? "'$gast_spieler_2_id'" : "NULL") . ","
|
|
. "\n ergebnis = '$ergebnis',"
|
|
. "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'")
|
|
. "\n WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
individualwettbewerbTabelleAktualisieren($individualwettbewerbId);
|
|
|
|
if ($elo_aktualisieren) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
spielerstatistikAktualisieren(0, 0, $individualwettbewerbId);
|
|
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveIndividualwettbewerbSpiel(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$individualwettbewerb = $rows[0];
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$spiel = $rows[0];
|
|
|
|
$elo_aktualisieren = $individualwettbewerb->elo_wertung;
|
|
$aktualisieren_ab_datum = $spiel->zeitpunkt;
|
|
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId;";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
|
|
individualwettbewerbTabelleAktualisieren($individualwettbewerbId);
|
|
|
|
if ($elo_aktualisieren && $aktualisieren_ab_datum != null) {
|
|
wannGespieltAktualisieren();
|
|
eloAktualisieren($aktualisieren_ab_datum);
|
|
einstufungAktualisieren();
|
|
}
|
|
spielerstatistikAktualisieren(0, 0, $individualwettbewerbId);
|
|
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId);
|
|
}
|
|
|
|
function adminEditIndividualwettbewerbAusgangsplatzierung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator())
|
|
keinZugriff(true);
|
|
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
$individualwettbewerb = $rows[0];
|
|
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff(true);
|
|
|
|
if (!$individualwettbewerb->tabellenwertung) die("Wrong id!");
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
|
|
$query = "SELECT spieler_id, nachname, vorname, vereinsname, aktueller_verein_id, platz, bild_ausblenden"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)"
|
|
. "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY platz, nachname, vorname";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
$row = null;
|
|
if (!empty($id)) {
|
|
foreach ($ausgangsplatzierungen as $ausgangsplatzierung) {
|
|
if ($ausgangsplatzierung->spieler_id == $id) {
|
|
$row = $ausgangsplatzierung;
|
|
break;
|
|
}
|
|
}
|
|
if ($row == null) die("Wrong id!");
|
|
}
|
|
|
|
$query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr"
|
|
. "\n FROM #__sportsmanager_spieler"
|
|
. "\n WHERE NOT ISNULL(aktueller_verein_id)" . (!empty($spiel_spieler_ids) ? (" OR spieler_id IN (" . implode($spiel_spieler_ids, ", ") . ")") : "")
|
|
. "\n ORDER BY nachname, vorname";
|
|
$spieler = loadObjectList($db, $query);
|
|
HTML_sportsmanager_admin::adminEditIndividualwettbewerbAusgangsplatzierung($row, $individualwettbewerb, $ausgangsplatzierungen, $spieler);
|
|
}
|
|
|
|
#[NoReturn] function adminSaveIndividualwettbewerbAusgangsplatzierung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff();
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$nach_id = $jInput->get('nach_id', 0, 'INT');
|
|
|
|
if ($jInput->get('cancel', false, 'BOOL')) {
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#pid' . $id);
|
|
}
|
|
|
|
if ($id == $nach_id) {
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#pid' . $id);
|
|
}
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY platz";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
$platzierungen = array();
|
|
foreach ($ausgangsplatzierungen as $ausgangsplatzierung)
|
|
$platzierungen[] = $ausgangsplatzierung->spieler_id;
|
|
|
|
if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!");
|
|
|
|
$id_platzierung = array_search($id, $platzierungen);
|
|
if ($id_platzierung !== false)
|
|
array_splice($platzierungen, $id_platzierung, 1);
|
|
$nach_id_platzierung = !empty($nach_id) ? (array_search($nach_id, $platzierungen) + 1) : 0;
|
|
array_splice($platzierungen, $nach_id_platzierung, 0, $id);
|
|
|
|
$platzierungen_uebrig = $platzierungen;
|
|
foreach ($ausgangsplatzierungen as $platzierung_vorhanden) {
|
|
$index = array_search($platzierung_vorhanden->spieler_id, $platzierungen);
|
|
if ($index !== false) {
|
|
$platz = $index + 1;
|
|
if ($platzierung_vorhanden->platz != $platz) {
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET platz = '$platz'"
|
|
. "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
$index_uebrig = array_search($platzierung_vorhanden->spieler_id, $platzierungen_uebrig);
|
|
unset($platzierungen_uebrig[$index_uebrig]);
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($platzierungen_uebrig as $platzierung_uebrig) {
|
|
$index = array_search($platzierung_uebrig, $platzierungen);
|
|
$platz = $index + 1;
|
|
$query = "INSERT #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET individualwettbewerb_id = '$individualwettbewerbId',"
|
|
. "\n spieler_id = '$platzierung_uebrig',"
|
|
. "\n platz = '$platz'";
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
|
|
individualwettbewerbTabelleAktualisieren($individualwettbewerbId);
|
|
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#pid' . $id);
|
|
}
|
|
|
|
#[NoReturn] function adminRemoveIndividualwettbewerbAusgangsplatzierung(): void
|
|
{
|
|
$db = getDatabase();
|
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
|
|
|
$id = $jInput->get('id', 0, 'INT');
|
|
$individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT');
|
|
if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId))
|
|
keinZugriff(true);
|
|
|
|
$query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId";
|
|
$rows = loadObjectList($db, $query);
|
|
if (count($rows) < 1) die("Wrong id!");
|
|
|
|
$query = "SELECT *"
|
|
. "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n WHERE individualwettbewerb_id = $individualwettbewerbId"
|
|
. "\n ORDER BY platz";
|
|
$ausgangsplatzierungen = loadObjectList($db, $query);
|
|
$platzierungen = array();
|
|
foreach ($ausgangsplatzierungen as $ausgangsplatzierung)
|
|
$platzierungen[] = $ausgangsplatzierung->spieler_id;
|
|
|
|
if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!");
|
|
|
|
$id_platzierung = array_search($id, $platzierungen);
|
|
if ($id_platzierung !== false)
|
|
array_splice($platzierungen, $id_platzierung, 1);
|
|
|
|
foreach ($ausgangsplatzierungen as $platzierung_vorhanden) {
|
|
$index = array_search($platzierung_vorhanden->spieler_id, $platzierungen);
|
|
if ($index !== false) {
|
|
$platz = $index + 1;
|
|
if ($platzierung_vorhanden->platz != $platz) {
|
|
$query = "UPDATE #__sportsmanager_individualwettbewerb_ausgangsplatzierung"
|
|
. "\n SET platz = '$platz'"
|
|
. "\n WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
} else {
|
|
$query = "DELETE FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE individualwettbewerb_ausgangsplatzierung_id = " . $platzierung_vorhanden->individualwettbewerb_ausgangsplatzierung_id;
|
|
$db->setQuery($query);
|
|
if (!$db->execute()) {
|
|
die($db->stderr(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
individualwettbewerbTabelleAktualisieren($individualwettbewerbId);
|
|
|
|
redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId);
|
|
}
|