From 4ca16747afbbb21fa7f369a87e89ca9bac3bb958 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 14:23:12 +0100 Subject: [PATCH 1/9] chore: update project structure with basic mvc approach --- gulpfile.babel.js/config.js | 4 + .../com_sportsmanager/admin.sportsmanager.php | 23 - .../com_sportsmanager/controller.php | 31 - .../com_sportsmanager/services/provider.php | 52 + .../com_sportsmanager/sportsmanager.php | 19 - .../src/Controller/DisplayController.php | 20 + .../src/Extension/SportsmanagerComponent.php | 15 + .../src/View/Sportsmanager/HtmlView.php | 32 + .../tmpl => tmpl/sportsmanager}/default.php | 16 +- .../com_sportsmanager/views/index.html | 1 - .../views/sportsmanager/index.html | 1 - .../views/sportsmanager/tmpl/index.html | 1 - .../views/sportsmanager/view.html.php | 49 - .../com_sportsmanager/sportsmanager.php | 8341 ++++++++--------- .../Controller/DisplayController.php} | 103 +- src/structure/sportsmanager.xml | 13 +- 16 files changed, 4011 insertions(+), 4710 deletions(-) delete mode 100644 src/structure/administrator/components/com_sportsmanager/admin.sportsmanager.php delete mode 100644 src/structure/administrator/components/com_sportsmanager/controller.php create mode 100644 src/structure/administrator/components/com_sportsmanager/services/provider.php delete mode 100644 src/structure/administrator/components/com_sportsmanager/sportsmanager.php create mode 100644 src/structure/administrator/components/com_sportsmanager/src/Controller/DisplayController.php create mode 100644 src/structure/administrator/components/com_sportsmanager/src/Extension/SportsmanagerComponent.php create mode 100644 src/structure/administrator/components/com_sportsmanager/src/View/Sportsmanager/HtmlView.php rename src/structure/administrator/components/com_sportsmanager/{views/sportsmanager/tmpl => tmpl/sportsmanager}/default.php (94%) delete mode 100644 src/structure/administrator/components/com_sportsmanager/views/index.html delete mode 100644 src/structure/administrator/components/com_sportsmanager/views/sportsmanager/index.html delete mode 100644 src/structure/administrator/components/com_sportsmanager/views/sportsmanager/tmpl/index.html delete mode 100644 src/structure/administrator/components/com_sportsmanager/views/sportsmanager/view.html.php rename src/structure/components/com_sportsmanager/{controller.php => src/Controller/DisplayController.php} (60%) diff --git a/gulpfile.babel.js/config.js b/gulpfile.babel.js/config.js index 873b7c6..14173e7 100644 --- a/gulpfile.babel.js/config.js +++ b/gulpfile.babel.js/config.js @@ -71,6 +71,10 @@ export const config = { src: './releasefiles/administrator/language/**/**', dest: 'sourcefiles/com_sportsmanager/admin/language' }, + { + src: './releasefiles/administrator/services/**/**', + dest: 'sourcefiles/com_sportsmanager/admin/services' + }, { src: './releasefiles/sportsmanager.xml', dest: 'sourcefiles/com_sportsmanager/' diff --git a/src/structure/administrator/components/com_sportsmanager/admin.sportsmanager.php b/src/structure/administrator/components/com_sportsmanager/admin.sportsmanager.php deleted file mode 100644 index 1bf68df..0000000 --- a/src/structure/administrator/components/com_sportsmanager/admin.sportsmanager.php +++ /dev/null @@ -1,23 +0,0 @@ -execute( JRequest::getVar('task')); - -// Redirect if set by the controller -//$controller->redirect(); - -?> diff --git a/src/structure/administrator/components/com_sportsmanager/controller.php b/src/structure/administrator/components/com_sportsmanager/controller.php deleted file mode 100644 index 6706eb1..0000000 --- a/src/structure/administrator/components/com_sportsmanager/controller.php +++ /dev/null @@ -1,31 +0,0 @@ -input; - $input->set('view', $input->getCmd('view', 'SportsManager')); - - // call parent behavior - parent::display($cachable); - } -} diff --git a/src/structure/administrator/components/com_sportsmanager/services/provider.php b/src/structure/administrator/components/com_sportsmanager/services/provider.php new file mode 100644 index 0000000..0879c48 --- /dev/null +++ b/src/structure/administrator/components/com_sportsmanager/services/provider.php @@ -0,0 +1,52 @@ +registerServiceProvider(new MVCFactory('\\Dtfb\\Component\\com_sportsmanager')); + $container->registerServiceProvider(new ComponentDispatcherFactory('\\Dtfb\\Component\\com_sportsmanager')); + + $container->set( + ComponentInterface::class, + function (Container $container) { + $component = new SportsmanagerComponent($container->get(ComponentDispatcherFactoryInterface::class)); + $component->setMVCFactory($container->get(MVCFactoryInterface::class)); + + return $component; + } + ); + } +}; diff --git a/src/structure/administrator/components/com_sportsmanager/sportsmanager.php b/src/structure/administrator/components/com_sportsmanager/sportsmanager.php deleted file mode 100644 index c3048a8..0000000 --- a/src/structure/administrator/components/com_sportsmanager/sportsmanager.php +++ /dev/null @@ -1,19 +0,0 @@ -input; -$task = $jinput->get('task', "", 'STR' ); - -// Perform the Request task -$controller->execute($task); - -// Redirect if set by the controller -$controller->redirect(); diff --git a/src/structure/administrator/components/com_sportsmanager/src/Controller/DisplayController.php b/src/structure/administrator/components/com_sportsmanager/src/Controller/DisplayController.php new file mode 100644 index 0000000..32c62e1 --- /dev/null +++ b/src/structure/administrator/components/com_sportsmanager/src/Controller/DisplayController.php @@ -0,0 +1,20 @@ + +

Copyright © 2006 – 2014 Sven Nickel

+ \ No newline at end of file diff --git a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/index.html b/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/index.html deleted file mode 100644 index 9f8c6ad..0000000 --- a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/tmpl/index.html b/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/tmpl/index.html deleted file mode 100644 index 9f8c6ad..0000000 --- a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/tmpl/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/view.html.php deleted file mode 100644 index 12d239c..0000000 --- a/src/structure/administrator/components/com_sportsmanager/views/sportsmanager/view.html.php +++ /dev/null @@ -1,49 +0,0 @@ - -

Copyright © 2006 – 2014 Sven Nickel

- get('Items'); - $pagination = $this->get('Pagination'); - - // Check for errors. - if (count($errors = $this->get('Errors'))) - { - JError::raiseError(500, implode('
', $errors)); - return false; - } - // Assign data to the view - $this->items = $items; - $this->pagination = $pagination; - */ - - // Display the template - parent::display($tpl); - } -} - diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 723ea03..576eadf 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -4,54 +4,47 @@ */ // kein direkter Zugriff +use JetBrains\PhpStorm\NoReturn; +use Joomla\CMS\Access\Access; +use Joomla\CMS\Application\SiteApplication; +use Joomla\CMS\Factory; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Log\Log; +use Joomla\CMS\Mail\Mail; +use Joomla\CMS\Uri\Uri; +use Joomla\CMS\User\User; +use Joomla\CMS\Version; + defined('_JEXEC') or die('Restricted access'); -define("SPORTS_MANAGER_VERSION", "2.0.0"); +const SPORTS_MANAGER_VERSION = "2.0.0"; -//ini_set('display_errors', '1'); - -function laufzeitInit() { +function laufzeitInit(): void +{ global $laufzeit_beginn; global $laufzeit_zwischenstand; $laufzeit_zwischenstand = $laufzeit_beginn = microtime(true); } -function laufzeit() { +function laufzeit() +{ global $laufzeit_beginn; return microtime(true) - $laufzeit_beginn; } -function laufzeitAusgeben($zwischenstand = NULL) { - global $laufzeit_beginn; - global $laufzeit_zwischenstand; - $laufzeit_aktuell = microtime(true); - $laufzeit_delta = $laufzeit_aktuell - $laufzeit_beginn; - $laufzeit_delta_zwischenstand = $laufzeit_aktuell - $laufzeit_zwischenstand; - $laufzeit_delta_zwischenstand = $laufzeit_aktuell - (empty($zwischenstand) ? $laufzeit_beginn : $laufzeit_zwischenstand); - $laufzeit_zwischenstand = $laufzeit_aktuell; - echo("" . (!empty($zwischenstand) ? htmlentities_utf8($zwischenstand) : "Seitenaufbau in") . ": " . sprintf('%f', $laufzeit_delta) . " Sekunden" . (empty($zwischenstand) ? "" : (sprintf(' (+%f)', $laufzeit_delta_zwischenstand))) . ".
"); -} - laufzeitInit(); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'tools.php'); +require_once JPATH_SITE . '/components/com_sportsmanager/tools.php'; setMinMemoryLimit('64M'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'api.php'); - -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'admin.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'controller.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'database.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'mathparser.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view.html.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view.json.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_admin.php'); -require_once (JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_ticker.php'); - - - -jimport('joomla.filesystem.file'); -jimport('joomla.filesystem.folder'); -jimport('joomla.filesystem.archive'); +require_once JPATH_SITE . '/components/com_sportsmanager/api.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/admin.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/mathparser.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view.html.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view.json.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_admin.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_ticker.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/database/update.php'; // will also include init.php initDatabase(); updateDatabase(); @@ -64,11 +57,11 @@ else if (isset($_REQUEST['filter_saison_id'])) global $content; global $task; global $params; -$jinput = JFactory::getApplication()->input; -$task = $jinput->getCmd('task'); -$app = JFactory::getApplication('site'); +$app = Factory::getContainer()->get(SiteApplication::class); +$jInput = $app->input; +$task = $jInput->getCmd('task'); $params = $app->getParams('com_sportsmanager'); -$content = isJson() && $jinput->getCmd('content', NULL) != NULL ? $jinput->getCmd('content') : $params->get('content'); +$content = isJson() && $jInput->getCmd('content', NULL) != NULL ? $jInput->getCmd('content') : $params->get('content'); if (berechnungen()) return; @@ -78,21 +71,20 @@ if ($task == "spielerbild") { } else if ($task == "anhang_termin") { terminDokument(); } else if ($task == "spieler_details") { - spielerDetails(); -} else if (substr($task, 0, 6) == "admin_") { + spielerDetails(); +} else if (str_starts_with($task, "admin_")) { + // in some cases there are no breaks needed due to no return from method switch ($task) { case 'admin_einstellungen': adminEinstellungen(); break; case 'admin_einstellungen_save': adminSaveEinstellungen(); - break; case 'admin_datenbank': adminDatenbank(); break; case 'admin_datenbank_save': adminSaveDatenbank(); - break; case 'admin_spieler': adminSpieler(1); break; @@ -101,16 +93,13 @@ if ($task == "spielerbild") { break; case 'admin_spieler_save': adminSaveSpieler(); - break; case 'admin_spieler_remove': adminRemoveSpieler(); - break; case 'admin_spieler_zusammenlegen_form': adminSpielerZusammenlegenForm(); break; case 'admin_spieler_zusammenlegen': adminSpielerZusammenlegen(); - break; case 'admin_spieler_import_form': adminImportSpielerForm(); break; @@ -128,22 +117,18 @@ if ($task == "spielerbild") { break; case 'admin_spieler_export': adminExportSpieler(); - break; case 'admin_spieler_export_international_form': adminExportSpielerInternationalForm(); break; case 'admin_spieler_export_international': adminExportSpielerInternational(); - break; case 'admin_spieler_export_sport': adminExportSpielerSport(); - break; case 'admin_spieler_remove_inaktive_form': adminRemoveInaktiveSpielerForm(); break; case 'admin_spieler_remove_inaktive': adminRemoveInaktiveSpieler(); - break; case 'admin_vereine': adminVereine(); break; @@ -152,16 +137,13 @@ if ($task == "spielerbild") { break; case 'admin_verein_save': adminSaveVerein(); - break; case 'admin_verein_remove': adminRemoveVerein(); - break; case 'admin_vereine_zusammenlegen_form': adminVereineZusammenlegenForm(); break; case 'admin_vereine_zusammenlegen': adminVereineZusammenlegen(); - break; case 'admin_vereinsmitglieder': adminVereinsmitglieder(); break; @@ -170,10 +152,8 @@ if ($task == "spielerbild") { break; case 'admin_vereinsmitglied_save': adminSaveVereinsmitglied(); - break; case 'admin_vereinsmitglied_remove': adminRemoveVereinsmitglied(); - break; case 'admin_spielorte': adminSpielorte(); break; @@ -182,16 +162,13 @@ if ($task == "spielerbild") { break; case 'admin_spielort_save': adminSaveSpielort(); - break; case 'admin_spielort_remove': adminRemoveSpielort(); - break; case 'admin_spielorte_zusammenlegen_form': adminSpielorteZusammenlegenForm(); break; case 'admin_spielorte_zusammenlegen': adminSpielorteZusammenlegen(); - break; case 'admin_teamspiel_modi': adminTeamspielModi(); break; @@ -200,13 +177,10 @@ if ($task == "spielerbild") { break; case 'admin_teamspiel_modus_save': adminSaveTeamspielmodus(); - break; case 'admin_teamspiel_modus_remove': adminRemoveTeamspielmodus(); - break; case 'admin_teamspiel_modus_kopieren': adminKopierenTeamspielmodus(); - break; case 'admin_verschieben_modi': adminVerschiebenModi(); break; @@ -215,16 +189,13 @@ if ($task == "spielerbild") { break; case 'admin_verschieben_modus_save': adminSaveVerschiebenModus(); - break; case 'admin_verschieben_modus_remove': adminRemoveVerschiebenModus(); - break; case 'admin_kategorien': adminKategorien(); break; case 'admin_kategorien_save': adminSaveKategorien(); - break; case 'admin_ranglistensysteme': adminRanglistensysteme(); break; @@ -233,31 +204,24 @@ if ($task == "spielerbild") { break; case 'admin_ranglistensystem_save': adminSaveRanglistensystem(); - break; case 'admin_ranglistensystem_auswertung': adminRanglistensystemAuswertung(); break; case 'admin_ranglistensystem_remove': adminRemoveRanglistensystem(); - break; case 'admin_rangliste_edit': adminEditRangliste(); break; case 'admin_rangliste_save': adminSaveRangliste(); - break; case 'admin_rangliste_remove': adminRemoveRangliste(); - break; case 'admin_rangliste_kopieren': adminKopierenRangliste(); - break; case 'admin_rangliste_system_zuruecksetzen': adminRanglisteSystemZuruecksetzen(); - break; case 'admin_rangliste_disziplinen_entfernen': adminRanglisteDisziplinenEntfernen(); - break; case 'admin_rangliste_turnierdisziplinen': adminRanglisteTurnierdisziplinen(); break; @@ -266,25 +230,19 @@ if ($task == "spielerbild") { break; case 'admin_rangliste_turnierdisziplin_save': adminSaveRanglisteTurnierdisziplin(); - break; case 'admin_rangliste_turnierdisziplin_remove': adminRemoveRanglisteTurnierdisziplin(); - break; case 'admin_spielerstatistik_edit': adminEditSpielerstatistik(); break; case 'admin_spielerstatistik_save': adminSaveSpielerstatistik(); - break; case 'admin_spielerstatistik_remove': adminRemoveSpielerstatistik(); - break; case 'admin_spielerstatistik_kopieren': adminKopierenSpielerstatistik(); - break; case 'admin_spielerstatistik_veranstaltungen_entfernen': adminSpielerstatistikVeranstaltungenEntfernen(); - break; case 'admin_spielerstatistik_veranstaltungen': adminSpielerstatistikVeranstaltungen(); break; @@ -293,19 +251,15 @@ if ($task == "spielerbild") { break; case 'admin_spielerstatistik_veranstaltung_save': adminSaveSpielerstatistikVeranstaltung(); - break; case 'admin_spielerstatistik_veranstaltung_remove': adminRemoveSpielerstatistikVeranstaltung(); - break; case 'admin_spielerstatistik_individualwettbewerb_edit': adminEditSpielerstatistikIndividualwettbewerb(); break; case 'admin_spielerstatistik_individualwettbewerb_save': adminSaveSpielerstatistikIndividualwettbewerb(); - break; case 'admin_spielerstatistik_individualwettbewerb_remove': adminRemoveSpielerstatistikIndividualwettbewerb(); - break; case 'admin_einstufungen': adminEinstufungen(); break; @@ -314,10 +268,8 @@ if ($task == "spielerbild") { break; case 'admin_einstufung_save': adminSaveEinstufung(); - break; case 'admin_einstufung_remove': adminRemoveEinstufung(); - break; case 'admin_saisons': adminSaisons(); break; @@ -326,10 +278,8 @@ if ($task == "spielerbild") { break; case 'admin_saison_save': adminSaveSaison(); - break; case 'admin_saison_remove': adminRemoveSaison(); - break; case 'admin_verteiler': adminVerteiler(); break; @@ -338,10 +288,8 @@ if ($task == "spielerbild") { break; case 'admin_verteiler_save': adminSaveVerteiler(); - break; case 'admin_verteiler_remove': adminRemoveVerteiler(); - break; case 'admin_rechnungen': adminRechnungen(); break; @@ -350,10 +298,8 @@ if ($task == "spielerbild") { break; case 'admin_rechnung_save': adminSaveRechnung(); - break; case 'admin_rechnung_remove': adminRemoveRechnung(); - break; case 'admin_moderatoren': adminModeratoren(); break; @@ -362,10 +308,8 @@ if ($task == "spielerbild") { break; case 'admin_moderator_save': adminSaveModerator(); - break; case 'admin_moderator_remove': adminRemoveModerator(); - break; case 'admin_veranstalter': adminVeranstalter(); break; @@ -374,19 +318,15 @@ if ($task == "spielerbild") { break; case 'admin_veranstalter_save': adminSaveVeranstalter(); - break; case 'admin_veranstalter_remove': adminRemoveVeranstalter(); - break; case 'admin_veranstaltung_edit': adminEditVeranstaltung(); break; case 'admin_veranstaltung_save': adminSaveVeranstaltung(); - break; case 'admin_veranstaltung_remove': adminRemoveVeranstaltung(); - break; case 'admin_teams': adminMannschaften(); break; @@ -395,22 +335,18 @@ if ($task == "spielerbild") { break; case 'admin_team_save': adminSaveMannschaft(); - break; case 'admin_team_remove': adminRemoveMannschaft(); - break; case 'admin_team_kopieren_form': adminKopierenMannschaftForm(); break; case 'admin_team_kopieren': adminKopierenMannschaft(); - break; case 'admin_team_verknuepfen_form': adminVerknuepfenMannschaftForm(); break; case 'admin_team_verknuepfen': adminVerknuepfenMannschaft(); - break; case 'admin_mitglieder': adminMitglieder(); break; @@ -419,15 +355,6 @@ if ($task == "spielerbild") { break; case 'admin_mitglied_save': adminSaveMitglied(); - break; - /* - case 'admin_mitglied_remove_form': - adminRemoveMitgliedForm(); - break; - case 'admin_mitglied_remove': - adminRemoveMitglied(); - break; - */ case 'admin_begegnungen': adminBegegnungen(); break; @@ -436,13 +363,11 @@ if ($task == "spielerbild") { break; case 'admin_begegnung_save': adminSaveBegegnung(); - break; case 'admin_begegnung_remove': adminRemoveBegegnung(); break; case 'admin_begegnung_heimtausch': adminHeimtauschBegegnung(); - break; case 'admin_begegnung_spielplan_edit': adminEditBegegnungSpielplan(0); break; @@ -450,47 +375,34 @@ if ($task == "spielerbild") { adminEditBegegnungSpielplan(1); break; case 'admin_begegnung_spielplan_save': - $input = isJson() ? $jinput->json : $jinput; + $input = isJson() ? $jInput->json : $jInput; if ($input->get('ergebnis_bestaetigen', false, 'BOOL')) { adminBegegnungSpielplanBestaetigen(); - } else if ($jinput->get('heimrecht_tauschen', false, 'BOOL')) { + } else if ($jInput->get('heimrecht_tauschen', false, 'BOOL')) { adminBegegnungSpielplanHeimtausch(); } else { adminSaveBegegnungSpielplan(); } break; - /* - case 'admin_begegnung_spielplan_bestaetigen': - adminBegegnungSpielplanBestaetigen(); - break; - case 'admin_begegnung_spielplan_heimtausch': - adminBegegnungSpielplanHeimtausch(); - break; - */ case 'admin_begegnungen_generieren_form': adminBegegnungenGenerierenForm(); break; case 'admin_begegnungen_generieren': adminBegegnungenGenerieren(); - break; case 'admin_begegnungen_runde_erzeugen_form': adminBegegnungenRundeErzeugenForm(); break; case 'admin_begegnungen_runde_erzeugen': adminBegegnungenRundeErzeugen(); - break; case 'admin_begegnungen_alle_entfernen': adminBegegnungenAlleEntfernen(); - break; case 'admin_individualwettbewerb_edit': adminEditIndividualwettbewerb(); break; case 'admin_individualwettbewerb_save': adminSaveIndividualwettbewerb(); - break; case 'admin_individualwettbewerb_remove': adminRemoveIndividualwettbewerb(); - break; case 'admin_individualwettbewerb_spiele': adminIndividualwettbewerbSpiele(); break; @@ -499,19 +411,15 @@ if ($task == "spielerbild") { break; case 'admin_individualwettbewerb_spiel_save': adminSaveIndividualwettbewerbSpiel(); - break; case 'admin_individualwettbewerb_spiel_remove': adminRemoveIndividualwettbewerbSpiel(); - break; case 'admin_individualwettbewerb_ausgangsplatzierung_edit': adminEditIndividualwettbewerbAusgangsplatzierung(); break; case 'admin_individualwettbewerb_ausgangsplatzierung_save': adminSaveIndividualwettbewerbAusgangsplatzierung(); - break; case 'admin_individualwettbewerb_ausgangsplatzierung_remove': adminRemoveIndividualwettbewerbAusgangsplatzierung(); - break; case 'admin_termine': adminTermine(1); break; @@ -535,7 +443,6 @@ if ($task == "spielerbild") { break; case 'admin_termin_moderieren': adminTerminModerieren(1); - break; case 'admin_termine_bezeichnungen': adminTermineBezeichnungen(1); break; @@ -544,10 +451,8 @@ if ($task == "spielerbild") { break; case 'admin_termine_bezeichnung_save': adminSaveTermineBezeichnung(1); - break; case 'admin_termine_bezeichnung_remove': adminRemoveTermineBezeichnung(1); - break; case 'admin_termine_bezeichnungszusaetze': adminTermineBezeichnungszusaetze(1); break; @@ -556,10 +461,8 @@ if ($task == "spielerbild") { break; case 'admin_termine_bezeichnungszusatz_save': adminSaveTermineBezeichnungszusatz(1); - break; case 'admin_termine_bezeichnungszusatz_remove': adminRemoveTermineBezeichnungszusatz(1); - break; case 'admin_termine_bundeslaender': adminTermineBundeslaender(1); break; @@ -568,10 +471,8 @@ if ($task == "spielerbild") { break; case 'admin_termine_bundesland_save': adminSaveTermineBundesland(1); - break; case 'admin_termine_bundesland_remove': adminRemoveTermineBundesland(1); - break; case 'admin_termine_laender': adminTermineLaender(1); break; @@ -580,10 +481,8 @@ if ($task == "spielerbild") { break; case 'admin_termine_land_save': adminSaveTermineLand(1); - break; case 'admin_termine_land_remove': adminRemoveTermineLand(1); - break; case 'admin_termine_symbole': adminTermineSymbole(1); break; @@ -592,19 +491,15 @@ if ($task == "spielerbild") { break; case 'admin_termine_symbol_save': adminSaveTermineSymbol(1); - break; case 'admin_termine_symbol_remove': adminRemoveTermineSymbol(1); - break; case 'admin_turnier_edit': adminEditTurnier(); break; case 'admin_turnier_save': adminSaveTurnier(); - break; case 'admin_turnier_remove': adminRemoveTurnier(); - break; case 'admin_turnierdisziplinen': adminTurnierdisziplinen(); break; @@ -613,73 +508,59 @@ if ($task == "spielerbild") { break; case 'admin_turnierdisziplin_save': adminSaveTurnierdisziplin(); - break; case 'admin_turnierdisziplin_remove': adminRemoveTurnierdisziplin(); - break; case 'admin_turniervoranmeldungen_export_form': adminExportTurniervoranmeldungenForm(); break; case 'admin_turniervoranmeldungen_export': adminExportTurniervoranmeldungen(); - break; case 'admin_turnierdisziplin_meldungen_spiele': adminTurnierdisziplinMeldungenSpiele(); break; case 'admin_turnierdisziplin_meldungen_spiele_alle_entfernen': adminTurnierdisziplinMeldungenSpieleAlleEntfernen(); - break; case 'admin_turnierdisziplin_spiel_edit': adminEditTurnierdisziplinSpiel(); break; case 'admin_turnierdisziplin_spiel_save': adminSaveTurnierdisziplinSpiel(); - break; case 'admin_turnierdisziplin_spiel_remove': adminRemoveTurnierdisziplinSpiel(); - break; case 'admin_turnierdisziplin_runde_edit': adminEditTurnierdisziplinRunde(); break; case 'admin_turnierdisziplin_runde_save': adminSaveTurnierdisziplinRunde(); - break; case 'admin_turnierdisziplin_meldung_edit': adminEditTurnierdisziplinMeldung(); break; case 'admin_turnierdisziplin_meldung_save': adminSaveTurnierdisziplinMeldung(); - break; case 'admin_turnierdisziplin_meldung_remove': adminRemoveTurnierdisziplinMeldung(); - break; case 'admin_turnierdisziplin_meldung_verknuepfen_form': adminVerknuepfenTurnierdisziplinMeldungForm(); break; case 'admin_turnierdisziplin_meldung_verknuepfen': adminVerknuepfenTurnierdisziplinMeldung(); - break; case 'admin_turnierdisziplin_meldungen_spiele_import_form': adminImportTurnierdisziplinMeldungenSpieleForm(); break; case 'admin_turnierdisziplin_meldungen_spiele_import': adminImportTurnierdisziplinMeldungenSpiele(); - break; case 'admin_turnierdisziplin_rundenstufe_edit': adminEditTurnierdisziplinRundenstufe(); break; case 'admin_turnierdisziplin_rundenstufe_save': adminSaveTurnierdisziplinRundenstufe(); - break; case 'admin_turnierdisziplin_rundenstufe_remove': adminRemoveTurnierdisziplinRundenstufe(); - break; case 'admin_spieler_bilder_exportieren_form': adminSpielerExportBilderForm(); break; case 'admin_spieler_bilder_exportieren': adminSpielerExportBilder(); - break; case 'admin_spieler_bilder_importieren_form': adminSpielerImportBilderForm(); break; @@ -691,7 +572,6 @@ if ($task == "spielerbild") { break; case 'admin_vereine_bilder_exportieren': adminVereineExportBilder(); - break; case 'admin_vereine_bilder_importieren_form': adminVereineImportBilderForm(); break; @@ -700,7 +580,6 @@ if ($task == "spielerbild") { break; case 'admin_grooming_mehrfache_mitgliedschaften': adminGroomingMehrfacheMitgliedschaften(); - break; default: if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator() && (benutzerVeranstalterModerator() || benutzerVereinModerator())) adminSpieler(0); @@ -708,25 +587,12 @@ if ($task == "spielerbild") { adminUebersicht(); break; } -} -else if ($content == "players") { - switch ($task) { - default: - spieler(); - break; - } +} else if ($content == "players") { + spieler(); } else if ($content == "elorangliste") { - switch ($task) { - default: - eloRanglisten(); - break; - } + eloRanglisten(); } else if ($content == "individualwettbewerbe") { - switch ($task) { - default: - individualwettbewerbe(); - break; - } + individualwettbewerbe(); } else if ($content == "teams" || $content == "teams_vereinigt") { switch ($task) { case 'begegnung_spielplan': @@ -737,10 +603,8 @@ else if ($content == "players") { break; case 'team_spielplan_xml': teamSpielplanXML(); - break; case 'team_begegnungen_ical': teamBegegnungeniCal(); - break; default: mannschaften($content == "teams_vereinigt"); break; @@ -752,17 +616,12 @@ else if ($content == "players") { break; case 'verein_begegnungen_ical': vereinBegegnungeniCal(); - break; default: vereine(); break; } } else if ($content == "turniervoranmeldungen") { - switch ($task) { - default: - turniervoranmeldungen(); - break; - } + turniervoranmeldungen(); } else if ($content == "turniere") { switch ($task) { case 'turnierdisziplin': @@ -806,31 +665,24 @@ else if ($content == "players") { break; case 'begegnung_verlegen_bestaetigen': begegnungVerlegenBestaetigen(); - break; case 'begegnung_spielplan': begegnungSpielplan(); break; case 'veranstaltungen_ticker': veranstaltungenTicker(true); - break; case 'veranstaltungen_ticker_timestamp': veranstaltungenTickerTimestamp(true); - break; case 'veranstaltungen_ticker_daten': veranstaltungenTickerDaten(true); - break; case 'veranstaltungen_ticker_css': veranstaltungenTickerCSS(); - break; case 'team_details': mannschaftDetails(true, true); break; case 'team_spielplan_xml': teamSpielplanXML(); - break; case 'team_begegnungen_ical': teamBegegnungeniCal(); - break; default: aktuelleBegegnungen(); break; @@ -845,7 +697,6 @@ else if ($content == "players") { break; case 'begegnung_verlegen_bestaetigen': begegnungVerlegenBestaetigen(); - break; case 'begegnung_spielplan': begegnungSpielplan(); break; @@ -854,25 +705,19 @@ else if ($content == "players") { break; case 'veranstaltungen_ticker': veranstaltungenTicker(true); - break; case 'veranstaltungen_ticker_timestamp': veranstaltungenTickerTimestamp(true); - break; case 'veranstaltungen_ticker_daten': veranstaltungenTickerDaten(true); - break; case 'veranstaltungen_ticker_css': veranstaltungenTickerCSS(); - break; case 'team_details': mannschaftDetails(true, true); break; case 'team_spielplan_xml': teamSpielplanXML(); - break; case 'team_begegnungen_ical': teamBegegnungeniCal(); - break; default: aktuelleBegegnungen(TRUE); break; @@ -887,7 +732,6 @@ else if ($content == "players") { break; case 'begegnung_verlegen_bestaetigen': begegnungVerlegenBestaetigen(); - break; case 'begegnung_spielplan': begegnungSpielplan(); break; @@ -896,28 +740,21 @@ else if ($content == "players") { break; case 'veranstaltung_begegnungen_ical': veranstaltungBegegnungeniCal(); - break; case 'veranstaltungen_ticker': veranstaltungenTicker(); - break; case 'veranstaltungen_ticker_daten': veranstaltungenTickerDaten(); - break; case 'veranstaltungen_ticker_css': veranstaltungenTickerCSS(); - break; case 'veranstaltungen_ticker_timestamp': veranstaltungenTickerTimestamp(); - break; case 'team_details': mannschaftDetails(true, true); break; case 'team_spielplan_xml': teamSpielplanXML(); - break; case 'team_begegnungen_ical': teamBegegnungeniCal(); - break; default: veranstaltungen(); } @@ -931,28 +768,21 @@ else if ($content == "players") { break; case 'begegnung_verlegen_bestaetigen': begegnungVerlegenBestaetigen(); - break; case 'begegnung_spielplan': begegnungSpielplan(); break; - case 'begegnung_spielplan': - begegnungSpielplan(true); - break; case 'team_details': mannschaftDetails(true, true); break; case 'team_spielplan_xml': teamSpielplanXML(); - break; case 'team_begegnungen_ical': teamBegegnungeniCal(); - break; case 'spielort': spielort(); break; case 'spielort_begegnungen_ical': spielortBegegnungeniCal(); - break; default: spielorte(); break; @@ -987,10 +817,8 @@ else if ($content == "players") { break; case 'termine_bezeichnung_save': adminSaveTermineBezeichnung(0); - break; case 'termine_bezeichnung_remove': adminRemoveTermineBezeichnung(0); - break; case 'termine_bezeichnungszusaetze': adminTermineBezeichnungszusaetze(0); break; @@ -999,10 +827,8 @@ else if ($content == "players") { break; case 'termine_bezeichnungszusatz_save': adminSaveTermineBezeichnungszusatz(0); - break; case 'termine_bezeichnungszusatz_remove': adminRemoveTermineBezeichnungszusatz(0); - break; case 'termine_bundeslaender': adminTermineBundeslaender(0); break; @@ -1011,10 +837,8 @@ else if ($content == "players") { break; case 'termine_bundesland_save': adminSaveTermineBundesland(0); - break; case 'termine_bundesland_remove': adminRemoveTermineBundesland(0); - break; case 'termine_laender': adminTermineLaender(0); break; @@ -1023,10 +847,8 @@ else if ($content == "players") { break; case 'termine_land_save': adminSaveTermineLand(0); - break; case 'termine_land_remove': adminRemoveTermineLand(0); - break; case 'termine_symbole': adminTermineSymbole(0); break; @@ -1035,10 +857,8 @@ else if ($content == "players") { break; case 'termine_symbol_save': adminSaveTermineSymbol(0); - break; case 'termine_symbol_remove': adminRemoveTermineSymbol(0); - break; default: adminTermine(0); break; @@ -1050,56 +870,59 @@ else if ($content == "players") { } else { adminUebersicht(); } -// laufzeitAusgeben(); return; -function redirectSportsManagerURL($weitereParameter = NULL, $nachricht = '') { +#[NoReturn] function redirectSportsManagerURL($weitereParameter = NULL, $nachricht = ''): void +{ global $redirect_session_id; if (!empty($redirect_session_id)) { if (empty($weitereParameter)) $weitereParameter = ''; $weitereParameter .= "&rsession_id=" . urlencode($redirect_session_id); } - $app = &JFactory::getApplication(); - if($nachricht != '') { + $app = Factory::getContainer()->get(SiteApplication::class); + if ($nachricht != '') { $app->enqueueMessage($nachricht); } $app->redirect(SportsManagerURL($weitereParameter), 200); - exit; - return; + exit; } -function redirectCurrentURL() { +function redirectCurrentURL(): void +{ global $redirect_session_id; - $u = & JURI::getInstance(); + $u = Uri::getInstance(); if (!empty($redirect_session_id)) $u->setVar('rsession_id', $redirect_session_id); - $app = &JFactory::getApplication(); + $app = Factory::getContainer()->get(SiteApplication::class); $app->redirect($u->toString()); } -function redirectSessionIdSetzen() { +function redirectSessionIdSetzen() +{ global $redirect_session_id; if (empty($redirect_session_id)) $redirect_session_id = date('Y-m-d H:i:s'); return $redirect_session_id; } -function redirectSessionIdEmpty() { +function redirectSessionIdEmpty(): bool +{ global $redirect_session_id; return empty($redirect_session_id); } -function redirectRequestGetSessionId() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - $session_id = $db->escape(trim($jinput->get('rsession_id', '', 'RAW'))); - return $session_id; +function redirectRequestGetSessionId() +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + return $db->escape(trim($jInput->get('rsession_id', '', 'RAW'))); } -function berechnungen() { - $db = & getDatabase(); +function berechnungen() +{ + $db = getDatabase(); $session_id = redirectRequestGetSessionId(); @@ -1109,11 +932,10 @@ function berechnungen() { . "\n WHERE " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")) . "\n ), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $berechnungen = $db->loadResult(); - ; if (empty($berechnungen)) return FALSE; @@ -1121,28 +943,55 @@ function berechnungen() { ranglisteAktualisieren(0, 0, 0, TRUE); einstufungAktualisieren(TRUE); - $u = & JURI::getInstance(); - $app = &JFactory::getApplication(); + $u = Uri::getInstance(); + $app = Factory::getContainer()->get(SiteApplication::class); $app->redirect($u->toString()); return TRUE; } -function benutzerJoomlaAdmin() { - $version = new JVersion; +function benutzerJoomlaAdmin(): bool +{ + $version = new Version; $joomla = $version->getShortVersion(); - if (substr($joomla, 0, 3) != '1.5') { - if (JFactory::getUser()->authorise('core.manage', 'com_sportsmanager')) + if (!str_starts_with($joomla, '1.5')) { + if (Factory::getContainer()->get(SiteApplication::class)->getIdentity()->authorise('core.manage', 'com_sportsmanager')) return true; } else { - JFactory::getACL()->addACL('com_sportsmanager', 'manage', 'users', 'super administrator'); - if (JFactory::getUser()->authorize('com_sportsmanager', 'manage')) + $db = getDatabase(); + + $query = $db->getQuery(true) + ->select($db->quoteName('id')) + ->from($db->quoteName('#__usergroups')) + ->where($db->quoteName('title') . ' = ' . $db->quote('Super Users')); + + $db->setQuery($query); + $superAdminGroupId = $db->loadResult(); + $rules = Access::getAssetRules("com_sportsmanager"); + // Define new permissions (allow 'core.create' for the group) + $rules->merge(['core.manage' => ['' . $superAdminGroupId => true]]); + + // Convert rules into JSON format + $rulesJson = json_encode($rules->getData()); + + // Update the rules in the assets table + $query = $db->getQuery(true) + ->update($db->quoteName('#__assets')) + ->set($db->quoteName('rules') . ' = ' . $db->quote($rulesJson)) + ->where($db->quoteName('name') . ' = ' . $db->quote('com_sportsmanager')); + + $db->setQuery($query); + $db->execute(); + + if (Factory::getContainer()->get(SiteApplication::class)->getIdentity()->authorise('com_sportsmanager', 'manage')) return true; } + return false; } -function benutzerModerator() { - $db = & getDatabase(); +function benutzerModerator() +{ + $db = getDatabase(); if (benutzerJoomlaAdmin()) return TRUE; @@ -1150,20 +999,21 @@ function benutzerModerator() { if (isExternalDatabase()) return FALSE; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT COUNT(*)" . "\n FROM #__sportsmanager_moderator" . "\n WHERE moderator_user_id = $user_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $gefunden = $db->loadResult(); return !empty($gefunden); } -function benutzerZugriff($zugriff, $joomlaAdminIgnorieren = FALSE) { - $db = & getDatabase(); +function benutzerZugriff($zugriff, $joomlaAdminIgnorieren = FALSE) +{ + $db = getDatabase(); if (!$joomlaAdminIgnorieren && benutzerJoomlaAdmin()) return TRUE; @@ -1171,31 +1021,32 @@ function benutzerZugriff($zugriff, $joomlaAdminIgnorieren = FALSE) { if (isExternalDatabase()) return FALSE; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT COUNT(*)" . "\n FROM #__sportsmanager_moderator" . "\n INNER JOIN #__sportsmanager_moderator_zugriff USING (moderator_id)" . "\n WHERE moderator_user_id = $user_id AND #__sportsmanager_moderator_zugriff.zugriff = '" . $db->escape($zugriff) . "'"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $gefunden = $db->loadResult(); return !empty($gefunden); } -function benutzerIndividualwettbewerbModerator($individualwettbewerb_id = NULL) { - $db = & getDatabase(); +function benutzerIndividualwettbewerbModerator($individualwettbewerb_id = NULL) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb INNER JOIN #__sportsmanager_individualwettbewerb ON individualwettbewerb_id = berechtigt_individualwettbewerb_id WHERE berechtigt_user_id = $user_id"; if ($individualwettbewerb_id != NULL) $query .= " AND berechtigt_individualwettbewerb_id = $individualwettbewerb_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1205,18 +1056,19 @@ function benutzerIndividualwettbewerbModerator($individualwettbewerb_id = NULL) return true; } -function benutzerVeranstalterModerator($veranstalter_id = NULL) { - $db = & getDatabase(); +function benutzerVeranstalterModerator($veranstalter_id = NULL) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id"; if ($veranstalter_id != NULL) $query .= " AND berechtigt_veranstalter_id = $veranstalter_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1226,18 +1078,19 @@ function benutzerVeranstalterModerator($veranstalter_id = NULL) { return true; } -function benutzerVeranstaltungModerator($veranstaltung_id = NULL) { - $db = & getDatabase(); +function benutzerVeranstaltungModerator($veranstaltung_id = NULL) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; if ($veranstaltung_id != NULL) $query .= " AND berechtigt_veranstaltung_id = $veranstaltung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1247,39 +1100,41 @@ function benutzerVeranstaltungModerator($veranstaltung_id = NULL) { return true; } -function benutzerVeranstaltungIdsModerator() { - $db = & getDatabase(); +function benutzerVeranstaltungIdsModerator() +{ + $db = getDatabase(); if (isExternalDatabase()) return array(); - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT DISTINCT veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); $ids = array(); foreach ($rows as $row) - array_push($ids, $row->veranstaltung_id); + $ids[] = $row->veranstaltung_id; return $ids; } -function benutzerTurnierModerator($turnier_id = NULL) { - $db = & getDatabase(); +function benutzerTurnierModerator($turnier_id = NULL) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier INNER JOIN #__sportsmanager_turnier ON turnier_id = berechtigt_turnier_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; if ($turnier_id != NULL) $query .= " AND berechtigt_turnier_id = $turnier_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1289,16 +1144,17 @@ function benutzerTurnierModerator($turnier_id = NULL) { return true; } -function benutzerMannschaftModerator($team_id) { - $db = & getDatabase(); +function benutzerMannschaftModerator($team_id) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $team_id AND berechtigt_user_id = $user_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1308,18 +1164,19 @@ function benutzerMannschaftModerator($team_id) { return true; } -function benutzerVereinModerator($verein_id = NULL) { - $db = & getDatabase(); +function benutzerVereinModerator($verein_id = NULL) +{ + $db = getDatabase(); if (isExternalDatabase()) return false; - $user_id = JFactory::getUser()->id; + $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein INNER JOIN #__sportsmanager_verein ON berechtigt_verein_id = verein_id WHERE NOT ausgetreten AND berechtigt_user_id = $user_id"; if ($verein_id != NULL) $query .= " AND berechtigt_verein_id = $verein_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1329,8 +1186,9 @@ function benutzerVereinModerator($verein_id = NULL) { return true; } -function currentUserHasAccessToDetails() { - $db = & getDatabase(); +function currentUserHasAccessToDetails() +{ + $db = getDatabase(); if (benutzerModerator()) return true; @@ -1338,10 +1196,10 @@ function currentUserHasAccessToDetails() { if (isExternalDatabase()) return false; - $user_id = isJson() ? getUserID() : JFactory::getUser()->id; + $user_id = isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1350,7 +1208,7 @@ function currentUserHasAccessToDetails() { $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein, #__sportsmanager_verein WHERE verein_id = berechtigt_verein_id AND NOT ausgetreten AND berechtigt_user_id = $user_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1359,7 +1217,7 @@ function currentUserHasAccessToDetails() { $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_user_id = $user_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1369,7 +1227,8 @@ function currentUserHasAccessToDetails() { return false; } -function administrationFooter() { +function administrationFooter(): void +{ if (benutzerModerator() || benutzerVeranstaltungModerator() || benutzerTurnierModerator() || benutzerIndividualwettbewerbModerator()) $benutzer_zugriff = 2; else if (benutzerVereinModerator() || benutzerVeranstalterModerator()) @@ -1381,12 +1240,13 @@ function administrationFooter() { HTML_sportsmanager::administrationFooter(); } -function einstellungswert($name) { - $db = & getDatabase(); +function einstellungswert($name) +{ + $db = getDatabase(); $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = '$name'"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1395,14 +1255,13 @@ function einstellungswert($name) { return $rows[0]->wert; } -function aktuelleBegegnungen($pineingabe = FALSE) { - $db = & getDatabase(); +function aktuelleBegegnungen($pineingabe = FALSE): void +{ + $db = getDatabase(); global $params; - $jinput = JFactory::getApplication()->input; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - - $praesentation = $jinput->get('praesentation', 0, 'INT'); - $aktualisieren = $jinput->get('aktualisieren', 0, 'INT'); + $praesentation = $jInput->get('praesentation', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -1411,7 +1270,7 @@ function aktuelleBegegnungen($pineingabe = FALSE) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -1425,7 +1284,7 @@ function aktuelleBegegnungen($pineingabe = FALSE) { . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . (" AND saison_id = $filter_saison_id") . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -1448,7 +1307,7 @@ function aktuelleBegegnungen($pineingabe = FALSE) { . "\n )" . "\n ), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $pin_begegnungen = $db->loadResult(); @@ -1459,50 +1318,47 @@ function aktuelleBegegnungen($pineingabe = FALSE) { } if (isJson()) { - if ($jinput->get('jahr') != '' && $jinput->get('monat') != '') { + if ($jInput->get('jahr') != '' && $jInput->get('monat') != '') { JSON_sportsmanager::JSON( - begegnungenAnzeigen(NULL, NULL, NULL, 0,false, false, false, '', false, true, $praesentation, $jinput->get('jahr'), $jinput->get('monat')) + begegnungenAnzeigen(NULL, NULL, NULL, 0, false, false, false, '', false, true, $praesentation, $jInput->get('jahr'), $jInput->get('monat')) ); } else { JSON_sportsmanager::JSON([ - 'running_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation), - 'next_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation), - 'finished_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation) + 'running_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation), + 'next_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation), + 'finished_matches' => begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation) ]); } } else { HTML_sportsmanager::aktuelleBegegnungenHeader($params->get('titel'), $params->get('beschreibung'), $ticker_anzeigen, $pineingabe_anzeigen); if ($praesentation == 0) { - if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true) > 0 && $aktualisieren == 0) - $aktualisieren = 60; - begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_MATCHES_THE_LAST_7_DAYS'), true, true); - begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_MATCHES_THE_NEXT_14_DAYS'), false, true); + begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_LAST_7_DAYS'), true, true); + begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_NEXT_14_DAYS'), false, true); administrationFooter(); } else { - echo "\r\n"; - echo "\r\n\r\n
\r\n"; - if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) - begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); - else if ($aktualisieren == 0) - $aktualisieren = 60; - echo "\r\n"; - begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); + echo "\r\n"; + echo "\r\n\r\n\r\n\r\n
\r\n"; + if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) + begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); + echo "\r\n"; + begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); echo "
\r\n"; } } } -function veranstaltungen() { - $db = & getDatabase(); +function veranstaltungen(): void +{ + $db = getDatabase(); global $params; - $jinput = JFactory::getApplication()->input; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $praesentation = $jinput->get('praesentation', 0, 'INT'); - $aktualisieren = $jinput->get('aktualisieren', 0, 'INT'); - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $praesentation = $jInput->get('praesentation', 0, 'INT'); + $aktualisieren = $jInput->get('aktualisieren', 0, 'INT'); + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); } $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -1511,7 +1367,7 @@ function veranstaltungen() { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -1533,7 +1389,7 @@ function veranstaltungen() { . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . (" AND saison_id = $filter_saison_id") . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -1547,9 +1403,8 @@ function veranstaltungen() { // directly show if where is only one veranstaltung if (count($veranstaltungen) == 1) { // es gibt nur eine Veranstaltung -> direkt einsteigen - $jinput->set('veranstaltungid', $veranstaltungen[0]->veranstaltung_id); + $jInput->set('veranstaltungid', $veranstaltungen[0]->veranstaltung_id); veranstaltung(); - //redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungen[0]->veranstaltung_id); return; } @@ -1562,7 +1417,7 @@ function veranstaltungen() { . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -1571,11 +1426,12 @@ function veranstaltungen() { $json = []; foreach ($veranstaltungen as $veranstaltung) { $competition = [ - 'veranstaltung' => $veranstaltung, - 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0), - 'tabelle' => NULL + 'veranstaltung' => $veranstaltung, + 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0), + 'tabelle' => NULL ]; if ($veranstaltung->tabellenwertung != 0) { + $spieltag = null; // TODO: spieltag was not defined before, not sure what it should be $competition['tabelle'] = tabelle($veranstaltung, $spieltag, true); } $json[] = $competition; @@ -1583,7 +1439,7 @@ function veranstaltungen() { echo json_encode($json); } else { if ($praesentation == 1 || $praesentation == 2) - echo "\r\n\r\n"; + echo "
\r\n\r\n"; foreach ($veranstaltungen as $veranstaltung) { if ($praesentation == 1 || $praesentation == 2) @@ -1601,12 +1457,12 @@ function veranstaltungen() { echo "\r\n"; if ($praesentation == 2 || $praesentation == 3) { if ($praesentation == 3) - echo "
\r\n"; - echo "\r\n\r\n
\r\n"; - if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) - begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, JText::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); - echo "\r\n"; - begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, JText::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); + echo "\r\n"; + echo "\r\n\r\n\r\n"; } @@ -1621,13 +1477,14 @@ function veranstaltungen() { } } -function veranstaltung() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function veranstaltung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -1636,7 +1493,7 @@ function veranstaltung() { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -1653,16 +1510,16 @@ function veranstaltung() { $filter_saison_id = $saisons[0]->saison_id; } - $id = $jinput->get('veranstaltungid', 0, 'INT'); + $id = $jInput->get('veranstaltungid', 0, 'INT'); if ($id == 0) die("Missing id!"); settype($id, 'integer'); - $spieltag = $jinput->get('spieltag', 0, 'INT'); + $spieltag = $jInput->get('spieltag', 0, 'INT'); // Veranstaltung ermitteln $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1672,8 +1529,8 @@ function veranstaltung() { if (isJson()) { $json = [ - 'veranstaltung' => $veranstaltung, - 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0) + 'veranstaltung' => $veranstaltung, + 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0) ]; if ($veranstaltung->tabellenwertung != 0) { $table = tabelle($veranstaltung, $spieltag, true); @@ -1689,7 +1546,7 @@ function veranstaltung() { . "\n WHERE status > 0" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -1708,7 +1565,7 @@ function veranstaltung() { } // Anzeigen - HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $filter_saison_id); + HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id); if ($veranstaltung->tabellenwertung != 0) tabelle($veranstaltung, $spieltag, true); @@ -1718,16 +1575,18 @@ function veranstaltung() { } } -function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = 0) { - $db = & getDatabase(); +function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = 0) +{ + $db = getDatabase(); $modus_id = $veranstaltung->modus_id; $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); + $modus = null; if (count($rows) == 1) $modus = $rows[0]; @@ -1740,7 +1599,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_spielpunkte != 0 OR gast_spielpunkte != 0) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)" . "\n ORDER BY spieltag DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $spieltage = $db->loadObjectList(); @@ -1788,13 +1647,13 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = $query .= "\n ORDER BY gesamtpunkte DESC, teamname"; } $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); if (isJson()) { - return JSON_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation); + return JSON_sportsmanager::tabelleAnzeigen($modus, $teams); } else { HTML_sportsmanager::tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation); } @@ -1804,30 +1663,27 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id" . "\n ORDER BY ISNULL(platz), platz, teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); if (isJson()) { - return JSON_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation); + return JSON_sportsmanager::tabelleEigeneAnzeigen($modus, $teams); } else { - HTML_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation); + HTML_sportsmanager::tabelleEigeneAnzeigen($veranstaltung, $teams, $alleine_angezeigt, $praesentation); } } + return ""; } -function veranstaltungenTicker($aktuelle_saison_anzeigen = false) { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function veranstaltungenTicker($aktuelle_saison_anzeigen = false): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); - - $type = $jinput->get('type', '', 'RAW'); - $day = $jinput->get('day', '', 'RAW'); - $currentpage = $jinput->get('currentpage', '', 'RAW'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -1836,7 +1692,7 @@ function veranstaltungenTicker($aktuelle_saison_anzeigen = false) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -1864,14 +1720,13 @@ function veranstaltungenTicker($aktuelle_saison_anzeigen = false) { . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . (" AND saison_id = $filter_saison_id"); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); $id = null; $logo_url = null; - $bild_identisch = true; foreach ($veranstaltungen as $veranstaltung) { if ($id == null) { $id = $veranstaltung->veranstaltung_id; @@ -1881,7 +1736,6 @@ function veranstaltungenTicker($aktuelle_saison_anzeigen = false) { if ($logo_url != $veranstaltung->ticker_logo_url || !bildIdentisch("mannschaftswettbewerbe/ticker_logo", $id, "mannschaftswettbewerbe/ticker_logo", $veranstaltung->veranstaltung_id)) { $id = null; $logo_url = null; - $bild_identisch = false; break; } } @@ -1890,18 +1744,16 @@ function veranstaltungenTicker($aktuelle_saison_anzeigen = false) { jexit(); } -function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); - $type = $jinput->get('type', '', 'RAW'); - $day = $jinput->get('day', '', 'RAW'); - $currentpage = $jinput->get('currentpage', '', 'RAW'); + $type = $jInput->get('type', '', 'RAW'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -1910,7 +1762,7 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -1933,10 +1785,9 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { $filter_saison_id = 0; } - if (strstr($type, 'matchdetail') !== false) { + if (str_contains($type, 'matchdetail')) { $veranstaltungen = NULL; $tabellen = NULL; - $begegnung_spiele = NULL; $veranstaltung_elimination_index = -1; $details = explode('matchdetail', $type); if (count($details) < 2 || !ctype_digit($details[1])) @@ -1945,7 +1796,6 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { // Begegnung ermitteln $query = "SELECT t1.*, t2.teamname AS heim_name, t2.verein_id AS heim_verein_id, t3.teamname AS gast_name, t3.verein_id AS gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," - // . "\n IF(TIMESTAMPDIFF(SECOND, (SELECT MAX(eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id AND aktion IN (6, 7, 8, 9)), NOW()) <= 45, 1, 0) AS gerade_aktualisiert," . "\n (SELECT IF(aktion NOT IN (0, 3, 4), NULL, tt1.eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" . "\n FROM #__sportsmanager_begegnung AS t1" . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id" @@ -1955,7 +1805,7 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" . "\n WHERE t1.begegnung_id = $begegnung_id AND t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id"); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -1982,7 +1832,7 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n GROUP BY teamspiel_id" . "\n ORDER BY teamspiel_nummer"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnung_spiele = $db->loadObjectList(); @@ -1994,7 +1844,7 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . (" AND saison_id = $filter_saison_id") . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -2018,33 +1868,28 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND NOT ISNULL(platz) AND platz > 0" . "\n ORDER BY platz, teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $tabellen[$index] = $db->loadObjectList(); } $begegnungen = array(); + $ausgetragene_filtern = false; + $auszutragende_filtern = false; + $zwischenergebnisse_filtern = false; if ($type == "allmatches" || $type == "finmatches" || $type == "upcmatches" || $type == "runmatches") { - if ($type == "allmatches") { //if the tab all matches is clicked this script will be called with type='almatches' - $ausgetragene_filtern = false; - $zwischenergebnisse_filtern = false; - $auszutragende_filtern = false; - } elseif ($type == "finmatches") { - $ausgetragene_filtern = false; + if ($type == "finmatches") { $zwischenergebnisse_filtern = true; $auszutragende_filtern = true; } elseif ($type == "upcmatches") { $ausgetragene_filtern = true; $zwischenergebnisse_filtern = true; - $auszutragende_filtern = false; } elseif ($type == "runmatches") { $ausgetragene_filtern = true; - $zwischenergebnisse_filtern = false; $auszutragende_filtern = true; } $query = "SELECT t1.*, t2.teamname AS heim_name, t2.verein_id AS heim_verein_id, t3.teamname AS gast_name, t3.verein_id AS gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," - // . "\n IF(TIMESTAMPDIFF(SECOND, (SELECT MAX(eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id AND aktion IN (6, 7, 8, 9)), NOW()) <= 45, 1, 0) AS gerade_aktualisiert," . "\n (SELECT IF(aktion NOT IN (0, 3, 4), NULL, tt1.eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" . "\n FROM #__sportsmanager_begegnung AS t1" . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id" @@ -2056,13 +1901,12 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "") . "\n ORDER BY IF(zwischenergebnis, 0, IF((heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 2, 1)), IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 0, t1.zeitpunkt) DESC, IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), t1.zeitpunkt, 0), spieltag DESC, heim_name"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); } elseif ($type == "eliminations" && $veranstaltung_elimination_index != -1) { $query = "SELECT t1.*, t2.teamname AS heim_name, t2.verein_id AS heim_verein_id, t3.teamname AS gast_name, t3.verein_id AS gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," - // . "\n IF(TIMESTAMPDIFF(SECOND, (SELECT MAX(eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 WHERE tt1.begegnung_id = t1.begegnung_id AND aktion IN (6, 7, 8, 9)), NOW()) <= 45, 1, 0) AS gerade_aktualisiert," . "\n (SELECT IF(aktion NOT IN (0, 3, 4), NULL, tt1.eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" . "\n FROM #__sportsmanager_begegnung AS t1" . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON t1.spielort_id = s1.spielort_id" @@ -2074,39 +1918,35 @@ function veranstaltungenTickerDaten($aktuelle_saison_anzeigen = false) { . "\n WHERE t2.veranstaltung_id = " . $veranstaltungen[$veranstaltung_elimination_index]->veranstaltung_id . "\n ORDER BY begegnung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); } } - HTML_sportsmanager_ticker::veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $currentpage, $begegnung_spiele); + HTML_sportsmanager_ticker::veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $begegnung_spiele); jexit(); } -function veranstaltungenTickerCSS() { +#[NoReturn] function veranstaltungenTickerCSS(): void +{ header("Content-type: text/css"); HTML_sportsmanager_ticker::veranstaltungenTickerCSS(); jexit(); } -function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { - $jinput = JFactory::getApplication()->input; +#[NoReturn] function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false): void +{ + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $matches = $jinput->get('matches', '', 'RAW'); - $groups = $jinput->get('groups', '', 'RAW'); + $matches = $jInput->get('matches', '', 'RAW'); - $db = & getDatabase(); - global $params; + $db = getDatabase(); - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); - - $type = $jinput->get('type', '', 'RAW'); - $day = $jinput->get('day', '', 'RAW'); - $currentpage = $jinput->get('currentpage', '', 'RAW'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -2115,7 +1955,7 @@ function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -2150,7 +1990,7 @@ function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { $ausgetragene_filtern = true; $zwischenergebnisse_filtern = true; $auszutragende_filtern = false; - } else { // if ($matches == "runmatches") { + } else { $ausgetragene_filtern = true; $zwischenergebnisse_filtern = false; $auszutragende_filtern = true; @@ -2163,7 +2003,7 @@ function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { . "\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 saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : ""); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $matches_timestamp = $db->loadResult(); @@ -2178,14 +2018,13 @@ function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { . "\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 saison_id = $filter_saison_id"); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $groups_timestamp = $db->loadResult(); } else $groups_timestamp = $matches_timestamp; - } - else { + } else { $matches_timestamp = date("Y-m-d H:i"); $groups_timestamp = $matches_timestamp; } @@ -2194,13 +2033,10 @@ function veranstaltungenTickerTimestamp($aktuelle_saison_anzeigen = false) { jexit(); } -function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfenster, $ausgetragene_filtern = false, $auszutragende_filtern = false, $zwischenergebnisse_filtern = false, $titel = "", $umgekehrte_reihenfolge = false, $aus_uebersicht = false, $praesentation = 0, $year = NULL, $month = NULL) { - $db = & getDatabase(); - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - -// $homeTeamSpielort = JFactory::getApplication()->input->getCmd('spielort_heim') == 1; -// var_dump($homeTeamSpielort); - +function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfenster, $ausgetragene_filtern = false, $auszutragende_filtern = false, $zwischenergebnisse_filtern = false, $titel = "", $umgekehrte_reihenfolge = false, $aus_uebersicht = false, $praesentation = 0, $year = NULL, $month = NULL) +{ + $db = getDatabase(); + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); if ($verein_id != NULL) { $query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t2.teamgruppe_id as heim_teamgruppe, t3.teamgruppe_id as gast_teamgruppe, t2.verein_id as heim_verein_id, t3.verein_id as gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," @@ -2220,7 +2056,7 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens . "\n WHERE t5.status > 0 AND (t2.verein_id = $verein_id OR t3.verein_id = $verein_id)" . ($zeitfenster > 0 ? " AND (ABS(DATEDIFF(zeitpunkt, CURDATE())) <= $zeitfenster OR NOT ISNULL(t4.unbestaetigtes_ergebnis_id) OR (heim_punkte = 0 AND gast_punkte = 0 AND (SELECT IF(aktion NOT IN (0, 3, 4), 0, 1) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) = 1))" : "") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "") . "\n ORDER BY t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -2244,14 +2080,14 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens . "\n WHERE t5.status > 0 AND (t1.spielort_id = $spielort_id OR (ISNULL(t1.spielort_id) AND t2.heimspielort_id = $spielort_id))" . ($zeitfenster > 0 ? " AND (ABS(DATEDIFF(zeitpunkt, CURDATE())) <= $zeitfenster OR NOT ISNULL(t4.unbestaetigtes_ergebnis_id) OR (heim_punkte = 0 AND gast_punkte = 0 AND (SELECT IF(aktion NOT IN (0, 3, 4), 0, 1) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) = 1))" : "") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "") . "\n ORDER BY t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $begegnungen = $db->loadObjectList(); $modus = NULL; } else if ($veranstaltung == NULL) { - $homeTeamSpielort = JFactory::getApplication()->input->getCmd('spielort_heim') == 1; + $homeTeamSpielort = Factory::getContainer()->get(SiteApplication::class)->input->getCmd('spielort_heim') == 1; $query = "SELECT t1.*, t2.teamname AS heim_name, t2.teamgruppe_id as heim_teamgruppe, t3.teamgruppe_id as gast_teamgruppe, t3.teamname AS gast_name, t2.verein_id as heim_verein_id, t3.verein_id as gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name," . "\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," . "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE NOT t4.zwischenergebnis AND 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," @@ -2262,7 +2098,7 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens . "\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_spielort AS s1 ON " . ($homeTeamSpielort ? "t2.heimspielort_id" : "t1.spielort_id" ) . " = s1.spielort_id" + . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON " . ($homeTeamSpielort ? "t2.heimspielort_id" : "t1.spielort_id") . " = s1.spielort_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 LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id" @@ -2273,14 +2109,14 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens . "\n ORDER BY t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $begegnungen = $db->loadObjectList(); $modus = NULL; } else { - $homeTeamSpielort = JFactory::getApplication()->input->getCmd('spielort_heim') == 1; + $homeTeamSpielort = Factory::getContainer()->get(SiteApplication::class)->input->getCmd('spielort_heim') == 1; $query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t2.teamgruppe_id as heim_teamgruppe, t3.teamgruppe_id as gast_teamgruppe, t2.verein_id as heim_verein_id, t3.verein_id as gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, s1.name as spielort_name," . "\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," . "\n (SELECT COUNT(*) FROM #__sportsmanager_berechtigt_fuer_team AS tt1 WHERE NOT t4.zwischenergebnis AND 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," @@ -2293,14 +2129,14 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens . "\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_spielort AS s1 ON " . ($homeTeamSpielort ? "t2.heimspielort_id" : "t1.spielort_id" ) . " = s1.spielort_id" + . "\n LEFT JOIN #__sportsmanager_spielort AS s1 ON " . ($homeTeamSpielort ? "t2.heimspielort_id" : "t1.spielort_id") . " = s1.spielort_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 LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id" . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . " AND t2.veranstaltung_id = $veranstaltung->veranstaltung_id" . ($zeitfenster > 0 ? " AND (ABS(DATEDIFF(zeitpunkt, CURDATE())) <= $zeitfenster OR (heim_punkte = 0 AND gast_punkte = 0 AND (SELECT IF(aktion NOT IN (0, 3, 4), 0, 1) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) = 1))" : "") . ($ausgetragene_filtern ? " AND ISNULL(heim_punkte) AND ISNULL(gast_punkte)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0)" : "") . "\n ORDER BY " . ((($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) && $zeitfenster == 0) ? ("t1.spieltag" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", s1.name, ") : "") . "t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -2308,19 +2144,20 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens $modus_id = $veranstaltung->modus_id; $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $rows = $db->loadObjectList(); + $modus = null; if (count($rows) == 1) $modus = $rows[0]; } if (isJson()) { - for ($i = 0; $i < sizeof($begegnungen); $i++) { - $begegnungen[$i]->heim_bild = teamImage($begegnungen[$i]->heim_team_id, $begegnungen[$i]->heim_verein_id); - $begegnungen[$i]->gast_bild = teamImage($begegnungen[$i]->gast_team_id, $begegnungen[$i]->gast_verein_id); - $begegnungen[$i]->spieltag = Rundenbezeichnung($begegnungen[$i]->spieltag, $begegnungen[$i]->unterteilung == 0); - } + for ($i = 0; $i < sizeof($begegnungen); $i++) { + $begegnungen[$i]->heim_bild = teamImage($begegnungen[$i]->heim_team_id, $begegnungen[$i]->heim_verein_id); + $begegnungen[$i]->gast_bild = teamImage($begegnungen[$i]->gast_team_id, $begegnungen[$i]->gast_verein_id); + $begegnungen[$i]->spieltag = Rundenbezeichnung($begegnungen[$i]->spieltag, $begegnungen[$i]->unterteilung == 0); + } return $begegnungen; } else { HTML_sportsmanager::begegnungenAnzeigen($veranstaltung, $modus, $begegnungen, $zeitfenster, $titel, $aus_uebersicht, $praesentation); @@ -2328,14 +2165,15 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens } } -function turniere() { +function turniere(): void +{ global $params; - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_turnier" @@ -2345,7 +2183,7 @@ function turniere() { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -2362,7 +2200,7 @@ function turniere() { $filter_saison_id = $saisons[0]->saison_id; } - HTML_sportsmanager::turniereHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); + HTML_sportsmanager::turniereHeader($params->get('beschreibung'), $saisons, $filter_saison_id); $query = "SELECT #__sportsmanager_turnier.*, GROUP_CONCAT(disziplintitel ORDER BY disziplintitel SEPARATOR ', ') AS disziplinen" . "\n FROM #__sportsmanager_turnier" . "\n INNER JOIN (SELECT turnier_id, turnierdisziplin_id, status, IF(COALESCE(kuerzel, '') <> '', kuerzel, disziplin) AS disziplintitel FROM #__sportsmanager_turnierdisziplin) AS turnierdisziplin USING (turnier_id)" @@ -2370,7 +2208,7 @@ function turniere() { . "\n GROUP BY turnier_id" . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $turniere = $db->loadObjectList(); @@ -2380,15 +2218,16 @@ function turniere() { administrationFooter(); } -function turnierdisziplinen() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function turnierdisziplinen(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $details_anzeigen = currentUserHasAccessToDetails(); - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); - $turnier_id = $jinput->get('turnierid', 0, 'INT'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); + $turnier_id = $jInput->get('turnierid', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_turnier" @@ -2398,7 +2237,7 @@ function turnierdisziplinen() { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -2421,7 +2260,7 @@ function turnierdisziplinen() { . "\n WHERE turnier_id = $turnier_id AND #__sportsmanager_turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0" . kategorieFilter("AND kategorie IN") . ")" . "\n LIMIT 1"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2435,7 +2274,7 @@ function turnierdisziplinen() { . "\n WHERE turnier_id = $turnier_id AND status > 0 AND EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)" . "\n ORDER BY reihenfolge, disziplin, beginn"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $disziplinen = $db->loadObjectList(); @@ -2448,7 +2287,7 @@ function turnierdisziplinen() { . "\n GROUP BY turnier_id" . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2473,43 +2312,17 @@ function turnierdisziplinen() { $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0 AND platz > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $platzierung_anzeigen = $db->loadResult() > 0; - /* Abfrage war erheblich zu langsam bei großem Bestand - $meldungenSpielerIds = array(); - $meldungenSpielerNamen = array(); - $meldungenSpielerBilderAusblenden = array(); - $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 #__sportsmanager_turniermeldung_spieler.spieler_id FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS spieler_id1" - . ", (SELECT #__sportsmanager_turniermeldung_spieler.spieler_id FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS spieler_id2" - . ", (SELECT #__sportsmanager_spieler.bild_ausblenden 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 bild_ausblenden1" - . ", (SELECT #__sportsmanager_spieler.bild_ausblenden 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 bild_ausblenden2" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '0' AND platz <= 3" - . "\n ORDER BY platz, name1, name2"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $meldungen = $db->loadObjectList(); - - foreach ($meldungen as $meldung) { - $meldungenSpielerIds[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array($meldung->spieler_id1) : array($meldung->spieler_id1, $meldung->spieler_id2); - $meldungenSpielerNamen[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array(NichtLeererString($meldung->name1)) : array(NichtLeererString($meldung->name1), NichtLeererString($meldung->name2)); - $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array($meldung->bild_ausblenden1) : array($meldung->bild_ausblenden1, $meldung->bild_ausblenden2); - } - */ $query = "SELECT platz, turniermeldung_id" . "\n FROM #__sportsmanager_turniermeldung" . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '0' AND platz <= 3" . "\n ORDER BY platz, turniermeldung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $meldungen = $db->loadObjectList(); @@ -2522,7 +2335,7 @@ function turnierdisziplinen() { . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '0' AND platz <= 3" . "\n ORDER BY turniermeldung_spieler_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $meldungenSpieler = $db->loadObjectList(); @@ -2543,67 +2356,34 @@ function turnierdisziplinen() { $meldungenSpielerGeschlechter[$turniermeldung_id] = array(); $meldungenSpielerBilderAusblenden[$turniermeldung_id] = array(); } - array_push($meldungenSpielerIds[$turniermeldung_id], $spielerId); - array_push($meldungenSpielerNamen[$turniermeldung_id], $spielername); - array_push($meldungenSpielerGeschlechter[$turniermeldung_id], $spielerGeschlecht); - array_push($meldungenSpielerBilderAusblenden[$turniermeldung_id], $spielerBilderAusblenden); + $meldungenSpielerIds[$turniermeldung_id][] = $spielerId; + $meldungenSpielerNamen[$turniermeldung_id][] = $spielername; + $meldungenSpielerGeschlechter[$turniermeldung_id][] = $spielerGeschlecht; + $meldungenSpielerBilderAusblenden[$turniermeldung_id][] = $spielerBilderAusblenden; } HTML_sportsmanager::turnierdisziplinen($disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $platzierung_anzeigen, $details_anzeigen); } } -function turnierdisziplin() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function turnierdisziplin(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); $details_anzeigen = currentUserHasAccessToDetails(); - $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_turnier" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnier_id)" - . "\n WHERE #__sportsmanager_turnierdisziplin.status > 0" . kategorieFilter("AND kategorie IN") . " AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)" - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - 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_turnier, #__sportsmanager_turnierdisziplin" - . "\n WHERE EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AND" - . "\n #__sportsmanager_turnierdisziplin.turnierdisziplin_id = $id AND #__sportsmanager_turnierdisziplin.status > 0 AND #__sportsmanager_turnier.turnier_id = #__sportsmanager_turnierdisziplin.turnier_id"; - */ $query = "SELECT *" . ", (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AS teilnehmer" . "\n FROM #__sportsmanager_turnierdisziplin" . "\n WHERE turnierdisziplin_id = $id AND status > 0 AND EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)" . "\n ORDER BY reihenfolge, disziplin, beginn"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2618,7 +2398,7 @@ function turnierdisziplin() { . "\n WHERE turnier_id = $disziplin->turnier_id AND turnierdisziplin_id = $id AND status > 0 AND EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)" . "\n LIMIT 1"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2628,42 +2408,19 @@ function turnierdisziplin() { $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0 AND platz > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $platzierung_anzeigen = $db->loadResult() > 0; $meldungen = array(); foreach (array(0, 1, 2, 3, 10) as $rundenstufe) { - /* Abfrage war erheblich zu langsam bei großem Bestand - $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 #__sportsmanager_turniermeldung_spieler.spieler_id FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 0, 1) AS spieler_id1" - . ", (SELECT #__sportsmanager_turniermeldung_spieler.spieler_id FROM #__sportsmanager_turniermeldung_spieler WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id ORDER BY turniermeldung_spieler_id LIMIT 1, 1) AS spieler_id2" - . ", (SELECT #__sportsmanager_spieler.bild_ausblenden 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 bild_ausblenden1" - . ", (SELECT #__sportsmanager_spieler.bild_ausblenden 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 bild_ausblenden2" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = '$rundenstufe'" - . "\n ORDER BY platz, name1, name2"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $meldungen[$rundenstufe] = $db->loadObjectList(); - - foreach ($meldungen[$rundenstufe] as $meldung) { - $meldungenSpielerIds[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array($meldung->spieler_id1) : array($meldung->spieler_id1, $meldung->spieler_id2); - $meldungenSpielerNamen[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array(NichtLeererString($meldung->name1)) : array(NichtLeererString($meldung->name1), NichtLeererString($meldung->name2)); - $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id] = $disziplin->typ == 0 ? array($meldung->bild_ausblenden1) : array($meldung->bild_ausblenden1, $meldung->bild_ausblenden2); - } - */ $query = "SELECT platz, turniermeldung_id" . "\n FROM #__sportsmanager_turniermeldung" . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = '$rundenstufe'" . "\n ORDER BY platz, turniermeldung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $meldungen[$rundenstufe] = $db->loadObjectList(); @@ -2677,7 +2434,7 @@ function turnierdisziplin() { . "\n WHERE turnierdisziplin_id = $id" . "\n ORDER BY turniermeldung_spieler_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $meldungenSpieler = $db->loadObjectList(); @@ -2698,10 +2455,10 @@ function turnierdisziplin() { $meldungenSpielerGeschlechter[$turniermeldung_id] = array(); $meldungenSpielerBilderAusblenden[$turniermeldung_id] = array(); } - array_push($meldungenSpielerIds[$turniermeldung_id], $spielerId); - array_push($meldungenSpielerNamen[$turniermeldung_id], $spielername); - array_push($meldungenSpielerGeschlechter[$turniermeldung_id], $spielerGeschlecht); - array_push($meldungenSpielerBilderAusblenden[$turniermeldung_id], $spielerBilderAusblenden); + $meldungenSpielerIds[$turniermeldung_id][] = $spielerId; + $meldungenSpielerNamen[$turniermeldung_id][] = $spielername; + $meldungenSpielerGeschlechter[$turniermeldung_id][] = $spielerGeschlecht; + $meldungenSpielerBilderAusblenden[$turniermeldung_id][] = $spielerBilderAusblenden; } $spiele = array(); @@ -2711,7 +2468,7 @@ function turnierdisziplin() { . "\n WHERE turnierdisziplin_id = $id AND rundenstufe = '$rundenstufe'" . "\n ORDER BY runde DESC, spiel_nummer"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $spiele[$rundenstufe] = $db->loadObjectList(); @@ -2722,24 +2479,8 @@ function turnierdisziplin() { . "\n FROM #__sportsmanager_turnierdisziplin" . "\n WHERE turnier_id = $turnierid AND status > 0 AND EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)" . "\n ORDER BY reihenfolge, disziplin, beginn"; - /* - $query = "SELECT turnier_id, turnierdisziplin_id" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE " . kategorieFilter("kategorie IN", "AND ") . "EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AND" - . "\n turnier_id = $turnierid AND status > 0" - . "\n ORDER BY reihenfolge, disziplin, kategorie, beginn"; - */ - /* - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)" - . "\n WHERE " . kategorieFilter("kategorie IN", "AND ") . "(SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) > 0" - . " AND #__sportsmanager_turnierdisziplin.status > 0" - . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY #__sportsmanager_turnier.erster_tag DESC, reihenfolge, #__sportsmanager_turnierdisziplin.disziplin, kategorie, beginn"; // LIMIT 6, 18446744073709551615 - */ $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2757,22 +2498,23 @@ function turnierdisziplin() { } } - HTML_sportsmanager::turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $spiele, $vorherige_turnierdisziplin_id, $naechste_turnierdisziplin_id, $platzierung_anzeigen, $filter_saison_id, $details_anzeigen); + HTML_sportsmanager::turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $spiele, $vorherige_turnierdisziplin_id, $naechste_turnierdisziplin_id, $platzierung_anzeigen, $details_anzeigen); } -function spieler() { - $db = & getDatabase(); +function spieler(): void +{ + $db = getDatabase(); global $params; - $jinput = JFactory::getApplication()->input; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; $details_anzeigen = currentUserHasAccessToDetails(); - $beginn = $jinput->get('beginn', 0, 'INT'); - $filter = $jinput->get('filter', '', 'RAW'); - $kategorie = $jinput->get('kategorie', '', 'RAW'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $einstufungid = $jinput->get('einstufungid', 0, 'INT'); - $sortierung = $jinput->get('sortierung', '', 'RAW'); + $beginn = $jInput->get('beginn', 0, 'INT'); + $filter = $jInput->get('filter', '', 'RAW'); + $kategorie = $jInput->get('kategorie', '', 'RAW'); + $veranstaltungid = $jInput->get('veranstaltungid', 0, 'INT'); + $veranstalterid = $jInput->get('veranstalterid', 0, 'INT'); + $einstufungid = $jInput->get('einstufungid', 0, 'INT'); + $sortierung = $jInput->get('sortierung', '', 'RAW'); if ($sortierung == "vorname") $sortierung_query = "vorname, nachname"; else if ($sortierung == "geschlecht") @@ -2796,7 +2538,7 @@ function spieler() { // Veranstaltung ermitteln $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid AND status > 0"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2808,7 +2550,7 @@ function spieler() { // Veranstaltung ermitteln $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2842,7 +2584,7 @@ function spieler() { if ($einstufungid != 0) $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $anzahl_gefundener_spieler = $db->loadResult(); @@ -2874,7 +2616,7 @@ function spieler() { $query .= "\n ORDER BY " . $sortierung_query . "\n LIMIT $beginn, 50"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $spieler = $db->loadObjectList(); @@ -2889,7 +2631,7 @@ function spieler() { . "\n GROUP BY veranstaltung_id" . "\n ORDER BY Year(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -2899,7 +2641,7 @@ function spieler() { . "\n FROM #__sportsmanager_einstufung" . "\n ORDER BY prioritaet"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -2914,7 +2656,7 @@ function spieler() { . "\n WHERE " . kategorieFilter("#__sportsmanager_veranstalter.kategorie IN", "AND ") . "(SELECT COUNT(*) FROM #__sportsmanager_verein WHERE NOT ausgetreten AND #__sportsmanager_verein.veranstalter_id = #__sportsmanager_veranstalter.veranstalter_id) > 0" . "\n ORDER BY veranstalterbezeichnung"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstalter = $db->loadObjectList(); @@ -2924,80 +2666,80 @@ function spieler() { $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT(ISNULL(pseudonym)) AND pseudonym != ''), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["pseudonym"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE NOT ausgetreten), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["verein"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(einstufung_allgemein_id)), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["einstufung_allgemein"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(einstufung_einzel_id)), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["einstufung_einzel"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(einstufung_doppel_id)), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["einstufung_doppel"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_verein WHERE NOT ausgetreten AND NOT ISNULL(veranstalter_id)), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["veranstalter"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_einzel_spiele > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["elo_einzel"] = $db->loadResult() && einstellungswert("spielerliste_elo") == "1"; $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_doppel_spiele > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["elo_doppel"] = $db->loadResult() && einstellungswert("spielerliste_elo") == "1"; - HTML_sportsmanager::spieler($params->get('titel'), $params->get('beschreibung'), $spieler, $sortierung, $statistik, $beginn, $anzahl_gefundener_spieler, $kategorie, $filter, $veranstaltungid, $einstufungid, $veranstaltungen, $veranstalterid, $veranstalter, $einstufungen, $details_anzeigen); + HTML_sportsmanager::spieler($params->get('beschreibung'), $spieler, $sortierung, $statistik, $beginn, $kategorie, $filter, $veranstaltungid, $einstufungid, $veranstaltungen, $veranstalterid, $veranstalter, $einstufungen, $details_anzeigen); administrationFooter(); } -function spielerDetails() { - $db = & getDatabase(); - global $params; +function spielerDetails(): void +{ + $db = getDatabase(); global $content; - $jinput = JFactory::getApplication()->input; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $beginn = $jinput->get('beginn', 0, 'INT'); - $kategorie = $jinput->get('kategorie', '', 'RAW'); - $filter = $jinput->get('filter', '', 'RAW'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $einstufungid = $jinput->get('einstufungid', 0, 'INT'); - $sortierung = $jinput->get('sortierung', '', 'RAW'); - $elo_detailliert = $jinput->get('elo_detailliert', 0, 'INT'); - $id = $jinput->get('id', 0, 'INT'); + $beginn = $jInput->get('beginn', 0, 'INT'); + $kategorie = $jInput->get('kategorie', '', 'RAW'); + $filter = $jInput->get('filter', '', 'RAW'); + $veranstaltungid = $jInput->get('veranstaltungid', 0, 'INT'); + $veranstalterid = $jInput->get('veranstalterid', 0, 'INT'); + $einstufungid = $jInput->get('einstufungid', 0, 'INT'); + $sortierung = $jInput->get('sortierung', '', 'RAW'); + $elo_detailliert = $jInput->get('elo_detailliert', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); $jahr = date("Y"); @@ -3006,13 +2748,13 @@ function spielerDetails() { $berechtigt_spieler_aendern = benutzerZugriff("spieler_aendern"); $details_anzeigen = currentUserHasAccessToDetails(); - $unabhaengige_ansicht = $content != "players" || $jinput->get('ua', 0, 'INT') != 0; + $unabhaengige_ansicht = $content != "players" || $jInput->get('ua', 0, 'INT') != 0; if ($veranstaltungid != 0 && $veranstaltungid != -1) { // Veranstaltung ermitteln $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3030,13 +2772,12 @@ function spielerDetails() { . "\n FROM #__sportsmanager_spieler" . "\n WHERE #__sportsmanager_spieler.spieler_id = $id" . ($berechtigt_spieler_aendern ? "" : " AND NOT ISNULL(aktueller_verein_id)"); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); if (count($rows) < 1) { redirectSportsManagerURL(NULL, "Zum Spieler sind in dieser Ansicht keine Daten vorhanden."); - return; } $spieler = $rows[0]; @@ -3047,7 +2788,7 @@ function spielerDetails() { . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" . "\n ORDER BY vereinsname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $vereine = $db->loadObjectList(); @@ -3059,7 +2800,7 @@ function spielerDetails() { . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" . "\n ORDER BY veranstalterbezeichnung"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstalter = $db->loadObjectList(); @@ -3069,7 +2810,7 @@ function spielerDetails() { . "\n FROM #__sportsmanager_einstufung" . "\n ORDER BY prioritaet"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3099,7 +2840,7 @@ function spielerDetails() { if ($einstufungid != 0) $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $anzahl_gefundener_spieler = $db->loadResult(); @@ -3142,7 +2883,7 @@ function spielerDetails() { $query .= "\n ORDER BY " . $sortierung_query . "\n LIMIT $beginn, 50"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3169,7 +2910,7 @@ function spielerDetails() { $query = "SELECT spieler_id, vorname, nachname" . "\n FROM #__sportsmanager_spieler"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3181,7 +2922,7 @@ function spielerDetails() { $query = "SELECT team_id, teamname" . "\n FROM #__sportsmanager_team"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3193,7 +2934,7 @@ function spielerDetails() { $query = "SELECT veranstaltung_id, bezeichnung" . "\n FROM #__sportsmanager_veranstaltung"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3206,7 +2947,7 @@ function spielerDetails() { . "\n FROM #__sportsmanager_turnierdisziplin" . "\n INNER JOIN #__sportsmanager_turnier USING (turnier_id)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3218,7 +2959,7 @@ function spielerDetails() { $query = "SELECT individualwettbewerb_id, bezeichnung" . "\n FROM #__sportsmanager_individualwettbewerb"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3235,7 +2976,7 @@ function spielerDetails() { . "\n WHERE #__sportsmanager_rangliste.status > 0 AND #__sportsmanager_rangliste_punkte.spieler_id = $id AND #__sportsmanager_rangliste.rangliste_id = #__sportsmanager_rangliste_punkte.rangliste_id" . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $ranglistenplatzierungen = $db->loadObjectList(); @@ -3246,10 +2987,9 @@ function spielerDetails() { . "\n FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung, #__sportsmanager_turnierdisziplin, #__sportsmanager_turnier" . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" . "\n WHERE #__sportsmanager_turniermeldung_spieler.spieler_id = $id AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id AND #__sportsmanager_turnierdisziplin.status > 0 AND rundenstufe = 0 AND platz > 0 AND #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND #__sportsmanager_turnierdisziplin.turnier_id = #__sportsmanager_turnier.turnier_id" -// . "\n ORDER BY saisonbezeichnung DESC, reihenfolge, disziplin, kategorie, DATE(beginn) DESC"; . "\n ORDER BY saisonbezeichnung DESC, erster_tag DESC, turnierbezeichnung, reihenfolge, disziplin"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $turnierplatzierungen = $db->loadObjectList(); @@ -3263,7 +3003,7 @@ function spielerDetails() { . "\n GROUP BY saison_id, teamname" . "\n ORDER BY saisonbezeichnung DESC, t3.reihenfolge, t3.bezeichnung, t1.teamname, t3.kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); @@ -3288,55 +3028,56 @@ function spielerDetails() { $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_verein WHERE NOT ausgetreten), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["verein"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(spielernr) AND spielernr <> ''), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["spielernr_national"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["spielernr_international"] = $db->loadResult(); $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_einzel_spiele > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["elo_einzel"] = $db->loadResult() && $elo_anzeigen; $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE elo_doppel_spiele > 0), 1, 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $statistik["elo_doppel"] = $db->loadResult() && $elo_anzeigen; if (isJson()) { - JSON_sportsmanager::spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $sortierung, $vorheriger_spieler_id, $naechster_spieler_id, $elo_detailliert, $statistik, $beginn, $kategorie, $einstufungen, $filter, $veranstaltungid, $veranstalterid, $einstufungid, $unabhaengige_ansicht, $details_anzeigen, $lizenz_anzeigen); + JSON_sportsmanager:: spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $elo_detailliert, $statistik, $einstufungen); } else { HTML_sportsmanager::spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $sortierung, $vorheriger_spieler_id, $naechster_spieler_id, $elo_detailliert, $statistik, $beginn, $kategorie, $einstufungen, $filter, $veranstaltungid, $veranstalterid, $einstufungid, $unabhaengige_ansicht, $details_anzeigen, $lizenz_anzeigen); } } -function mannschaften($ansicht_vereinigt) { - $db = & getDatabase(); +function mannschaften($ansicht_vereinigt): void +{ + $db = getDatabase(); global $params; - $jinput = JFactory::getApplication()->input; - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -3345,7 +3086,7 @@ function mannschaften($ansicht_vereinigt) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -3364,8 +3105,9 @@ function mannschaften($ansicht_vereinigt) { if (!isJson()) { - HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); + HTML_sportsmanager::teamsHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); } + $json = []; if ($ansicht_vereinigt) { $query = "SELECT teamname, teamgruppe_id, team_id, veranstaltung_id, verein_id, vereinsname, #__sportsmanager_spielort.name, #__sportsmanager_veranstaltung.bezeichnung" . "\n FROM #__sportsmanager_team" @@ -3377,14 +3119,14 @@ function mannschaften($ansicht_vereinigt) { . "\n GROUP BY IF(teamgruppe_id <> 0 AND NOT ISNULL(teamgruppe_id), teamgruppe_id, team_id)" . "\n ORDER BY teamname, bezeichnung"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); if (isJSON()) { - $json = JSON_sportsmanager::mannschaften(NULL, $teams); + $json = JSON_sportsmanager::mannschaften(NULL, $teams); } else { - HTML_sportsmanager::mannschaften(NULL, $teams); + HTML_sportsmanager::mannschaften(NULL, $teams); } } else { $query = "SELECT #__sportsmanager_veranstaltung.*, #__sportsmanager_veranstalter.veranstalterbezeichnung" @@ -3395,7 +3137,7 @@ function mannschaften($ansicht_vereinigt) { . "\n GROUP BY veranstaltung_id" . "\n ORDER BY reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $veranstaltungen = $db->loadObjectList(); @@ -3408,21 +3150,20 @@ function mannschaften($ansicht_vereinigt) { . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id" . "\n ORDER BY teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); $veranstaltung->teams = $teams; if (isJson()) { - $json[] = JSON_sportsmanager::mannschaften($veranstaltung, $teams); + $json[] = JSON_sportsmanager::mannschaften($veranstaltung, $teams); } else { - HTML_sportsmanager::mannschaften($veranstaltung, $teams); + HTML_sportsmanager::mannschaften($veranstaltung, $teams); } } } - if (isJson()) { JSON_sportsmanager::JSON($json); } else { @@ -3432,17 +3173,18 @@ function mannschaften($ansicht_vereinigt) { } -function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) { abortWithError("Missing id!"); } - $filter_saison_id = $jinput->get('filter_saison_id', 0, 'INT'); + $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'); + $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); $query = "SELECT saison_id, saisonbezeichnung" . "\n FROM #__sportsmanager_veranstaltung" @@ -3451,7 +3193,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n GROUP BY saison_id" . "\n ORDER BY saisonbezeichnung DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $saisons = $db->loadObjectList(); @@ -3481,7 +3223,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n WHERE team_id = $id" . "\n ORDER BY teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3498,7 +3240,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n FROM #__sportsmanager_veranstaltung" . "\n WHERE veranstaltung_id = $veranstaltungid AND status > 0"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3515,7 +3257,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n WHERE team_id != $id AND teamgruppe_id = $teamgruppe_id AND #__sportsmanager_veranstaltung.status > 0" . "\n ORDER BY bezeichnung"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $weitere_veranstaltungen = $db->loadObjectList(); @@ -3539,7 +3281,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n GROUP BY spieler_id" . "\n ORDER BY nachname, vorname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $mitglieder = $db->loadObjectList(); @@ -3553,7 +3295,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n WHERE (#__sportsmanager_team.team_id = $id OR #__sportsmanager_team.teamgruppe_id = $teamgruppe_id) AND (unterteilung = 0 OR unterteilung = 1)" . "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $mitgliedschaften = $db->loadObjectList(); @@ -3563,7 +3305,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { if (!isset($spielberechtigungen[$mitglied->spieler_id])) { $spielberechtigungen[$mitglied->spieler_id] = array(); } - array_push($spielberechtigungen[$mitglied->spieler_id], array($mitgliedschaft->veranstaltung_id, $mitgliedschaft->unterteilung, !empty($mitgliedschaft->mitglied_von_team_id) ? $mitgliedschaft->erster_spieltag : -1, !empty($mitgliedschaft->mitglied_von_team_id) ? $mitgliedschaft->letzter_spieltag : -1)); + $spielberechtigungen[$mitglied->spieler_id][] = array($mitgliedschaft->veranstaltung_id, $mitgliedschaft->unterteilung, !empty($mitgliedschaft->mitglied_von_team_id) ? $mitgliedschaft->erster_spieltag : -1, !empty($mitgliedschaft->mitglied_von_team_id) ? $mitgliedschaft->letzter_spieltag : -1); } } } @@ -3576,7 +3318,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n GROUP BY spieler_id" . "\n ORDER BY vorname, nachname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $mitglieder_sortiert_vorname = $db->loadObjectList(); @@ -3628,7 +3370,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n WHERE #__sportsmanager_spieler.spieler_id = werte.spieler_id" . "\n ORDER BY nachname, vorname"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $mitglieder_statistiken = $db->loadObjectList(); } */ @@ -3636,7 +3378,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { // Teamansprechpartner ermitteln $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $teamansprechpartner = $db->loadObjectList(); @@ -3661,7 +3403,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n WHERE heim_team_id = $id OR gast_team_id = $id OR t2.teamgruppe_id = $teamgruppe_id OR t3.teamgruppe_id = $teamgruppe_id" . "\n ORDER BY reihenfolge, letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung, kategorie, IF ((unterteilung = 0 OR unterteilung = 1) AND (heim_punkte != 0 OR gast_punkte != 0), 0, 1), IF ((unterteilung = 0 OR unterteilung = 1) AND (heim_punkte != 0 OR gast_punkte != 0), spieltag, 0), IF ((unterteilung = 0 OR unterteilung = 1) AND (heim_punkte != 0 OR gast_punkte != 0), 0, zeitpunkt), zeitpunkt, spieltag, gegner"; // Sortierung nach Spieltag für den Fall, dass noch keine Zeitpunkte eingetragen sind $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -3686,7 +3428,7 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { . "\n ORDER BY teamname"; } $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3709,28 +3451,29 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false) { if (isJson()) { JSON_sportsmanager::JSON( - JSON_sportsmanager::mannschaftDetails($veranstaltung, $team, $mitglieder, $mailverteiler, $mitglieder_statistiken, $teamansprechpartner, $begegnungen, $vorheriges_team_id, $naechstes_team_id, $team_moderator, $details_anzeigen, $ansprechpartner_anzeigen, $weitere_veranstaltungen, $veranstaltungsbezeichnungen, $spielberechtigungen, $ansicht_vereinigt, $ist_vergangen) + JSON_sportsmanager::mannschaftDetails($veranstaltung, $team, $mitglieder, $teamansprechpartner, $begegnungen, $ansprechpartner_anzeigen, $veranstaltungsbezeichnungen) ); } else { - HTML_sportsmanager::mannschaftDetails($veranstaltung, $team, $mitglieder, $mailverteiler, $mitglieder_statistiken, $teamansprechpartner, $begegnungen, $vorheriges_team_id, $naechstes_team_id, $team_moderator, $details_anzeigen, $ansprechpartner_anzeigen, $weitere_veranstaltungen, $veranstaltungsbezeichnungen, $spielberechtigungen, $ansicht_vereinigt, $ist_vergangen); + HTML_sportsmanager::mannschaftDetails($veranstaltung, $team, $mitglieder, $mailverteiler, $mitglieder_statistiken, $teamansprechpartner, $begegnungen, $vorheriges_team_id, $naechstes_team_id, $team_moderator, $details_anzeigen, $ansprechpartner_anzeigen, $weitere_veranstaltungen, $veranstaltungsbezeichnungen, $spielberechtigungen, $ansicht_vereinigt, $ist_vergangen); } } -function veranstaltungBegegnungeniCal() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function veranstaltungBegegnungeniCal(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); - $trigger = $jinput->get('alarm', 0, 'INT'); + $trigger = $jInput->get('alarm', 0, 'INT'); // Team ermitteln $query = "SELECT *" . "\n FROM #__sportsmanager_veranstaltung" . "\n WHERE veranstaltung_id = $id AND status > 0"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3753,7 +3496,7 @@ function veranstaltungBegegnungeniCal() { . "\n WHERE t5.veranstaltung_id = $id" . "\n ORDER BY zeitpunkt, heim_teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -3761,14 +3504,15 @@ function veranstaltungBegegnungeniCal() { begegnungeniCal($veranstaltung->bezeichnung, SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id, -1), $begegnungen, $trigger); } -function teamBegegnungeniCal() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function teamBegegnungeniCal(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); - $trigger = $jinput->get('alarm', 0, 'INT'); + $trigger = $jInput->get('alarm', 0, 'INT'); // Team ermitteln $query = "SELECT *" @@ -3776,7 +3520,7 @@ function teamBegegnungeniCal() { . "\n LEFT JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" . "\n WHERE team_id = $id AND status > 0"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3799,7 +3543,7 @@ function teamBegegnungeniCal() { . "\n WHERE heim_team_id = $id OR gast_team_id = $id" . ($team->teamgruppe_id != NULL ? " OR t2.teamgruppe_id = $team->teamgruppe_id OR t3.teamgruppe_id = $team->teamgruppe_id" : "") . "\n ORDER BY zeitpunkt, heim_teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -3807,21 +3551,22 @@ function teamBegegnungeniCal() { begegnungeniCal($team->teamname, SportsManagerURL('&task=team_begegnungen_ical&id=' . $team->team_id, -1), $begegnungen, $trigger); } -function vereinBegegnungeniCal() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function vereinBegegnungeniCal(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); - $trigger = $jinput->get('alarm', 0, 'INT'); + $trigger = $jInput->get('alarm', 0, 'INT'); // Verein ermitteln $query = "SELECT *" . "\n FROM #__sportsmanager_verein" . "\n WHERE verein_id = $id AND NOT ausgetreten"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3844,7 +3589,7 @@ function vereinBegegnungeniCal() { . "\n WHERE t5.status > 0 AND (t2.verein_id = $id OR t3.verein_id = $id) AND ABS(DATEDIFF(zeitpunkt, CURDATE())) <= 366" . "\n ORDER BY zeitpunkt, heim_teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -3852,21 +3597,22 @@ function vereinBegegnungeniCal() { begegnungeniCal($verein->vereinsname, SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id, -1), $begegnungen, $trigger); } -function spielortBegegnungeniCal() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function spielortBegegnungeniCal(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); - $trigger = $jinput->get('alarm', 0, 'INT'); + $trigger = $jInput->get('alarm', 0, 'INT'); // Verein ermitteln $query = "SELECT *" . "\n FROM #__sportsmanager_spielort" . "\n WHERE status > 0 AND spielort_id = $id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3889,7 +3635,7 @@ function spielortBegegnungeniCal() { . "\n WHERE t5.status > 0 AND (#__sportsmanager_begegnung.spielort_id = $id OR (ISNULL(#__sportsmanager_begegnung.spielort_id) AND t2.heimspielort_id = $id)) AND ABS(DATEDIFF(zeitpunkt, CURDATE())) <= 366" . "\n ORDER BY zeitpunkt, heim_teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -3897,7 +3643,8 @@ function spielortBegegnungeniCal() { begegnungeniCal($spielort->name, SportsManagerURL('&task=spielort_begegnungen_ical&id=' . $id, -1), $begegnungen, $trigger); } -function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) { +#[NoReturn] function begegnungeniCal($titel, $url, $begegnungen, $trigger = 0): void +{ ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind header('Content-type: text/calendar; charset=utf-8'); header('Content-Disposition: inline; filename=calendar.ics'); @@ -3908,14 +3655,11 @@ function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) { echo "X-ORIGINAL-URL:" . $url . "\r\n"; echo "X-WR-CALNAME;VALUE=TEXT:" . $titel . "\r\n"; $dtstamp = gmdate('Ymd') . 'T' . gmdate('His'); -// $dttrans = array("-" => "", " " => "", ":" => ""); foreach ($begegnungen as $begegnung) { echo "BEGIN:VEVENT\r\n"; echo "CLASS:PUBLIC\r\n"; $timestamp = strtotime($begegnung->zeitpunkt); echo "DTSTART:" . gmdate('Ymd', $timestamp) . 'T' . gmdate('His', $timestamp) . "Z\r\n"; -// $zeitpunkt = strtr($begegnung->zeitpunkt, $dttrans); -// echo "DTSTART:" . substr($zeitpunkt, 0, 8) . "T". substr($zeitpunkt, 8) . "Z\r\n"; echo "DURATION:PT2H30M\r\n"; echo "STATUS:" . ($begegnung->verlegung_eingetragen != NULL ? "TENTATIVE" : "CONFIRMED") . "\r\n"; echo "SUMMARY:" . $begegnung->heim_teamname . " vs. " . $begegnung->gast_teamname . ($begegnung->verlegung_eingetragen != NULL ? " (wird verlegt)" : "") . "\r\n"; @@ -3929,8 +3673,7 @@ function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) { $anschrift = (!empty($begegnung->heimspielort_name) ? ($begegnung->heimspielort_name . ", ") : "") . $begegnung->heimspielort_strasse . (!empty($begegnung->heimspielort_strasse) && (!empty($begegnung->heimspielort_plz) || !empty($begegnung->heimspielort_ortsname) || !empty($begegnung->heimspielort_ortsteil)) ? ", " : "") . $begegnung->heimspielort_plz . (!empty($begegnung->heimspielort_plz) ? " " : "") . $begegnung->heimspielort_ortsname . (!empty($begegnung->heimspielort_ortsname) && !empty($begegnung->heimspielort_ortsteil) ? "-" : "") . $begegnung->heimspielort_ortsteil; if (!empty($anschrift)) echo "LOCATION:" . $anschrift . "\r\n"; -// echo "UID:" . md5(uniqid(mt_rand(), true)) . "@sportsmanager\r\n"; - $url = parse_url(JURI::base()); + $url = parse_url(Uri::base()); echo "UID:SM-B" . $begegnung->begegnung_id . rtrim($url["path"], "/") . "@" . $url["host"] . "\r\n"; echo "PRIORITY:5\r\n"; echo "SEQUENCE:" . ($begegnung->heim_spielpunkte != 0 || $begegnung->gast_spielpunkte != 0 ? "1" : "0") . "\r\n"; @@ -3948,21 +3691,21 @@ function begegnungeniCal($titel, $url, &$begegnungen, $trigger = 0) { die(); } -function teamSpielplanXML() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn]function teamSpielplanXML():void { + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); if ($id == 0) die("Missing id!"); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); + $veranstaltungid = $jInput->get('veranstaltungid', 0, 'INT'); if ($veranstaltungid == 0) die("Missing id!"); // Veranstaltung ermitteln $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid AND status > 0" . kategorieFilter("AND kategorie IN"); $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); @@ -3976,13 +3719,13 @@ function teamSpielplanXML() { . "\n WHERE team_id = $id" . "\n ORDER BY teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); if (count($rows) < 1) die("Wrong id!"); -// $team = $rows[0]; + // Begegnungen in der Veranstaltung ermitteln $query = "SELECT t1.*, IF(ISNULL(t1.spielort_id), s2.name, s1.name) as heimspielort_name, IF(ISNULL(t1.spielort_id), s2.url, s1.url) as heimspielort_url, IF(ISNULL(t1.spielort_id), s2.strasse, s1.strasse) as heimspielort_strasse, IF(ISNULL(t1.spielort_id), s2.plz, s1.plz) as heimspielort_plz, IF(ISNULL(t1.spielort_id), s2.ortsname, s1.ortsname) as heimspielort_ortsname, IF(ISNULL(t1.spielort_id), s2.ortsteil, s1.ortsteil) as heimspielort_ortsteil, t4.unbestaetigtes_ergebnis_id," . "\n IF(t1.heim_team_id = $id, t3.teamname, t2.teamname) AS gegner," @@ -3997,7 +3740,7 @@ function teamSpielplanXML() { . "\n WHERE t2.veranstaltung_id = $veranstaltung->veranstaltung_id AND t1.heim_team_id = $id OR t1.gast_team_id = $id" . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, 1), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, t1.spieltag, 0), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, t1.zeitpunkt), " : "") . "t1.zeitpunkt, gegner"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $begegnungen = $db->loadObjectList(); @@ -4016,9 +3759,8 @@ function teamSpielplanXML() { ]> heim_punkte != NULL || $row->gast_punkte != NULL) ? true : false; + $ergebnis_vorhanden = $row->heim_punkte != NULL || $row->gast_punkte != NULL; echo " spieltag . "\">\r\n"; echo " " . ($row->verlegung_eingetragen ? "wird verlegt" : FormatiertesDatum($row->zeitpunkt)) . "\r\n"; echo " " . utf8_encode(htmlspecialchars($row->gegner)) . "\r\n"; @@ -4032,7 +3774,6 @@ function teamSpielplanXML() { echo $row->auswaerts ? ($row->gast_spielpunkte . " : " . $row->heim_spielpunkte) : ($row->heim_spielpunkte . " : " . $row->gast_spielpunkte); echo "\r\n"; echo " \r\n"; - $id++; } ?> @@ -4040,2075 +3781,1834 @@ function teamSpielplanXML() { die(); } - function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zuschneiden) { - $len = strlen($ziel); - if ($len < 4 || $ziel[$len - 4] != ".") - return false; - $ext = strtolower(substr($ziel, $len - 3)); - if ($ext != "jpg" && $ext != "png") - return false; - $quelle_image = $ext == "png" ? imagecreatefrompng($quelle) : imagecreatefromjpeg($quelle); - if ($quelle_image === false) - return false; - $quelle_breite = imagesx($quelle_image); - $quelle_hoehe = imagesy($quelle_image); - if ($quelle_breite == $ziel_breite && $quelle_hoehe == $ziel_hoehe) - return JFile::copy($quelle, $ziel); +function vereine(): void +{ + $db = getDatabase(); + global $params; - $ziel_image = imagecreatetruecolor($ziel_breite, $ziel_hoehe); - $hintergrund = $ext == "png" ? imagecolorallocatealpha($ziel_image, 0, 0, 0, 127) : imagecolorallocate($ziel_image, 64, 64, 64); - imagefill($ziel_image, 0, 0, $hintergrund); - $quelle_proportionen = $quelle_breite / $quelle_hoehe; - $ziel_proportionen = $ziel_breite / $ziel_hoehe; - if ($zuschneiden) { - if ($ziel_proportionen >= $quelle_proportionen) { - $quelle_teilhoehe = round($quelle_breite / $ziel_proportionen); - if (!imagecopyresampled($ziel_image, $quelle_image, 0, 0, 0, round(($quelle_hoehe - $quelle_teilhoehe) / 2), $ziel_breite, $ziel_hoehe, $quelle_breite, $quelle_teilhoehe)) - return false; - } else { - $quelle_teilbreite = round($quelle_hoehe * $ziel_proportionen); - if (!imagecopyresampled($ziel_image, $quelle_image, 0, 0, round(($quelle_breite - $quelle_teilbreite) / 2), 0, $ziel_breite, $ziel_hoehe, $quelle_teilbreite, $quelle_hoehe)) - return false; - } - } else { - if ($ziel_proportionen >= $quelle_proportionen) { - $ziel_teilbreite = round($ziel_hoehe * $quelle_proportionen); - if (!imagecopyresampled($ziel_image, $quelle_image, round(($ziel_breite - $ziel_teilbreite) / 2), 0, 0, 0, $ziel_teilbreite, $ziel_hoehe, $quelle_breite, $quelle_hoehe)) - return false; - } else { - $ziel_teilhoehe = round($ziel_breite / $quelle_proportionen); - if (!imagecopyresampled($ziel_image, $quelle_image, 0, round(($ziel_hoehe - $ziel_teilhoehe) / 2), 0, 0, $ziel_breite, $ziel_teilhoehe, $quelle_breite, $quelle_hoehe)) - return false; - } - } - ob_start(); - if ($ext == "png") { - imagesavealpha($ziel_image, true); - if (!imagepng($ziel_image)) - return false; - } else { - if (!imagejpeg($ziel_image)) - return false; - } - $output = ob_get_contents(); - ob_end_clean(); - JFile::write($ziel, $output); - return true; + $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $organisationAnzeigen = $db->loadResult() > 1; + + $query = "SELECT *, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten" . kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN") + . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen); + + administrationFooter(); +} + +function vereinDetails(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) + die("Missing id!"); + + $vereins_moderator = benutzerVereinModerator($id) || benutzerZugriff("spieler_lesen_erweiterte_daten"); + $details_anzeigen = currentUserHasAccessToDetails(); + $ansprechpartner_anzeigen = einstellungswert("ansprechpartner_ausblenden") != "1" || $details_anzeigen; + + // Verein ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten AND verein_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $verein = $rows[0]; + + // Mitglieder ermitteln + $query = "SELECT * FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $mitglieder = $db->loadObjectList(); + + $query = "SELECT vorname, nachname, email" + . "\n FROM #__sportsmanager_mitglied_von_verein" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE verein_id = $id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND email != ''" + . "\n ORDER BY vorname, nachname, email"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $mailverteiler = array(); + $mailverteiler["u"] = ""; + $mailverteiler["p"] = ""; + foreach ($rows as $row) { + $mailverteiler["u"] .= (!empty($mailverteiler["u"]) ? "; " : "") . urlencode($row->email); + $mailverteiler["p"] .= (!empty($mailverteiler["p"]) ? ", " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; } - function bildAnpassen($typ, $id = 0) { - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; + // Vereinsansprechpartner ermitteln + $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein->verein_id ORDER BY vereinsansprechpartner_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereinsansprechpartner = $db->loadObjectList(); - if (empty($id)) - $id = $jinput->get('id', 0, 'INT'); - $fixed_width = $jinput->get('w', 0, 'INT'); - $fixed_height = $jinput->get('h', 0, 'INT'); - $max_width = $jinput->get('mw', 0, 'INT'); - $max_height = $jinput->get('mh', 0, 'INT'); - $no_cache = $jinput->get('nc', 0, 'INT'); + // Vorherigen und nächsten Verein ermitteln + $query = "SELECT *, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_verein" + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT ausgetreten" . kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN") + . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, vereinsname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ . DIRECTORY_SEPARATOR . $id . '.'; - if (JFile::exists($pfad . 'png')) - $ext = "png"; - else if (JFile::exists($pfad . 'jpg')) - $ext = "jpg"; - else { - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header('HTTP/1.1 404 Not Found'); - die(); + $n = count($rows); + $vorheriger_verein_id = 0; + $naechster_verein_id = 0; + for ($i = 0; $i < $n; $i++) { + if ($rows[$i]->verein_id == $id) { + if ($i > 0) + $vorheriger_verein_id = $rows[$i - 1]->verein_id; + if ($i + 1 < $n) + $naechster_verein_id = $rows[$i + 1]->verein_id; + break; } - - $filemtime = filemtime($pfad . $ext); - $last_modified = gmdate('D, d M Y H:i:s', $filemtime) . " GMT"; - $etag = md5($id . '.' . $ext . $filemtime); - - // Prüfung, ob die im Browsercache vorhandene Datei der hiesigen entspricht - if ($_SERVER['HTTP_IF_NONE_MATCH'] == '"' . $etag . '"' || $last_modified == $_SERVER['HTTP_IF_MODIFIED_SINCE']) { - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header('HTTP/1.1 304 Not Modified'); - if ($no_cache) - header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft - else - header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird. - header("Last-Modified: " . $last_modified); - header('ETag: "' . $etag . '"'); - die(); - } - - $image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext); - if ($image === false) { - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header('HTTP/1.1 404 Not Found'); - die(); - } - - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header("Content-type: image/" . ($ext == "png" ? "png" : "jpeg")); - if ($no_cache) - header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft - else - header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird. - header("Last-Modified: " . $last_modified); - header('ETag: "' . $etag . '"'); - - $width = imagesx($image); - $height = imagesy($image); - - if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) { - if ($ext == "png") { - imagesavealpha($image, true); - imagepng($image); - } else - imagejpeg($image); - die(); - } - - $new_width = $width; - $new_height = $height; - - if ($max_height > 0 && $new_height > $max_height) { - $new_width = max(round($new_width * $max_height / $new_height), 1); - $new_height = $max_height; - } - if ($max_width > 0 && $new_width > $max_width) { - $new_height = max(round($new_height * $max_width / $new_width), 1); - $new_width = $max_width; - } - - if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied - $new_width += 1; - if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied - $new_height += 1; - - $image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height)); - $color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64); - imagefill($image_resized, 0, 0, $color); - imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height); - if ($ext == "png") { - imagesavealpha($image_resized, true); - imagepng($image_resized); - } else - imagejpeg($image_resized); - die(); } - function spielerbild() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - - $spielernr = $db->escape(trim($jinput->get('spielernr', '', 'RAW'))); - $lizenznr = $db->escape(trim($jinput->get('lizenznr', '', 'RAW'))); - - if (empty($spielernr) && empty($lizenznr)) { - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header('HTTP/1.1 404 Not Found'); - die(); - } - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id) AND NOT bild_ausblenden" . (!empty($spielernr) ? " AND spielernr = '$spielernr'" : " AND lizenznr = '$lizenznr'") - . "\n ORDER BY spieler_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - header('HTTP/1.1 404 Not Found'); - die(); - } - - $id = $rows[0]->spieler_id; - bildAnpassen("spieler", $id); + // Teammitgliedschaften ermitteln + $query = "SELECT #__sportsmanager_team.teamname, #__sportsmanager_team.team_id, #__sportsmanager_team.tischtyp, #__sportsmanager_team.tischeigenschaften, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.erster_tag, #__sportsmanager_veranstaltung.letzter_tag, #__sportsmanager_spielort.*," + . " GROUP_CONCAT(DISTINCT #__sportsmanager_veranstaltung.bezeichnung ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung DESC SEPARATOR ', ') AS wettbewerbe" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id" + . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n WHERE #__sportsmanager_team.verein_id = $id AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE() AND #__sportsmanager_veranstaltung.status > 0" + . "\n GROUP BY #__sportsmanager_team.teamname" + . "\n ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); } + $aktuelle_teams = $db->loadObjectList(); - function vereine() { - $db = & getDatabase(); - global $params; + $query = "SELECT t1.teamname, saisonbezeichnung," + . " GROUP_CONCAT(DISTINCT t3.bezeichnung ORDER BY t3.reihenfolge, t3.letzter_tag DESC, t3.bezeichnung, t3.kategorie DESC SEPARATOR ', ') AS wettbewerbe" + . "\n FROM #__sportsmanager_team AS t1" + . "\n INNER JOIN #__sportsmanager_veranstaltung AS t3 USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE t1.verein_id = $id AND t3.status > 0 AND (t3.erster_tag > CURDATE() OR t3.letzter_tag < CURDATE())" + . "\n GROUP BY YEAR(t3.letzter_tag), t1.teamname" + . "\n ORDER BY saisonbezeichnung DESC, t3.reihenfolge, t3.letzter_tag DESC, t3.bezeichnung, t1.teamname, t3.kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $fruehere_teams = $db->loadObjectList(); - $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $organisationAnzeigen = $db->loadResult() > 1; + HTML_sportsmanager::vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen); + begegnungenAnzeigen(NULL, $id, NULL, 92, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true); + begegnungenAnzeigen(NULL, $id, NULL, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true); + begegnungenAnzeigen(NULL, $id, NULL, 366, false, true, true, "Begegnungen des vergangenen Jahres", true, true); + HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id)); + HTML_sportsmanager::vereinDetailsErgaenzung($mailverteiler, $fruehere_teams, $vereins_moderator); +} - $query = "SELECT *, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten" . kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN") - . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); +function spielorte(): void +{ + $db = getDatabase(); + global $params; - HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen); + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n WHERE status > 0" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + if (isJson()) { + echo json_encode($spielorte); + } else { + HTML_sportsmanager::spielorte($params->get('titel'), $params->get('beschreibung'), $spielorte); administrationFooter(); } +} - function vereinDetails() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function spielort(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - die("Missing id!"); + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) + die("Missing id!"); - $vereins_moderator = benutzerVereinModerator($id) || benutzerZugriff("spieler_lesen_erweiterte_daten"); - $details_anzeigen = currentUserHasAccessToDetails(); - $ansprechpartner_anzeigen = einstellungswert("ansprechpartner_ausblenden") != "1" || $details_anzeigen; - - // Verein ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten AND verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $verein = $rows[0]; - - // Mitglieder ermitteln - $query = "SELECT * FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitglieder = $db->loadObjectList(); - - $query = "SELECT vorname, nachname, email" - . "\n FROM #__sportsmanager_mitglied_von_verein" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE verein_id = $id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND email != ''" - . "\n ORDER BY vorname, nachname, email"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $mailverteiler = array(); - $mailverteiler["u"] = ""; - $mailverteiler["p"] = ""; - foreach ($rows as $row) { - $mailverteiler["u"] .= (!empty($mailverteiler["u"]) ? "; " : "") . urlencode($row->email); - $mailverteiler["p"] .= (!empty($mailverteiler["p"]) ? ", " : "") . "\"" . $row->vorname . " " . $row->nachname . "\" <" . $row->email . ">"; - } - - // Vereinsansprechpartner ermitteln - $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein->verein_id ORDER BY vereinsansprechpartner_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsansprechpartner = $db->loadObjectList(); - - // Vorherigen und nächsten Verein ermitteln - $query = "SELECT *, veranstalterbezeichnung" - . "\n FROM #__sportsmanager_verein" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ausgetreten" . kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN") - . "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $n = count($rows); - $vorheriger_verein_id = 0; - $naechster_verein_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->verein_id == $id) { - if ($i > 0) - $vorheriger_verein_id = $rows[$i - 1]->verein_id; - if ($i + 1 < $n) - $naechster_verein_id = $rows[$i + 1]->verein_id; - break; - } - } - - // Teammitgliedschaften ermitteln - $query = "SELECT #__sportsmanager_team.teamname, #__sportsmanager_team.team_id, #__sportsmanager_team.tischtyp, #__sportsmanager_team.tischeigenschaften, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.erster_tag, #__sportsmanager_veranstaltung.letzter_tag, #__sportsmanager_spielort.*," - . " GROUP_CONCAT(DISTINCT #__sportsmanager_veranstaltung.bezeichnung ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung DESC SEPARATOR ', ') AS wettbewerbe" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id" - . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n WHERE #__sportsmanager_team.verein_id = $id AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE() AND #__sportsmanager_veranstaltung.status > 0" - . "\n GROUP BY #__sportsmanager_team.teamname" - . "\n ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktuelle_teams = $db->loadObjectList(); - - $query = "SELECT t1.teamname, saisonbezeichnung," - . " GROUP_CONCAT(DISTINCT t3.bezeichnung ORDER BY t3.reihenfolge, t3.letzter_tag DESC, t3.bezeichnung, t3.kategorie DESC SEPARATOR ', ') AS wettbewerbe" - . "\n FROM #__sportsmanager_team AS t1" - . "\n INNER JOIN #__sportsmanager_veranstaltung AS t3 USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE t1.verein_id = $id AND t3.status > 0 AND (t3.erster_tag > CURDATE() OR t3.letzter_tag < CURDATE())" - . "\n GROUP BY YEAR(t3.letzter_tag), t1.teamname" - . "\n ORDER BY saisonbezeichnung DESC, t3.reihenfolge, t3.letzter_tag DESC, t3.bezeichnung, t1.teamname, t3.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $fruehere_teams = $db->loadObjectList(); - - HTML_sportsmanager::vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen); - begegnungenAnzeigen(NULL, $id, NULL, 92, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true); - begegnungenAnzeigen(NULL, $id, NULL, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true); - begegnungenAnzeigen(NULL, $id, NULL, 366, false, true, true, "Begegnungen des vergangenen Jahres", true, true); - HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id)); - HTML_sportsmanager::vereinDetailsErgaenzung($mailverteiler, $fruehere_teams, $vereins_moderator); + // Spielort ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n WHERE spielort_id = $id AND status > 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $spielort = $rows[0]; - function spielorte() { - $db = & getDatabase(); - global $params; + // Vorherigen und nächsten Spielort ermitteln + $query = "SELECT spielort_id" + . "\n FROM #__sportsmanager_spielort" + . "\n WHERE status > 0" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n WHERE status > 0" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - if (isJson()) { - echo json_encode($spielorte); - } else { - HTML_sportsmanager::spielorte($params->get('titel'), $params->get('beschreibung'), $spielorte); - - administrationFooter(); + $n = count($rows); + $vorheriger_spielort_id = 0; + $naechster_spielort_id = 0; + for ($i = 0; $i < $n; $i++) { + if ($rows[$i]->spielort_id == $id) { + if ($i > 0) + $vorheriger_spielort_id = $rows[$i - 1]->spielort_id; + if ($i + 1 < $n) + $naechster_spielort_id = $rows[$i + 1]->spielort_id; + break; } } - function spielort() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; + // Teammitgliedschaften ermitteln + $query = "SELECT #__sportsmanager_team.teamname, #__sportsmanager_team.team_id, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.erster_tag, #__sportsmanager_veranstaltung.letzter_tag, #__sportsmanager_spielort.*, #__sportsmanager_team.heimspiel_wochentag, #__sportsmanager_team.tischtyp," + . " GROUP_CONCAT(DISTINCT #__sportsmanager_veranstaltung.bezeichnung ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung DESC SEPARATOR ', ') AS wettbewerbe" + . "\n FROM #__sportsmanager_team" + . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id" + . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n WHERE #__sportsmanager_team.heimspielort_id = $id AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE() AND #__sportsmanager_veranstaltung.status > 0" + . "\n GROUP BY #__sportsmanager_team.teamname, #__sportsmanager_team.teamgruppe_id, #__sportsmanager_team.heimspiel_wochentag" + . "\n ORDER BY #__sportsmanager_team.heimspiel_wochentag, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aktuelle_teams = $db->loadObjectList(); - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - die("Missing id!"); + // Letzte Begegnung ermitteln + $query = "SELECT IF(ISNULL(MAX(zeitpunkt)), -99999, DATEDIFF(MAX(zeitpunkt), CURDATE()))" + . "\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_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" + . "\n WHERE t5.status > 0 AND (t1.spielort_id = $id OR (ISNULL(t1.spielort_id) AND t2.heimspielort_id = $id)) AND NOT ISNULL(zeitpunkt)" + . "\n ORDER BY t1.zeitpunkt DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnung_zeitpunkt = $db->loadResult(); - // Spielort ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n WHERE spielort_id = $id AND status > 0"; + HTML_sportsmanager::spielort($spielort, $begegnung_zeitpunkt, $aktuelle_teams, $vorheriger_spielort_id, $naechster_spielort_id); + begegnungenAnzeigen(NULL, NULL, $id, 92, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true); + begegnungenAnzeigen(NULL, NULL, $id, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true); + begegnungenAnzeigen(NULL, NULL, $id, 62, false, true, true, "Begegnungen des vergangenen zwei Monate", true, true); + HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=spielort_begegnungen_ical&id=' . $id)); +} + +function begegnungSpielplan($teamansicht = false): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) { + abortWithError("Missing id!"); + } + if ($teamansicht) { + $teamid = $jInput->get('teamid', 0, 'INT'); + if ($teamid == 0) { + abortWithError("Missing id!"); + } + } + + $details_anzeigen = currentUserHasAccessToDetails(); + + // Begegnung ermitteln + $query = + "SELECT t1.*, unbestaetigtes_ergebnis_id, zwischenergebnis, vorschlagendes_team_id, #__sportsmanager_team.teamname, " + . "(SELECT IF(aktion NOT IN (0, 3, 4), NULL, tt1.eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen " + . "FROM #__sportsmanager_begegnung as t1 " + . "LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON t1.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id " + . "LEFT JOIN #__sportsmanager_team ON #__sportsmanager_unbestaetigtes_ergebnis.vorschlagendes_team_id = #__sportsmanager_team.team_id " + . "WHERE t1.begegnung_id = $id"; + + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; + + if ($teamansicht) { + // Ursprüngliches Team für Teamansicht ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + if (!$db->execute()) { + abortWithError($db->stderr(true)); } $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $spielort = $rows[0]; - - // Vorherigen und nächsten Spielort ermitteln - $query = "SELECT spielort_id" - . "\n FROM #__sportsmanager_spielort" - . "\n WHERE status > 0" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + if (count($rows) < 1) { + abortWithError("Wrong id!"); } - $rows = $db->loadObjectList(); + $teamansicht_team = $rows[0]; + $teamansicht_teamgruppe_id = $teamansicht_team->teamgruppe_id != NULL ? $teamansicht_team->teamgruppe_id : $id; + } - $n = count($rows); - $vorheriger_spielort_id = 0; - $naechster_spielort_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->spielort_id == $id) { - if ($i > 0) - $vorheriger_spielort_id = $rows[$i - 1]->spielort_id; - if ($i + 1 < $n) - $naechster_spielort_id = $rows[$i + 1]->spielort_id; - break; - } - } + // Heimteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $heim_team = $rows[0]; - // Teammitgliedschaften ermitteln - $query = "SELECT #__sportsmanager_team.teamname, #__sportsmanager_team.team_id, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.erster_tag, #__sportsmanager_veranstaltung.letzter_tag, #__sportsmanager_spielort.*, #__sportsmanager_team.heimspiel_wochentag, #__sportsmanager_team.tischtyp," - . " GROUP_CONCAT(DISTINCT #__sportsmanager_veranstaltung.bezeichnung ORDER BY #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.letzter_tag DESC, #__sportsmanager_veranstaltung.bezeichnung DESC SEPARATOR ', ') AS wettbewerbe" - . "\n FROM #__sportsmanager_team" - . "\n LEFT JOIN #__sportsmanager_spielort ON heimspielort_id = spielort_id" - . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n WHERE #__sportsmanager_team.heimspielort_id = $id AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE() AND #__sportsmanager_veranstaltung.status > 0" - . "\n GROUP BY #__sportsmanager_team.teamname, #__sportsmanager_team.teamgruppe_id, #__sportsmanager_team.heimspiel_wochentag" - . "\n ORDER BY #__sportsmanager_team.heimspiel_wochentag, #__sportsmanager_team.teamname, #__sportsmanager_veranstaltung.reihenfolge, #__sportsmanager_veranstaltung.bezeichnung, #__sportsmanager_veranstaltung.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktuelle_teams = $db->loadObjectList(); + // Gastteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $rows[0]; - // Letzte Begegnung ermitteln - $query = "SELECT IF(ISNULL(MAX(zeitpunkt)), -99999, DATEDIFF(MAX(zeitpunkt), CURDATE()))" + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $heim_team->veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $veranstaltung = $rows[0]; + + // Modus ermitteln + $modus_id = $veranstaltung->modus_id; + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $modus = null; + if (count($rows) == 1) { + $modus = $rows[0]; + } + + // Spiele ermitteln + $query = "SELECT t1.*, theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.geschlecht AS heim_spieler_1_geschlecht, theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.geschlecht AS heim_spieler_2_geschlecht, tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.geschlecht AS gast_spieler_1_geschlecht, tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.geschlecht AS gast_spieler_2_geschlecht, " + . "mheim1.mitglied_von_team_id AS heim_spieler_1_mitglied_id, mheim2.mitglied_von_team_id AS heim_spieler_2_mitglied_id, " + . "mgast1.mitglied_von_team_id AS gast_spieler_1_mitglied_id, mgast2.mitglied_von_team_id AS gast_spieler_2_mitglied_id, " + . "theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden, " + . "tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" + . "\n FROM #__sportsmanager_teamspiel AS t1" + . "\n LEFT JOIN #__sportsmanager_spieler AS theim1 ON theim1.spieler_id = t1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mheim1 ON mheim1.team_id = $begegnung->heim_team_id AND mheim1.spieler_id = t1.heim_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS theim2 ON theim2.spieler_id = t1.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mheim2 ON mheim2.team_id = $begegnung->heim_team_id AND mheim2.spieler_id = t1.heim_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS tgast1 ON tgast1.spieler_id = t1.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mgast1 ON mgast1.team_id = $begegnung->gast_team_id AND mgast1.spieler_id = t1.gast_spieler_1_id" + . "\n LEFT JOIN #__sportsmanager_spieler AS tgast2 ON tgast2.spieler_id = t1.gast_spieler_2_id" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mgast2 ON mgast2.team_id = $begegnung->gast_team_id AND mgast2.spieler_id = t1.gast_spieler_2_id" + . "\n WHERE begegnung_id = $id" + . "\n GROUP BY teamspiel_id" + . "\n ORDER BY teamspiel_nummer"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + // Vorherige und nächste Begegnung ermitteln + if ($teamansicht) { + $query = "SELECT t1.*," + . "\n IF(t1.heim_team_id = $id, t3.teamname, t2.teamname) AS gegner" . "\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_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" - . "\n WHERE t5.status > 0 AND (t1.spielort_id = $id OR (ISNULL(t1.spielort_id) AND t2.heimspielort_id = $id)) AND NOT ISNULL(zeitpunkt)" - . "\n ORDER BY t1.zeitpunkt DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnung_zeitpunkt = $db->loadResult(); - - HTML_sportsmanager::spielort($spielort, $begegnung_zeitpunkt, $aktuelle_teams, $vorheriger_spielort_id, $naechster_spielort_id); - begegnungenAnzeigen(NULL, NULL, $id, 92, true, true, false, JText::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true); - begegnungenAnzeigen(NULL, NULL, $id, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true); - begegnungenAnzeigen(NULL, NULL, $id, 62, false, true, true, "Begegnungen des vergangenen zwei Monate", true, true); - HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=spielort_begegnungen_ical&id=' . $id)); + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" + . "\n WHERE t2.veranstaltung_id = $veranstaltung->veranstaltung_id AND (t1.heim_team_id = $teamid OR t1.gast_team_id = $teamid OR t2.teamgruppe_id = $teamansicht_teamgruppe_id OR t3.teamgruppe_id = $teamansicht_teamgruppe_id) AND (heim_punkte != 0 OR gast_punkte != 0)" + . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, 1), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, t1.spieltag, 0), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, t1.zeitpunkt), " : "") . "t1.zeitpunkt, gegner"; + } else { + $query = "SELECT t1.*, t2.teamname AS heim_name" + . "\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 WHERE t2.veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_punkte != 0 OR gast_punkte != 0)" + . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, " : "") . "t1.zeitpunkt, heim_name"; } + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); - function begegnungSpielplan($teamansicht = false) { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) { - abortWithError("Missing id!"); + $n = count($rows); + $vorherige_begegnung_id = 0; + $naechste_begegnung_id = 0; + for ($i = 0; $i < $n; $i++) { + if ($rows[$i]->begegnung_id == $id) { + if ($i > 0) + $vorherige_begegnung_id = $rows[$i - 1]->begegnung_id; + if ($i + 1 < $n) + $naechste_begegnung_id = $rows[$i + 1]->begegnung_id; + break; } - if ($teamansicht) { - $teamid = $jinput->get('teamid', 0, 'INT'); - if ($teamid == 0) { - abortWithError("Missing id!"); - } - } - - $details_anzeigen = currentUserHasAccessToDetails(); - - // Begegnung ermitteln - $query = - "SELECT t1.*, unbestaetigtes_ergebnis_id, zwischenergebnis, vorschlagendes_team_id, #__sportsmanager_team.teamname, " - . "(SELECT IF(aktion NOT IN (0, 3, 4), NULL, tt1.eingetragen) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen " - . "FROM #__sportsmanager_begegnung as t1 " - . "LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON t1.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id " - . "LEFT JOIN #__sportsmanager_team ON #__sportsmanager_unbestaetigtes_ergebnis.vorschlagendes_team_id = #__sportsmanager_team.team_id " - . "WHERE t1.begegnung_id = $id"; - + } + // Spielort ermitteln + $spielortQuery = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = " + . (Factory::getContainer()->get(SiteApplication::class)->input->getCmd('spielort_heim') == 1 + ? $heim_team->heimspielort_id + : ($begegnung->spielort_id ?? '0')); + $db->setQuery($spielortQuery); + if ($db->execute()) { + $spielort = $db->loadObject(); + $begegnung->spielort_name = $spielort->name; + } + if (isJson()) { + // spieler ermitteln + $query = 'SELECT * ' + . 'FROM #__sportsmanager_mitglied_von_team as t1 ' + . 'INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id) ' + . '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) ' : '') + . 'ORDER BY nachname, vorname'; $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - if ($teamansicht) { - // Ursprüngliches Team für Teamansicht ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $teamansicht_team = $rows[0]; - $teamansicht_teamgruppe_id = $teamansicht_team->teamgruppe_id != NULL ? $teamansicht_team->teamgruppe_id : $id; - } - - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $rows[0]; - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $heim_team->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $veranstaltung = $rows[0]; - - // Modus ermitteln - $modus_id = $veranstaltung->modus_id; - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) { - $modus = $rows[0]; - } - - // Spiele ermitteln - $query = "SELECT t1.*, theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.geschlecht AS heim_spieler_1_geschlecht, theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.geschlecht AS heim_spieler_2_geschlecht, tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.geschlecht AS gast_spieler_1_geschlecht, tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.geschlecht AS gast_spieler_2_geschlecht, " - . "mheim1.mitglied_von_team_id AS heim_spieler_1_mitglied_id, mheim2.mitglied_von_team_id AS heim_spieler_2_mitglied_id, " - . "mgast1.mitglied_von_team_id AS gast_spieler_1_mitglied_id, mgast2.mitglied_von_team_id AS gast_spieler_2_mitglied_id, " - . "theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden, " - . "tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" - . "\n FROM #__sportsmanager_teamspiel AS t1" - . "\n LEFT JOIN #__sportsmanager_spieler AS theim1 ON theim1.spieler_id = t1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mheim1 ON mheim1.team_id = $begegnung->heim_team_id AND mheim1.spieler_id = t1.heim_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS theim2 ON theim2.spieler_id = t1.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mheim2 ON mheim2.team_id = $begegnung->heim_team_id AND mheim2.spieler_id = t1.heim_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS tgast1 ON tgast1.spieler_id = t1.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mgast1 ON mgast1.team_id = $begegnung->gast_team_id AND mgast1.spieler_id = t1.gast_spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS tgast2 ON tgast2.spieler_id = t1.gast_spieler_2_id" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_team AS mgast2 ON mgast2.team_id = $begegnung->gast_team_id AND mgast2.spieler_id = t1.gast_spieler_2_id" - . "\n WHERE begegnung_id = $id" - . "\n GROUP BY teamspiel_id" - . "\n ORDER BY teamspiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - // Vorherige und nächste Begegnung ermitteln - if ($teamansicht) { - $query = "SELECT t1.*," - . "\n IF(t1.heim_team_id = $id, t3.teamname, t2.teamname) AS gegner" - . "\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 WHERE t2.veranstaltung_id = $veranstaltung->veranstaltung_id AND (t1.heim_team_id = $teamid OR t1.gast_team_id = $teamid OR t2.teamgruppe_id = $teamansicht_teamgruppe_id OR t3.teamgruppe_id = $teamansicht_teamgruppe_id) AND (heim_punkte != 0 OR gast_punkte != 0)" - . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, 1), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, t1.spieltag, 0), IF (t1.heim_punkte != 0 OR t1.gast_punkte != 0, 0, t1.zeitpunkt), " : "") . "t1.zeitpunkt, gegner"; - } else { - $query = "SELECT t1.*, t2.teamname AS heim_name" - . "\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 WHERE t2.veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_punkte != 0 OR gast_punkte != 0)" - . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, " : "") . "t1.zeitpunkt, heim_name"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $n = count($rows); - $vorherige_begegnung_id = 0; - $naechste_begegnung_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->begegnung_id == $id) { - if ($i > 0) - $vorherige_begegnung_id = $rows[$i - 1]->begegnung_id; - if ($i + 1 < $n) - $naechste_begegnung_id = $rows[$i + 1]->begegnung_id; - break; - } - } - // Spielort ermitteln - $spielortQuery = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = " - . (JFactory::getApplication()->input->getCmd('spielort_heim') == 1 - ? $heim_team->heimspielort_id - : (isset($begegnung->spielort_id) ? $begegnung->spielort_id : '0')); - $db->setQuery($spielortQuery); + $heim_spieler = null; if ($db->execute()) { - $spielort = $db->loadObject(); - $begegnung->spielort_name = $spielort->name; + $heim_spieler = $db->loadObjectList(); } - if (isJson()) { - -// $json = JSON_sportsmanager::begegnungSpielplan($veranstaltung, $modus, $begegnung, $heim_team, $gast_team, $spiele, $vorherige_begegnung_id, $naechste_begegnung_id, $teamansicht ? $teamansicht_team : NULL, $details_anzeigen); - - // spieler ermitteln - $query = 'SELECT * ' - . 'FROM #__sportsmanager_mitglied_von_team as t1 ' - . 'INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id) ' - . '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) ' : '') - . 'ORDER BY nachname, vorname'; - $db->setQuery($query); - if ($db->execute()) { - $heim_spieler = $db->loadObjectList(); - } - $query = 'SELECT * ' - . 'FROM #__sportsmanager_mitglied_von_team as t1 ' - . 'INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id) ' - . '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) ' : '') - . 'ORDER BY nachname, vorname'; - $db->setQuery($query); - if ($db->execute()) { - $gast_spieler = $db->loadObjectList(); - } - $json = JSON_sportsmanager::adminEditBegegnungSpielplan(0, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler,$modus, NULL, NULL, NULL, NULL); - - // ergebnis hinspiel - $query = 'SELECT * ' - . 'FROM #__sportsmanager_begegnung ' - . 'WHERE heim_team_id = ' . $begegnung->gast_team_id . ' AND gast_team_id = ' . $begegnung->heim_team_id; - $db->setQuery($query); - if ($db->execute()) { - $hinspiel = $db->loadObjectList(); - if (sizeof($hinspiel) > 0) { - $json['hinspiel'] = $hinspiel[0]; - } - } - if (isset($spielort)) { - $json['spielort'] = $spielort; - } - JSON_sportsmanager::JSON($json); - } else { - HTML_sportsmanager::begegnungSpielplan($veranstaltung, $modus, $begegnung, $heim_team, $gast_team, $spiele, $vorherige_begegnung_id, $naechste_begegnung_id, $teamansicht ? $teamansicht_team : NULL, $details_anzeigen); - - if ($begegnung->zwischenergebnis) - HTML_sportsmanager::automatischAktualisieren(60); + $query = 'SELECT * ' + . 'FROM #__sportsmanager_mitglied_von_team as t1 ' + . 'INNER JOIN #__sportsmanager_spieler AS t2 USING (spieler_id) ' + . '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) ' : '') + . 'ORDER BY nachname, vorname'; + $db->setQuery($query); + $gast_spieler = null; + if ($db->execute()) { + $gast_spieler = $db->loadObjectList(); } + $json = JSON_sportsmanager::adminEditBegegnungSpielplan(0, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $modus); + + // ergebnis hinspiel + $query = 'SELECT * ' + . 'FROM #__sportsmanager_begegnung ' + . 'WHERE heim_team_id = ' . $begegnung->gast_team_id . ' AND gast_team_id = ' . $begegnung->heim_team_id; + $db->setQuery($query); + if ($db->execute()) { + $hinspiel = $db->loadObjectList(); + if (sizeof($hinspiel) > 0) { + $json['hinspiel'] = $hinspiel[0]; + } + } + if (isset($spielort)) { + $json['spielort'] = $spielort; + } + JSON_sportsmanager::JSON($json); + } else { + HTML_sportsmanager::begegnungSpielplan($veranstaltung, $modus, $begegnung, $heim_team, $gast_team, $spiele, $vorherige_begegnung_id, $naechste_begegnung_id, $teamansicht ? $teamansicht_team : NULL, $details_anzeigen); + + if ($begegnung->zwischenergebnis) + HTML_sportsmanager::automatischAktualisieren(); + } +} + +function begegnungVerlegenForm(): 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!"); + $aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT'); + + $query = "SELECT #__sportsmanager_veranstaltung.*, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen FROM #__sportsmanager_veranstaltung LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id) WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $veranstaltung = $rows[0]; + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); + $query = "SELECT t1.*, t2.unbestaetigtes_ergebnis_id," + . "\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," + . "\n " . ($veranstaltung->verschieberegel_id != 0 ? "IF($veranstaltung->vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= $veranstaltung->vorlaufzeit_tage, 1, 0)" : "0") . " AS verschieberegel_erfuellt" + . "\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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; + + if ($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)"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) { + keinZugriff(TRUE); + } + $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $heim_team = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); + + if (!$begegnung->verschieberegel_erfuellt && (count($verlegen_aktionen) == 0 || $verlegen_aktionen[count($verlegen_aktionen) - 1]->aktion == 1)) + keinZugriff(); + + // Ermitteln, ob Benutzer berechtigt für das Akzeptieren eines Termins ist + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_berechtigt_fuer_team" + . "\n WHERE (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = $id ORDER BY begegnung_historie_id DESC LIMIT 1) = berechtigt_team_id AND berechtigt_user_id = $user_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $berechtigt_fuer_akzeptieren = $db->loadResult(); + + if (isJson()) { + JSON_sportsmanager::begegnungVerlegen($veranstaltung, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $vorschlagendes_team_id); + } else { + (new HTML_sportsmanager)->begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $aus_uebersicht, $vorschlagendes_team_id); + HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); + } +} + +function begegnungVerlegen(): void +{ + $app = Factory::getContainer()->get(SiteApplication::class); + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + $termine_input = isJson() ? $jInput->json : $jInput; + $id = $jInput->get('id', 0, 'INT'); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) { + abortWithError("Missing id!"); + } + $aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT'); + $angefordert = $jInput->get('anfordern', false, 'BOOL'); + $abgelehnt = $jInput->get('ablehnen', false, 'BOOL'); + + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungId); } - function begegnungVerlegenForm() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) - die("Missing id!"); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - - $query = "SELECT #__sportsmanager_veranstaltung.*, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen FROM #__sportsmanager_veranstaltung LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id) WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $veranstaltung = $rows[0]; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $query = "SELECT t1.*, t2.unbestaetigtes_ergebnis_id," - . "\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," - . "\n " . ($veranstaltung->verschieberegel_id != 0 ? "IF($veranstaltung->vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= $veranstaltung->vorlaufzeit_tage, 1, 0)" : "0") . " AS verschieberegel_erfuellt" - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - if ($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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) { - keinZugriff(TRUE); - } - $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $heim_team = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - if (!$begegnung->verschieberegel_erfuellt && (count($verlegen_aktionen) == 0 || $verlegen_aktionen[count($verlegen_aktionen) - 1]->aktion == 1)) - keinZugriff(); - - // Ermitteln, ob Benutzer berechtigt für das Akzeptieren eines Termins ist - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_berechtigt_fuer_team" - . "\n WHERE (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = $id ORDER BY begegnung_historie_id DESC LIMIT 1) = berechtigt_team_id AND berechtigt_user_id = $user_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $berechtigt_fuer_akzeptieren = $db->loadResult(); - - if (isJson()) { - JSON_sportsmanager::begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $aus_uebersicht, $vorschlagendes_team_id); - } else { - HTML_sportsmanager::begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $aus_uebersicht, $vorschlagendes_team_id); - HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); - } + $termine = array(); + $kommentare = array(); + for ($i = 1; $i <= 5; $i++) { + $datum = normalisiertesDatum($termine_input->get('datum_jahr_' . $i, 0, 'INT') == 0 ? NULL : sprintf("%04d-%02d-%02d", $termine_input->get('datum_jahr_' . $i, 0, 'INT'), $termine_input->get('datum_monat_' . $i, 0, 'INT'), $termine_input->get('datum_tag_' . $i, 0, 'INT'))); + $uhrzeit = normalisierteUhrzeit(sprintf("%02d:%02d:00", $termine_input->get('uhrzeit_stunden_' . $i, 0, 'INT'), $termine_input->get('uhrzeit_minuten_' . $i, 0, 'INT'))); + if ($datum == NULL || $uhrzeit == NULL) + continue; + $termine[] = $datum . " " . $uhrzeit; + $kommentare[] = $termine_input->get('kommentar_' . $i, '', 'RAW'); } - function begegnungVerlegen() { - $app = &JFactory::getApplication(); - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - $termine_input = isJson() ? $jinput->json : $jinput; - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) { - abortWithError("Missing id!"); - } - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - $angefordert = $jinput->get('anfordern', false, 'BOOL'); - $abgelehnt = $jinput->get('ablehnen', false, 'BOOL'); + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) { + keinZugriff(); + } + $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid); - return; - } + // Veranstaltung ermitteln + $query = "SELECT #__sportsmanager_veranstaltung.*," + . "\n #__sportsmanager_verschieberegel.verschieberegel_id," + . "\n #__sportsmanager_verschieberegel.initial_ohne_termin," + . "\n #__sportsmanager_verschieberegel.keine_gegenvorschlaege," + . "\n #__sportsmanager_verschieberegel.vorlaufzeit_tage," + . "\n #__sportsmanager_verschieberegel.termine_minimal," + . "\n #__sportsmanager_verschieberegel.termine_maximal" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id)" + . "\n WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $veranstaltung = $rows[0]; - $termine = array(); - $kommentare = array(); - for ($i = 1; $i <= 5; $i++) { - $datum = normalisiertesDatum($termine_input->get('datum_jahr_' . $i, 0, 'INT') == 0 ? NULL : sprintf("%04d-%02d-%02d", $termine_input->get('datum_jahr_' . $i, 0, 'INT'), $termine_input->get('datum_monat_' . $i, 0, 'INT'), $termine_input->get('datum_tag_' . $i, 0, 'INT'))); - $uhrzeit = normalisierteUhrzeit(sprintf("%02d:%02d:00", $termine_input->get('uhrzeit_stunden_' . $i, 0, 'INT'), $termine_input->get('uhrzeit_minuten_' . $i, 0, 'INT'))); - if ($datum == NULL || $uhrzeit == NULL) - continue; - array_push($termine, $datum . " " . $uhrzeit); - array_push($kommentare, $termine_input->get('kommentar_' . $i, '', 'RAW')); - } + // 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 " . ($veranstaltung->verschieberegel_id != 0 ? "IF($veranstaltung->vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= $veranstaltung->vorlaufzeit_tage, 1, 0)" : "0") . " AS verschieberegel_erfuellt" + . "\n FROM #__sportsmanager_begegnung" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) { - keinZugriff(); - } - $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; + // Vorgeschlagene Termine ermitteln + $query = "SELECT #__sportsmanager_begegnung_historie.aktion" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = $id" + . "\n ORDER BY begegnung_historie_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); - // Veranstaltung ermitteln - $query = "SELECT #__sportsmanager_veranstaltung.*," - . "\n #__sportsmanager_verschieberegel.verschieberegel_id," - . "\n #__sportsmanager_verschieberegel.initial_ohne_termin," - . "\n #__sportsmanager_verschieberegel.keine_gegenvorschlaege," - . "\n #__sportsmanager_verschieberegel.vorlaufzeit_tage," - . "\n #__sportsmanager_verschieberegel.termine_minimal," - . "\n #__sportsmanager_verschieberegel.termine_maximal" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id)" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $veranstaltung = $rows[0]; - - // 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 " . ($veranstaltung->verschieberegel_id != 0 ? "IF($veranstaltung->vorlaufzeit_tage = 0 OR DATEDIFF(zeitpunkt, CURDATE()) >= $veranstaltung->vorlaufzeit_tage, 1, 0)" : "0") . " AS verschieberegel_erfuellt" - . "\n FROM #__sportsmanager_begegnung" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - // Vorgeschlagene Termine ermitteln - $query = "SELECT #__sportsmanager_begegnung_historie.aktion" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE begegnung_id = $id" - . "\n ORDER BY begegnung_historie_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - if (!$begegnung->verschieberegel_erfuellt && (count($verlegen_aktionen) == 0 || $verlegen_aktionen[0]->aktion == 1 || $verlegen_aktionen[0]->aktion == 5 || $verlegen_aktionen[0]->aktion == 10)) { - keinZugriff(); - } - - $aktueller_zeitpunkt = date('Y-m-d H:i:s'); - if (count($verlegen_aktionen) == 0 || $verlegen_aktionen[0]->aktion == 1 || $verlegen_aktionen[0]->aktion == 5 || $verlegen_aktionen[0]->aktion == 10) { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 2, '$begegnung->zeitpunkt', NULL, NULL, NULL, NULL, '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - - if ($angefordert) { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 3, NULL, '$user_id', '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', NULL, '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } else if ($abgelehnt) { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 10, NULL, '$user_id', '$vorschlagendes_team_id', NULL, NULL, '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } else if (count($termine) == 0) { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 4, NULL, '$user_id', '$vorschlagendes_team_id', '$vorschlagendes_team_id', NULL, '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } else { - for ($i = count($termine) - 1; $i >= 0; $i--) { - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 0, '" . $termine[$i] . "', '$user_id', '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', '" . $db->escape($kommentare[$i]) . "', '$aktueller_zeitpunkt');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - } - // Benachrichtigung schreiben - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $rows[0]; - - $mailfrom = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $subject = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT', $heim_team->teamname, $gast_team->teamname); - - if ($angefordert) { - $body = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungid . '&id=' . $id, -1)); - } else if ($abgelehnt) { - $subject = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REJECTED_SUBJECT', $heim_team->teamname, $gast_team->teamname); - $body = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REJECTED_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungid . '&id=' . $id, -1)); - } else if (count($termine) == 0) { - $body = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_PENDING_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungid . '&id=' . $id, -1)); - } else { - $body = JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname)); - foreach ($termine as $termin) - $body .= " " . FormatiertesDatum($termin) . "\n"; - $body .= JText::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY2', SportsManagerURL('&task=begegnung_verlegen_form&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 . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - - begegnungVerlegenNotify($begegnung, $rows, $vorschlagendes_team_id, $heim_team, $gast_team); - - if (isJson()) { - begegnungVerlegenForm(); - } else { - redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid); - } + if (!$begegnung->verschieberegel_erfuellt && (count($verlegen_aktionen) == 0 || $verlegen_aktionen[0]->aktion == 1 || $verlegen_aktionen[0]->aktion == 5 || $verlegen_aktionen[0]->aktion == 10)) { + keinZugriff(); } - function begegnungVerlegenBestaetigen() { - $app = &JFactory::getApplication(); - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) { - abortWithError("Missing id!"); - } - $begegnung_historie_id = isJson() ? $jinput->json->get('begegnung_historie_id', 0, 'INT') : $jinput->get('begegnung_historie_id', 0, 'INT'); - $aus_uebersicht = $jinput->get('aus_uebersicht', 0, 'INT'); - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->id); - // Ermitteln, ob Benutzer berechtigt für das Akzeptieren eines Termins ist - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_berechtigt_fuer_team" - . "\n WHERE (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = $id ORDER BY begegnung_historie_id DESC LIMIT 1) = berechtigt_team_id AND berechtigt_user_id = $user_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $berechtigt_fuer_akzeptieren = $db->loadResult(); - if ($berechtigt_fuer_akzeptieren == 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) { - keinZugriff(); - } - $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; - - // Akzeptierten Termine ermitteln - $query = "SELECT * FROM #__sportsmanager_begegnung_historie WHERE begegnung_historie_id = $begegnung_historie_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $termin = $rows[0]; - - $aktueller_zeitpunkt = date('Y-m-d H:i:s'); + $aktueller_zeitpunkt = date('Y-m-d H:i:s'); + if (count($verlegen_aktionen) == 0 || $verlegen_aktionen[0]->aktion == 1 || $verlegen_aktionen[0]->aktion == 5 || $verlegen_aktionen[0]->aktion == 10) { $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 1, '$termin->zeitpunkt', '$user_id', '$vorschlagendes_team_id', NULL, NULL, '$aktueller_zeitpunkt');"; + . "\n VALUES ($id, 2, '$begegnung->zeitpunkt', NULL, NULL, NULL, NULL, '$aktueller_zeitpunkt');"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { abortWithError($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET zeitpunkt = '$termin->zeitpunkt'" - . "\n WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - // Benachrichtigung schreiben - // Veranstaltung ermitteln - $query = "SELECT #__sportsmanager_veranstaltung.*," - . "\n #__sportsmanager_verschieberegel.verschieberegel_id," - . "\n #__sportsmanager_verschieberegel.initial_ohne_termin," - . "\n #__sportsmanager_verschieberegel.keine_gegenvorschlaege," - . "\n #__sportsmanager_verschieberegel.vorlaufzeit_tage," - . "\n #__sportsmanager_verschieberegel.termine_minimal," - . "\n #__sportsmanager_verschieberegel.termine_maximal" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id)" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $veranstaltung = $rows[0]; - - // Begegnung ermitteln - $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $begegnung = $rows[0]; - - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $gast_team = $rows[0]; - - $mailfrom = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $subject = JText::sprintf('COM_SPORTSMANAGER_EMAIL_GAME_APPOINTMENT_SHIFTED_SUBJECT', $heim_team->teamname, $gast_team->teamname); - $body = JText::sprintf('COM_SPORTSMANAGER_EMAIL_GAME_APPOINTMENT_SHIFTED_BODY', $heim_team->teamname, $gast_team->teamname, "termin", $veranstaltung->bezeichnung, FormatiertesDatum($begegnung->zeitpunkt), SportsManagerURL('&task=begegnung_verlegen_form&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 . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - - if (isJson()) { - JSON_sportsmanager::JSON([]); -// adminEditBegegnungSpielplan(0); - } else { - redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid); - } } - function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaenderter_teamspiel_modus_id = 0) { - $db = & getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_veranstaltung"; - if ($geaenderte_veranstaltung_id != 0) - $query .= "\n WHERE veranstaltung_id = $geaenderte_veranstaltung_id"; - else if ($geaenderter_teamspiel_modus_id != 0) - $query .= "\n WHERE $geaenderter_teamspiel_modus_id = modus_id"; + if ($angefordert) { + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 3, NULL, '$user_id', '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', NULL, '$aktueller_zeitpunkt');"; $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + if (!$db->execute()) { + abortWithError($db->stderr(true)); } - $veranstaltungen = $db->loadObjectList(); + } else if ($abgelehnt) { + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 10, NULL, '$user_id', '$vorschlagendes_team_id', NULL, NULL, '$aktueller_zeitpunkt');"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + } else if (count($termine) == 0) { + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 4, NULL, '$user_id', '$vorschlagendes_team_id', '$vorschlagendes_team_id', NULL, '$aktueller_zeitpunkt');"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + } else { + for ($i = count($termine) - 1; $i >= 0; $i--) { + $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" + . "\n VALUES ($id, 0, '" . $termine[$i] . "', '$user_id', '$vorschlagendes_team_id', '" . ($vorschlagendes_team_id == $begegnung->heim_team_id ? $begegnung->gast_team_id : $begegnung->heim_team_id) . "', '" . $db->escape($kommentare[$i]) . "', '$aktueller_zeitpunkt');"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + } + } + // Benachrichtigung schreiben + // Heimteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $heim_team = $rows[0]; - foreach ($veranstaltungen as $veranstaltung) { - if ($veranstaltung->tabellenwertung > 0) { - $query = "UPDATE #__sportsmanager_team" - . "\n LEFT JOIN" - . "\n (SELECT t1.team_id," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND ((ttb1.heim_team_id = t1.team_id AND ttb1.heim_spielpunkte > ttb1.gast_spielpunkte) OR (ttb1.gast_team_id = t1.team_id AND ttb1.gast_spielpunkte > ttb1.heim_spielpunkte)) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)) AS siege," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_team_id = t1.team_id OR ttb2.gast_team_id = t1.team_id) AND ttb2.heim_spielpunkte = ttb2.gast_spielpunkte AND (ttb2.heim_punkte != 0 OR ttb2.gast_punkte != 0)) AS unentschieden," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb3 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu3 ON ttb3.begegnung_id = ttu3.begegnung_id WHERE ISNULL(ttu3.unbestaetigtes_ergebnis_id) AND ((ttb3.heim_team_id = t1.team_id AND ttb3.heim_spielpunkte < ttb3.gast_spielpunkte) OR (ttb3.gast_team_id = t1.team_id AND ttb3.gast_spielpunkte < ttb3.heim_spielpunkte)) AND (ttb3.heim_punkte != 0 OR ttb3.gast_punkte != 0)) AS niederlagen," - . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb4 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu4 ON ttb4.begegnung_id = ttu4.begegnung_id WHERE ISNULL(ttu4.unbestaetigtes_ergebnis_id) AND ttb4.heim_team_id = t1.team_id AND (ttb4.heim_punkte != 0 OR ttb4.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb5 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu5 ON ttb5.begegnung_id = ttu5.begegnung_id WHERE ISNULL(ttu5.unbestaetigtes_ergebnis_id) AND ttb5.gast_team_id = t1.team_id AND (ttb5.heim_punkte != 0 OR ttb5.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen," - . "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb6 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu6 ON ttb6.begegnung_id = ttu6.begegnung_id WHERE ISNULL(ttu6.unbestaetigtes_ergebnis_id) AND ttb6.heim_team_id = t1.team_id AND (ttb6.heim_punkte != 0 OR ttb6.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb7 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu7 ON ttb7.begegnung_id = ttu7.begegnung_id WHERE ISNULL(ttu7.unbestaetigtes_ergebnis_id) AND ttb7.gast_team_id = t1.team_id AND (ttb7.heim_punkte != 0 OR ttb7.gast_punkte != 0)), 0)) AS spielpunkte_verloren," - . "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb8 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu8 ON ttb8.begegnung_id = ttu8.begegnung_id WHERE ISNULL(ttu8.unbestaetigtes_ergebnis_id) AND ttb8.heim_team_id = t1.team_id AND (ttb8.heim_punkte != 0 OR ttb8.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb9 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu9 ON ttb9.begegnung_id = ttu9.begegnung_id WHERE ISNULL(ttu9.unbestaetigtes_ergebnis_id) AND ttb9.gast_team_id = t1.team_id AND (ttb9.heim_punkte != 0 OR ttb9.gast_punkte != 0)), 0)) AS punkte_gewonnen," - . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND (ttb10.heim_punkte != 0 OR ttb10.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND (ttb11.heim_punkte != 0 OR ttb11.gast_punkte != 0)), 0)) AS punkte_verloren" - . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" - . "\n AS werte USING (team_id)" - . "\n SET #__sportsmanager_team.siege = werte.siege," - . "\n #__sportsmanager_team.gesamtpunkte = werte.siege * " . ($veranstaltung->tabellenwertung % 20 <= 3 ? "2" : ($veranstaltung->tabellenwertung % 20 <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung % 20 <= 6 ? " + werte.unentschieden" : "") . " + COALESCE(zusatzpunkte, 0)," - . "\n #__sportsmanager_team.begegnungspunkte = werte.siege * " . ($veranstaltung->tabellenwertung % 20 <= 3 ? "2" : ($veranstaltung->tabellenwertung % 20 <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung % 20 <= 6 ? " + werte.unentschieden" : "") . "," - . "\n #__sportsmanager_team.unentschieden = werte.unentschieden," - . "\n #__sportsmanager_team.niederlagen = werte.niederlagen," - . "\n #__sportsmanager_team.punkte_gewonnen = werte.punkte_gewonnen," - . "\n #__sportsmanager_team.punkte_verloren = werte.punkte_verloren," - . "\n #__sportsmanager_team.punkte_differenz = werte.punkte_gewonnen - werte.punkte_verloren," - . "\n #__sportsmanager_team.punkte_quotient = IF(werte.punkte_verloren = 0, -1, werte.punkte_gewonnen / werte.punkte_verloren)," - . "\n #__sportsmanager_team.spielpunkte_gewonnen = werte.spielpunkte_gewonnen," - . "\n #__sportsmanager_team.spielpunkte_verloren = werte.spielpunkte_verloren," - . "\n #__sportsmanager_team.spielpunkte_differenz = werte.spielpunkte_gewonnen - werte.spielpunkte_verloren," - . "\n #__sportsmanager_team.spielpunkte_quotient = IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren)," - . "\n #__sportsmanager_team.buchholz1 = 0," - . "\n #__sportsmanager_team.buchholz2 = 0" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + // Gastteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->gast_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $rows[0]; - if ($veranstaltung->tabellenwertung >= 21) { - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); + $mailfrom = $app->getCfg('mailfrom'); + $fromname = $app->getCfg('fromname'); + $subject = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT', $heim_team->teamname, $gast_team->teamname); - $punkte = array(); - $buchholz1 = array(); - $buchholz2 = array(); - foreach ($teams as $team) { - $punkte[$team->team_id] = $team->gesamtpunkte; - $buchholz1[$team->team_id] = 0; - $buchholz2[$team->team_id] = 0; - } + if ($angefordert) { + $body = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungId . '&id=' . $id, -1)); + } else if ($abgelehnt) { + $subject = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REJECTED_SUBJECT', $heim_team->teamname, $gast_team->teamname); + $body = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REJECTED_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungId . '&id=' . $id, -1)); + } else if (count($termine) == 0) { + $body = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_PENDING_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname), SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungId . '&id=' . $id, -1)); + } else { + $body = Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY', $heim_team->teamname, $gast_team->teamname, FormatiertesDatum($begegnung->zeitpunkt), $veranstaltung->bezeichnung, ($vorschlagendes_team_id == $heim_team->team_id ? $heim_team->teamname : $gast_team->teamname)); + foreach ($termine as $termin) + $body .= " " . FormatiertesDatum($termin) . "\n"; + $body .= Text::sprintf('COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY2', SportsManagerURL('&task=begegnung_verlegen_form&veranstaltungid=' . $veranstaltungId . '&id=' . $id, -1)); + } - $query = "SELECT heim_team_id, gast_team_id" - . "\n FROM #__sportsmanager_begegnung AS ttb1" - . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $paarungen = $db->loadObjectList(); + $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 . ")"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $mailer = Factory::getContainer()->get(Mail::class); + foreach ($rows as $row) { + $mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } - foreach ($paarungen as $paarung) { - $buchholz1[$paarung->heim_team_id] += $punkte[$paarung->gast_team_id]; - $buchholz1[$paarung->gast_team_id] += $punkte[$paarung->heim_team_id]; - } - foreach ($paarungen as $paarung) { - $buchholz2[$paarung->heim_team_id] += $buchholz1[$paarung->gast_team_id]; - $buchholz2[$paarung->gast_team_id] += $buchholz1[$paarung->heim_team_id]; - } + begegnungVerlegenNotify($begegnung, $rows, $vorschlagendes_team_id, $heim_team, $gast_team); - foreach ($teams as $team) { - $buchholz1_wert = $buchholz1[$team->team_id]; - $buchholz2_wert = $buchholz2[$team->team_id]; - $team_id = $team->team_id; - $query = "UPDATE #__sportsmanager_team" - . "\n SET #__sportsmanager_team.buchholz1 = $buchholz1_wert," - . "\n #__sportsmanager_team.buchholz2 = $buchholz2_wert" - . "\n WHERE team_id = $team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } + if (isJson()) { + begegnungVerlegenForm(); + } else { + redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungId); + } +} +#[NoReturn] function begegnungVerlegenBestaetigen(): void +{ + $app = Factory::getContainer()->get(SiteApplication::class); + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $id = $jInput->get('id', 0, 'INT'); + $veranstaltungid = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungid == 0) { + abortWithError("Missing id!"); + } + $begegnung_historie_id = isJson() ? $jInput->json->get('begegnung_historie_id', 0, 'INT') : $jInput->get('begegnung_historie_id', 0, 'INT'); + $aus_uebersicht = $jInput->get('aus_uebersicht', 0, 'INT'); + + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id); + // Ermitteln, ob Benutzer berechtigt für das Akzeptieren eines Termins ist + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_berechtigt_fuer_team" + . "\n WHERE (SELECT verantwortlich_team_id FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = $id ORDER BY begegnung_historie_id DESC LIMIT 1) = berechtigt_team_id AND berechtigt_user_id = $user_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $berechtigt_fuer_akzeptieren = $db->loadResult(); + if ($berechtigt_fuer_akzeptieren == 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)"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) { + keinZugriff(); + } + $vorschlagendes_team_id = $rows[0]->berechtigt_team_id; + + // Akzeptierten Termine ermitteln + $query = "SELECT * FROM #__sportsmanager_begegnung_historie WHERE begegnung_historie_id = $begegnung_historie_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $termin = $rows[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, 1, '$termin->zeitpunkt', '$user_id', '$vorschlagendes_team_id', NULL, NULL, '$aktueller_zeitpunkt');"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET zeitpunkt = '$termin->zeitpunkt'" + . "\n WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + + // Benachrichtigung schreiben + // Veranstaltung ermitteln + $query = "SELECT #__sportsmanager_veranstaltung.*," + . "\n #__sportsmanager_verschieberegel.verschieberegel_id," + . "\n #__sportsmanager_verschieberegel.initial_ohne_termin," + . "\n #__sportsmanager_verschieberegel.keine_gegenvorschlaege," + . "\n #__sportsmanager_verschieberegel.vorlaufzeit_tage," + . "\n #__sportsmanager_verschieberegel.termine_minimal," + . "\n #__sportsmanager_verschieberegel.termine_maximal" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n LEFT JOIN #__sportsmanager_verschieberegel USING (verschieberegel_id)" + . "\n WHERE veranstaltung_id = $veranstaltungid"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $veranstaltung = $rows[0]; + + // Begegnung ermitteln + $query = "SELECT * FROM #__sportsmanager_begegnung WHERE begegnung_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $begegnung = $rows[0]; + + // Heimteam ermitteln + $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $gast_team = $rows[0]; + + $mailfrom = $app->getCfg('mailfrom'); + $fromname = $app->getCfg('fromname'); + $subject = Text::sprintf('COM_SPORTSMANAGER_EMAIL_GAME_APPOINTMENT_SHIFTED_SUBJECT', $heim_team->teamname, $gast_team->teamname); + $body = Text::sprintf('COM_SPORTSMANAGER_EMAIL_GAME_APPOINTMENT_SHIFTED_BODY', $heim_team->teamname, $gast_team->teamname, "termin", $veranstaltung->bezeichnung, FormatiertesDatum($begegnung->zeitpunkt), SportsManagerURL('&task=begegnung_verlegen_form&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 . ")"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $mailer = Factory::getContainer()->get(Mail::class); + foreach ($rows as $row) { + $mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } + + if (isJson()) { + JSON_sportsmanager::JSON([]); + } else { + redirectSportsManagerURL('&task=' . ($aus_uebersicht ? 'veranstaltungen' : 'veranstaltung') . '&veranstaltungid=' . $veranstaltungid); + } +} + +function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaenderter_teamspiel_modus_id = 0): void +{ + $db = getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_veranstaltung"; + if ($geaenderte_veranstaltung_id != 0) + $query .= "\n WHERE veranstaltung_id = $geaenderte_veranstaltung_id"; + else if ($geaenderter_teamspiel_modus_id != 0) + $query .= "\n WHERE $geaenderter_teamspiel_modus_id = modus_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + foreach ($veranstaltungen as $veranstaltung) { + if ($veranstaltung->tabellenwertung > 0) { + $query = "UPDATE #__sportsmanager_team" + . "\n LEFT JOIN" + . "\n (SELECT t1.team_id," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND ((ttb1.heim_team_id = t1.team_id AND ttb1.heim_spielpunkte > ttb1.gast_spielpunkte) OR (ttb1.gast_team_id = t1.team_id AND ttb1.gast_spielpunkte > ttb1.heim_spielpunkte)) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)) AS siege," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_team_id = t1.team_id OR ttb2.gast_team_id = t1.team_id) AND ttb2.heim_spielpunkte = ttb2.gast_spielpunkte AND (ttb2.heim_punkte != 0 OR ttb2.gast_punkte != 0)) AS unentschieden," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb3 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu3 ON ttb3.begegnung_id = ttu3.begegnung_id WHERE ISNULL(ttu3.unbestaetigtes_ergebnis_id) AND ((ttb3.heim_team_id = t1.team_id AND ttb3.heim_spielpunkte < ttb3.gast_spielpunkte) OR (ttb3.gast_team_id = t1.team_id AND ttb3.gast_spielpunkte < ttb3.heim_spielpunkte)) AND (ttb3.heim_punkte != 0 OR ttb3.gast_punkte != 0)) AS niederlagen," + . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb4 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu4 ON ttb4.begegnung_id = ttu4.begegnung_id WHERE ISNULL(ttu4.unbestaetigtes_ergebnis_id) AND ttb4.heim_team_id = t1.team_id AND (ttb4.heim_punkte != 0 OR ttb4.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb5 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu5 ON ttb5.begegnung_id = ttu5.begegnung_id WHERE ISNULL(ttu5.unbestaetigtes_ergebnis_id) AND ttb5.gast_team_id = t1.team_id AND (ttb5.heim_punkte != 0 OR ttb5.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen," + . "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb6 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu6 ON ttb6.begegnung_id = ttu6.begegnung_id WHERE ISNULL(ttu6.unbestaetigtes_ergebnis_id) AND ttb6.heim_team_id = t1.team_id AND (ttb6.heim_punkte != 0 OR ttb6.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb7 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu7 ON ttb7.begegnung_id = ttu7.begegnung_id WHERE ISNULL(ttu7.unbestaetigtes_ergebnis_id) AND ttb7.gast_team_id = t1.team_id AND (ttb7.heim_punkte != 0 OR ttb7.gast_punkte != 0)), 0)) AS spielpunkte_verloren," + . "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb8 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu8 ON ttb8.begegnung_id = ttu8.begegnung_id WHERE ISNULL(ttu8.unbestaetigtes_ergebnis_id) AND ttb8.heim_team_id = t1.team_id AND (ttb8.heim_punkte != 0 OR ttb8.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb9 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu9 ON ttb9.begegnung_id = ttu9.begegnung_id WHERE ISNULL(ttu9.unbestaetigtes_ergebnis_id) AND ttb9.gast_team_id = t1.team_id AND (ttb9.heim_punkte != 0 OR ttb9.gast_punkte != 0)), 0)) AS punkte_gewonnen," + . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND (ttb10.heim_punkte != 0 OR ttb10.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND (ttb11.heim_punkte != 0 OR ttb11.gast_punkte != 0)), 0)) AS punkte_verloren" + . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" + . "\n AS werte USING (team_id)" + . "\n SET #__sportsmanager_team.siege = werte.siege," + . "\n #__sportsmanager_team.gesamtpunkte = werte.siege * " . ($veranstaltung->tabellenwertung % 20 <= 3 ? "2" : ($veranstaltung->tabellenwertung % 20 <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung % 20 <= 6 ? " + werte.unentschieden" : "") . " + COALESCE(zusatzpunkte, 0)," + . "\n #__sportsmanager_team.begegnungspunkte = werte.siege * " . ($veranstaltung->tabellenwertung % 20 <= 3 ? "2" : ($veranstaltung->tabellenwertung % 20 <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung % 20 <= 6 ? " + werte.unentschieden" : "") . "," + . "\n #__sportsmanager_team.unentschieden = werte.unentschieden," + . "\n #__sportsmanager_team.niederlagen = werte.niederlagen," + . "\n #__sportsmanager_team.punkte_gewonnen = werte.punkte_gewonnen," + . "\n #__sportsmanager_team.punkte_verloren = werte.punkte_verloren," + . "\n #__sportsmanager_team.punkte_differenz = werte.punkte_gewonnen - werte.punkte_verloren," + . "\n #__sportsmanager_team.punkte_quotient = IF(werte.punkte_verloren = 0, -1, werte.punkte_gewonnen / werte.punkte_verloren)," + . "\n #__sportsmanager_team.spielpunkte_gewonnen = werte.spielpunkte_gewonnen," + . "\n #__sportsmanager_team.spielpunkte_verloren = werte.spielpunkte_verloren," + . "\n #__sportsmanager_team.spielpunkte_differenz = werte.spielpunkte_gewonnen - werte.spielpunkte_verloren," + . "\n #__sportsmanager_team.spielpunkte_quotient = IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren)," + . "\n #__sportsmanager_team.buchholz1 = 0," + . "\n #__sportsmanager_team.buchholz2 = 0" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if ($veranstaltung->tabellenwertung >= 21) { $query = "SELECT * FROM #__sportsmanager_team" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; - if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7) - $query .= "\n ORDER BY gesamtpunkte DESC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8) - $query .= "\n ORDER BY gesamtpunkte DESC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) - $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) - $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 10) - $query .= "\n ORDER BY spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 11) - $query .= "\n ORDER BY spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; - else if ($veranstaltung->tabellenwertung == 23 || $veranstaltung->tabellenwertung == 26 || $veranstaltung->tabellenwertung == 29) - $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, teamname"; - else // ($veranstaltung->tabellenwertung == 3, 6, 9) - $query .= "\n ORDER BY gesamtpunkte DESC, teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $teams = $db->loadObjectList(); - $platz = 1; - $tatsaechlicher_platz = 0; - $gesamtpunkte = 0; - $spielpunkte_differenz = 0; - $spielpunkte_quotient = 0; - $punkte_differenz = 0; - $punkte_quotient = 0; - $buchholz1_wert = 0; - $buchholz2_wert = 0; + $punkte = array(); + $buchholz1 = array(); + $buchholz2 = array(); foreach ($teams as $team) { - if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) - $tatsaechlicher_platz = $platz; + $punkte[$team->team_id] = $team->gesamtpunkte; + $buchholz1[$team->team_id] = 0; + $buchholz2[$team->team_id] = 0; + } + + $query = "SELECT heim_team_id, gast_team_id" + . "\n FROM #__sportsmanager_begegnung AS ttb1" + . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $paarungen = $db->loadObjectList(); + + foreach ($paarungen as $paarung) { + $buchholz1[$paarung->heim_team_id] += $punkte[$paarung->gast_team_id]; + $buchholz1[$paarung->gast_team_id] += $punkte[$paarung->heim_team_id]; + } + foreach ($paarungen as $paarung) { + $buchholz2[$paarung->heim_team_id] += $buchholz1[$paarung->gast_team_id]; + $buchholz2[$paarung->gast_team_id] += $buchholz1[$paarung->heim_team_id]; + } + + foreach ($teams as $team) { + $buchholz1_wert = $buchholz1[$team->team_id]; + $buchholz2_wert = $buchholz2[$team->team_id]; + $team_id = $team->team_id; $query = "UPDATE #__sportsmanager_team" - . "\n SET platz = $tatsaechlicher_platz"; - $query .= "\n WHERE team_id = $team->team_id"; + . "\n SET #__sportsmanager_team.buchholz1 = $buchholz1_wert," + . "\n #__sportsmanager_team.buchholz2 = $buchholz2_wert" + . "\n WHERE team_id = $team_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $gesamtpunkte = $team->gesamtpunkte; -// $begegnungspunkte = $team->begegnungspunkte; -// $zusatzpunkte = $team->zusatzpunkte; - $punkte_quotient = $team->punkte_quotient; - $punkte_differenz = $team->punkte_differenz; -// $punkte_gewonnen = $team->punkte_gewonnen; -// $punkte_verloren = $team->punkte_verloren; - $spielpunkte_quotient = $team->spielpunkte_quotient; - $spielpunkte_differenz = $team->spielpunkte_differenz; -// $spielpunkte_gewonnen = $team->spielpunkte_gewonnen; -// $spielpunkte_verloren = $team->spielpunkte_verloren; - $buchholz1_wert = $team->buchholz1; - $buchholz2_wert = $team->buchholz2; - $platz++; } - } else if ($veranstaltung->tabellenwertung == -1) { - $query = "SELECT #__sportsmanager_team.*," - . "\n (SELECT spieltag FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND (ttb1.heim_spielpunkte != 0 OR ttb1.gast_spielpunkte != 0) AND (ttb1.heim_team_id = #__sportsmanager_team.team_id OR ttb1.gast_team_id = #__sportsmanager_team.team_id) ORDER BY spieltag DESC LIMIT 1) AS letzter_spieltag," - . "\n (SELECT IF((heim_team_id = team_id AND heim_spielpunkte > gast_spielpunkte) OR (gast_team_id = team_id AND heim_spielpunkte < gast_spielpunkte), TRUE, FALSE) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_spielpunkte != 0 OR ttb2.gast_spielpunkte != 0) AND (ttb2.heim_team_id = #__sportsmanager_team.team_id OR ttb2.gast_team_id = #__sportsmanager_team.team_id) ORDER BY spieltag DESC LIMIT 1) AS zuletzt_gewonnen" - . "\n FROM #__sportsmanager_team" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id" - . "\n ORDER BY letzter_spieltag DESC, zuletzt_gewonnen DESC, teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $query = "UPDATE #__sportsmanager_team" - . "\n SET #__sportsmanager_team.platz = NULL," - . "\n #__sportsmanager_team.siege = NULL," - . "\n #__sportsmanager_team.gesamtpunkte = NULL," - . "\n #__sportsmanager_team.begegnungspunkte = NULL," - . "\n #__sportsmanager_team.unentschieden = NULL," - . "\n #__sportsmanager_team.niederlagen = NULL," - . "\n #__sportsmanager_team.punkte_gewonnen = NULL," - . "\n #__sportsmanager_team.punkte_verloren = NULL," - . "\n #__sportsmanager_team.punkte_differenz = NULL," - . "\n #__sportsmanager_team.punkte_quotient = NULL," - . "\n #__sportsmanager_team.spielpunkte_gewonnen = NULL," - . "\n #__sportsmanager_team.spielpunkte_verloren = NULL," - . "\n #__sportsmanager_team.spielpunkte_differenz = NULL," - . "\n #__sportsmanager_team.spielpunkte_quotient = NULL," - . "\n #__sportsmanager_team.buchholz1 = NULL," - . "\n #__sportsmanager_team.buchholz2 = NULL" - . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (count($teams) > 0 && $teams[0]->letzter_spieltag >= 19992) { - $letzter_spieltag = 0; - $spieltag_einmal_vollstaendig = FALSE; - $spieltag_verlorene_begegnungen = 0; - $letzter_gespielter_spieltag_platz = 0; - $letzter_gespielter_spieltag_mannschaften = 0; - $teams_aufgefuehrt = 0; - $spieltag_mannschaften = 0; - foreach ($teams as $team) { - if ($team->letzter_spieltag >= 20000) { - if (99 - floor(($team->letzter_spieltag - 20000) / 100) != 1) - continue; - $neuer_platz = 99 - ($team->letzter_spieltag % 100) + ($team->zuletzt_gewonnen ? 0 : 1); - } - else if ($team->letzter_spieltag == 19999) - $neuer_platz = $team->zuletzt_gewonnen ? 1 : 2; - else if ($team->letzter_spieltag == 19998) - $neuer_platz = $team->zuletzt_gewonnen ? 3 : 4; - else if ($team->letzter_spieltag >= 19992) { - if ($team->zuletzt_gewonnen) - continue; - $neuer_platz = pow(2, 19998 - $team->letzter_spieltag) + 1; - } - else { - if ($team->letzter_spieltag == NULL && !$spieltag_einmal_vollstaendig) - break; - if ($team->letzter_spieltag != $letzter_spieltag) - $neuer_platz = $letzter_gespielter_spieltag_platz + $letzter_gespielter_spieltag_mannschaften; - } - - if ($team->letzter_spieltag != $letzter_spieltag) - $spieltag_mannschaften = 1; - else - $spieltag_mannschaften++; - - if ($team->letzter_spieltag != $letzter_spieltag) - $spieltag_verlorene_begegnungen = $team->zuletzt_gewonnen ? 0 : 1; - else if (!$team->zuletzt_gewonnen) - $spieltag_verlorene_begegnungen++; - if ($team->letzter_spieltag == 19999 || $team->letzter_spieltag == 19998 || - ($team->letzter_spieltag >= 19992 && $team->letzter_spieltag <= 19997 && $spieltag_verlorene_begegnungen == pow(2, 19998 - $team->letzter_spieltag))) - $spieltag_einmal_vollstaendig = TRUE; - - $query = "UPDATE #__sportsmanager_team" - . "\n SET #__sportsmanager_team.platz = $neuer_platz" - . "\n WHERE team_id = $team->team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $letzter_spieltag = $team->letzter_spieltag; - if ($letzter_spieltag != NULL && $neuer_platz >= $letzter_gespielter_spieltag_platz) { - if ($letzter_gespielter_spieltag_platz != $neuer_platz) { - $letzter_gespielter_spieltag_mannschaften = 1; - $letzter_gespielter_spieltag_platz = $neuer_platz; - } else - $letzter_gespielter_spieltag_mannschaften++; - } - $teams_aufgefuehrt++; - } - } - } else { // $veranstaltung->tabellenwertung == -2 } - } - } - - function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE) { - $db = & getDatabase(); - - if ($geaenderte_spieler_id != 0) { - $query = "SELECT DISTINCT #__sportsmanager_rangliste.*" - . "\n FROM #__sportsmanager_turniermeldung_spieler" - . "\n INNER JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id)" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n INNER JOIN #__sportsmanager_rangliste_turnierdisziplin USING (turnierdisziplin_id)" - . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)" - . "\n WHERE spieler_id = $geaenderte_spieler_id AND rundenstufe = 0"; - } else if ($berechnungen_auswerten) { - $session_id = redirectRequestGetSessionId(); - $query = "SELECT DISTINCT #__sportsmanager_rangliste.*" - . "\n FROM #__sportsmanager_berechnung" - . "\n INNER JOIN #__sportsmanager_rangliste ON id = rangliste_id" - . "\n WHERE typ = 'rangliste' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'")); + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; + if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7) + $query .= "\n ORDER BY gesamtpunkte DESC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8) + $query .= "\n ORDER BY gesamtpunkte DESC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) + $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) + $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 10) + $query .= "\n ORDER BY spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 11) + $query .= "\n ORDER BY spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + else if ($veranstaltung->tabellenwertung == 23 || $veranstaltung->tabellenwertung == 26 || $veranstaltung->tabellenwertung == 29) + $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, teamname"; + else // ($veranstaltung->tabellenwertung == 3, 6, 9) + $query .= "\n ORDER BY gesamtpunkte DESC, teamname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $berechnungen = $db->loadObjectList(); - } else if ($geaenderte_rangliste_id != 0) { - $query = "SELECT * FROM #__sportsmanager_rangliste" - . "\n WHERE rangliste_id = $geaenderte_rangliste_id"; - } else if ($geaenderte_turnierdisziplin_id != 0) { - $query = "SELECT DISTINCT #__sportsmanager_rangliste.*" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)" - . "\n WHERE turnierdisziplin_id = $geaenderte_turnierdisziplin_id" - . "\nUNION" - . "\nSELECT DISTINCT r2.*" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" - . "\n INNER JOIN #__sportsmanager_rangliste AS r2 USING (rangliste_id)" - . "\n WHERE turnierdisziplin_id = $geaenderte_turnierdisziplin_id"; - } else { - $query = "SELECT * FROM #__sportsmanager_rangliste"; + $teams = $db->loadObjectList(); + + $platz = 1; + $tatsaechlicher_platz = 0; + $gesamtpunkte = 0; + $spielpunkte_differenz = 0; + $spielpunkte_quotient = 0; + $punkte_differenz = 0; + $punkte_quotient = 0; + $buchholz1_wert = 0; + $buchholz2_wert = 0; + foreach ($teams as $team) { + if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) + $tatsaechlicher_platz = $platz; + $query = "UPDATE #__sportsmanager_team" + . "\n SET platz = $tatsaechlicher_platz"; + $query .= "\n WHERE team_id = $team->team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $gesamtpunkte = $team->gesamtpunkte; + $punkte_quotient = $team->punkte_quotient; + $punkte_differenz = $team->punkte_differenz; + $spielpunkte_quotient = $team->spielpunkte_quotient; + $spielpunkte_differenz = $team->spielpunkte_differenz; + $buchholz1_wert = $team->buchholz1; + $buchholz2_wert = $team->buchholz2; + $platz++; + } + } else if ($veranstaltung->tabellenwertung == -1) { + $query = "SELECT #__sportsmanager_team.*," + . "\n (SELECT spieltag FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND (ttb1.heim_spielpunkte != 0 OR ttb1.gast_spielpunkte != 0) AND (ttb1.heim_team_id = #__sportsmanager_team.team_id OR ttb1.gast_team_id = #__sportsmanager_team.team_id) ORDER BY spieltag DESC LIMIT 1) AS letzter_spieltag," + . "\n (SELECT IF((heim_team_id = team_id AND heim_spielpunkte > gast_spielpunkte) OR (gast_team_id = team_id AND heim_spielpunkte < gast_spielpunkte), TRUE, FALSE) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_spielpunkte != 0 OR ttb2.gast_spielpunkte != 0) AND (ttb2.heim_team_id = #__sportsmanager_team.team_id OR ttb2.gast_team_id = #__sportsmanager_team.team_id) ORDER BY spieltag DESC LIMIT 1) AS zuletzt_gewonnen" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id" + . "\n ORDER BY letzter_spieltag DESC, zuletzt_gewonnen DESC, teamname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $query = "UPDATE #__sportsmanager_team" + . "\n SET #__sportsmanager_team.platz = NULL," + . "\n #__sportsmanager_team.siege = NULL," + . "\n #__sportsmanager_team.gesamtpunkte = NULL," + . "\n #__sportsmanager_team.begegnungspunkte = NULL," + . "\n #__sportsmanager_team.unentschieden = NULL," + . "\n #__sportsmanager_team.niederlagen = NULL," + . "\n #__sportsmanager_team.punkte_gewonnen = NULL," + . "\n #__sportsmanager_team.punkte_verloren = NULL," + . "\n #__sportsmanager_team.punkte_differenz = NULL," + . "\n #__sportsmanager_team.punkte_quotient = NULL," + . "\n #__sportsmanager_team.spielpunkte_gewonnen = NULL," + . "\n #__sportsmanager_team.spielpunkte_verloren = NULL," + . "\n #__sportsmanager_team.spielpunkte_differenz = NULL," + . "\n #__sportsmanager_team.spielpunkte_quotient = NULL," + . "\n #__sportsmanager_team.buchholz1 = NULL," + . "\n #__sportsmanager_team.buchholz2 = NULL" + . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if (count($teams) > 0 && $teams[0]->letzter_spieltag >= 19992) { + $letzter_spieltag = 0; + $spieltag_einmal_vollstaendig = FALSE; + $spieltag_verlorene_begegnungen = 0; + $letzter_gespielter_spieltag_platz = 0; + $letzter_gespielter_spieltag_mannschaften = 0; + foreach ($teams as $team) { + $neuer_platz = null; + if ($team->letzter_spieltag >= 20000) { + if (99 - floor(($team->letzter_spieltag - 20000) / 100) != 1) + continue; + $neuer_platz = 99 - ($team->letzter_spieltag % 100) + ($team->zuletzt_gewonnen ? 0 : 1); + } else if ($team->letzter_spieltag == 19999) + $neuer_platz = $team->zuletzt_gewonnen ? 1 : 2; + else if ($team->letzter_spieltag == 19998) + $neuer_platz = $team->zuletzt_gewonnen ? 3 : 4; + else if ($team->letzter_spieltag >= 19992) { + if ($team->zuletzt_gewonnen) + continue; + $neuer_platz = pow(2, 19998 - $team->letzter_spieltag) + 1; + } else { + if ($team->letzter_spieltag == NULL && !$spieltag_einmal_vollstaendig) + break; + if ($team->letzter_spieltag != $letzter_spieltag) + $neuer_platz = $letzter_gespielter_spieltag_platz + $letzter_gespielter_spieltag_mannschaften; + } + + if ($team->letzter_spieltag != $letzter_spieltag) + $spieltag_verlorene_begegnungen = $team->zuletzt_gewonnen ? 0 : 1; + else if (!$team->zuletzt_gewonnen) + $spieltag_verlorene_begegnungen++; + if ($team->letzter_spieltag == 19999 || $team->letzter_spieltag == 19998 || + ($team->letzter_spieltag >= 19992 && $team->letzter_spieltag <= 19997 && $spieltag_verlorene_begegnungen == pow(2, 19998 - $team->letzter_spieltag))) + $spieltag_einmal_vollstaendig = TRUE; + + $query = "UPDATE #__sportsmanager_team" + . "\n SET #__sportsmanager_team.platz = $neuer_platz" + . "\n WHERE team_id = $team->team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $letzter_spieltag = $team->letzter_spieltag; + if ($letzter_spieltag != NULL && $neuer_platz >= $letzter_gespielter_spieltag_platz) { + if ($letzter_gespielter_spieltag_platz != $neuer_platz) { + $letzter_gespielter_spieltag_mannschaften = 1; + $letzter_gespielter_spieltag_platz = $neuer_platz; + } else + $letzter_gespielter_spieltag_mannschaften++; + } + } + } } + } +} + +function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void +{ + $db = getDatabase(); + + if ($geaenderte_spieler_id != 0) { + $query = "SELECT DISTINCT #__sportsmanager_rangliste.*" + . "\n FROM #__sportsmanager_turniermeldung_spieler" + . "\n INNER JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id)" + . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n INNER JOIN #__sportsmanager_rangliste_turnierdisziplin USING (turnierdisziplin_id)" + . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)" + . "\n WHERE spieler_id = $geaenderte_spieler_id AND rundenstufe = 0"; + } else if ($geaenderte_rangliste_id != 0) { + $query = "SELECT * FROM #__sportsmanager_rangliste" + . "\n WHERE rangliste_id = $geaenderte_rangliste_id"; + } else if ($geaenderte_turnierdisziplin_id != 0) { + $query = "SELECT DISTINCT #__sportsmanager_rangliste.*" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)" + . "\n WHERE turnierdisziplin_id = $geaenderte_turnierdisziplin_id" + . "\nUNION" + . "\nSELECT DISTINCT r2.*" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" + . "\n INNER JOIN #__sportsmanager_rangliste AS r2 USING (rangliste_id)" + . "\n WHERE turnierdisziplin_id = $geaenderte_turnierdisziplin_id"; + } else { + $query = "SELECT * FROM #__sportsmanager_rangliste"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + $error_level = error_reporting(E_ERROR); + $math = new MathParserSM; + + foreach ($ranglisten as $rangliste_index => $rangliste) { + $rangliste_id = $rangliste->rangliste_id; + $rangliste->lizenzen = explode(',', $rangliste->lizenzen); + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n WHERE #__sportsmanager_turnierdisziplin.status > 0 AND rangliste_id = $rangliste_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $ranglisten = $db->loadObjectList(); + $turnierdisziplinen = $db->loadObjectList(); - $error_level = error_reporting(E_ERROR); - $math = new MathParserSM; + $query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $rangliste_id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - foreach ($ranglisten as $rangliste_index => $rangliste) { - $rangliste_id = $rangliste->rangliste_id; - $rangliste->lizenzen = explode(',', $rangliste->lizenzen); - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n WHERE #__sportsmanager_turnierdisziplin.status > 0 AND rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turnierdisziplinen = $db->loadObjectList(); + $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $rangliste_id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - $query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $rangliste_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $punkte = array(); + $teilnahmen = array(); - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $rangliste_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $punkte = array(); - $teilnahmen = array(); - - $systeme = array(); - $systemepunkte = array(); - foreach ($turnierdisziplinen as $turnierdisziplin) { - $systemid = $turnierdisziplin->system_id != NULL ? $turnierdisziplin->system_id : $rangliste->system_id; - if ($systemid == 0) - continue; - if (!isset($systeme[$systemid])) { - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $systemid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $systeme[$systemid] = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $systemid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systemepunkte[$systemid] = $db->loadObjectList(); - } - $system = $systeme[$systemid]; - $systempunkte = $systemepunkte[$systemid]; - - $query = "SELECT turniermeldung_id, platz, spieler_id, geburtsjahr, geschlecht, lizenz" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE turnierdisziplin_id = $turnierdisziplin->turnierdisziplin_id AND rundenstufe = 0" // AND NOT ISNULL(spieler_id) - . "\n ORDER BY turniermeldung_id"; + $systeme = array(); + $systemepunkte = array(); + foreach ($turnierdisziplinen as $turnierdisziplin) { + $systemid = $turnierdisziplin->system_id != NULL ? $turnierdisziplin->system_id : $rangliste->system_id; + if ($systemid == 0) + continue; + if (!isset($systeme[$systemid])) { + $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $systemid"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $turnierplatzierungen = $db->loadObjectList(); + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $systeme[$systemid] = $rows[0]; - $jahr = $turnierdisziplin->beginn != NULL ? intval(substr($turnierdisziplin->beginn, 0, 4)) : 0; - $teilnehmer = 0; - $turniermeldung_id = 0; - foreach ($turnierplatzierungen as $turnierplatzierung) { - if ($turnierplatzierung->turniermeldung_id != $turniermeldung_id) { - $teilnehmer++; - $turniermeldung_id = $turnierplatzierung->turniermeldung_id; - } + $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $systemid"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $systemepunkte[$systemid] = $db->loadObjectList(); + } + $system = $systeme[$systemid]; + $systempunkte = $systemepunkte[$systemid]; + + $query = "SELECT turniermeldung_id, platz, spieler_id, geburtsjahr, geschlecht, lizenz" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE turnierdisziplin_id = $turnierdisziplin->turnierdisziplin_id AND rundenstufe = 0" // AND NOT ISNULL(spieler_id) + . "\n ORDER BY turniermeldung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $turnierplatzierungen = $db->loadObjectList(); + + $jahr = $turnierdisziplin->beginn != NULL ? intval(substr($turnierdisziplin->beginn, 0, 4)) : 0; + $teilnehmer = 0; + $turniermeldung_id = 0; + foreach ($turnierplatzierungen as $turnierplatzierung) { + if ($turnierplatzierung->turniermeldung_id != $turniermeldung_id) { + $teilnehmer++; + $turniermeldung_id = $turnierplatzierung->turniermeldung_id; + } + } + + $wertung_multiplikator_normal = $turnierdisziplin->wertung > 0 ? $turnierdisziplin->wertung : (1 / abs($turnierdisziplin->wertung)); + $wertung_multiplikator_reduziert = $turnierdisziplin->doppel_teilwertung == 0 ? 0 : ($turnierdisziplin->doppel_teilwertung > 0 ? ($wertung_multiplikator_normal * $turnierdisziplin->doppel_teilwertung) : ($wertung_multiplikator_normal / abs($turnierdisziplin->doppel_teilwertung))); + $wertung_multiplikator_einheitlich = $wertung_multiplikator_normal == $wertung_multiplikator_reduziert; + try { + $math->setVariable('m', $wertung_multiplikator_normal); + $math->setVariable('n', $teilnehmer); + } catch (Exception $e) { + Log::add('an error occurred: ' . $e->getMessage(), Log::WARNING, 'com_sportsmanager'); + } + if ($system->funktion != NULL) + $math->setExpression($system->funktion); + + $db->transactionStart(); + $meldungen = array(); + foreach ($turnierplatzierungen as $index => $turnierplatzierung) { + if (empty($turnierplatzierung->spieler_id)) + continue; + + if (!$rangliste->ohnealter && (empty($jahr) || empty($turnierplatzierung->geburtsjahr))) + continue; + if (!empty($turnierplatzierung->geburtsjahr) && !empty($jahr) && (!empty($rangliste->minalter) || !empty($rangliste->maxalter))) { + if (!empty($rangliste->minalter) && $jahr - $turnierplatzierung->geburtsjahr - 1 < $rangliste->minalter) + continue; + if (!empty($rangliste->maxalter) && $jahr - $turnierplatzierung->geburtsjahr - 1 > $rangliste->maxalter) + continue; + } + if (!empty($rangliste->geschlecht)) { + if ($rangliste->geschlecht == 1 && $turnierplatzierung->geschlecht != 'M') + continue; + if ($rangliste->geschlecht == 2 && $turnierplatzierung->geschlecht == 'M') + continue; + } + if (!empty($rangliste->lizenzen) && count($rangliste->lizenzen)) { + if (!in_array($turnierplatzierung->lizenz, $rangliste->lizenzen)) + continue; // TODO @TimWedemann prüfen } - $math->setVariable('n', $teilnehmer); - $wertung_multiplikator_normal = $turnierdisziplin->wertung > 0 ? $turnierdisziplin->wertung : (1 / abs($turnierdisziplin->wertung)); - $wertung_multiplikator_reduziert = $turnierdisziplin->doppel_teilwertung == 0 ? 0 : ($turnierdisziplin->doppel_teilwertung > 0 ? ($wertung_multiplikator_normal * $turnierdisziplin->doppel_teilwertung) : ($wertung_multiplikator_normal / abs($turnierdisziplin->doppel_teilwertung))); - $wertung_multiplikator_einheitlich = $wertung_multiplikator_normal == $wertung_multiplikator_reduziert; - $math->setVariable('m', $wertung_multiplikator_normal); - if ($systemid != 0 && $system->funktion != NULL) - $math->setExpression($system->funktion); + $meldung_einzelner_doppelspieler_gewertet = FALSE; + if (!isset($meldungen[$turnierplatzierung->turniermeldung_id])) { + if ($turnierdisziplin->typ == 1) { + if (isset($turnierplatzierungen[$index + 1]) && $turnierplatzierungen[$index + 1]->turniermeldung_id == $turnierplatzierung->turniermeldung_id) { + $naechste_turnierplatzierung = $turnierplatzierungen[$index + 1]; - $db->transactionStart(); - $meldungen = array(); - foreach ($turnierplatzierungen as $index => $turnierplatzierung) { - if (empty($turnierplatzierung->spieler_id)) - continue; - - if (!$rangliste->ohnealter && (empty($jahr) || empty($turnierplatzierung->geburtsjahr))) - continue; - if (!empty($turnierplatzierung->geburtsjahr) && !empty($jahr) && (!empty($rangliste->minalter) || !empty($rangliste->maxalter))) { - if (!empty($rangliste->minalter) && $jahr - $turnierplatzierung->geburtsjahr - 1 < $rangliste->minalter) - continue; - if (!empty($rangliste->maxalter) && $jahr - $turnierplatzierung->geburtsjahr - 1 > $rangliste->maxalter) - continue; - } - if (!empty($rangliste->geschlecht)) { - if ($rangliste->geschlecht == 1 && $turnierplatzierung->geschlecht != 'M') - continue; - if ($rangliste->geschlecht == 2 && $turnierplatzierung->geschlecht == 'M') - continue; - } - if (!empty($rangliste->lizenzen) && count($rangliste->lizenzen)) { - if (!in_array($turnierplatzierung->lizenz, $rangliste->lizenzen)) - continue; // TODO @TimWedemann prüfen - } - - $meldung_einzelner_doppelspieler_gewertet = FALSE; - if (!isset($meldungen[$turnierplatzierung->turniermeldung_id])) { - if ($turnierdisziplin->typ == 1) { - if (isset($turnierplatzierungen[$index + 1]) && $turnierplatzierungen[$index + 1]->turniermeldung_id == $turnierplatzierung->turniermeldung_id) { - $naechste_turnierplatzierung = $turnierplatzierungen[$index + 1]; - - if (empty($naechste_turnierplatzierung->spieler_id)) - $meldung_einzelner_doppelspieler_gewertet = TRUE; - else if (!$rangliste->ohnealter && empty($naechste_turnierplatzierung->geburtsjahr)) + if (empty($naechste_turnierplatzierung->spieler_id)) $meldung_einzelner_doppelspieler_gewertet = TRUE; - else { + else if (!$rangliste->ohnealter && empty($naechste_turnierplatzierung->geburtsjahr)) + $meldung_einzelner_doppelspieler_gewertet = TRUE; + else { if (!empty($naechste_turnierplatzierung->geburtsjahr) && !empty($jahr) && (!empty($rangliste->minalter) || !empty($rangliste->maxalter))) { if (!empty($rangliste->minalter) && $jahr - $naechste_turnierplatzierung->geburtsjahr - 1 < $rangliste->minalter) - $meldung_einzelner_doppelspieler_gewertet = TRUE; + $meldung_einzelner_doppelspieler_gewertet = TRUE; else if (!empty($rangliste->maxalter) && $jahr - $naechste_turnierplatzierung->geburtsjahr - 1 > $rangliste->maxalter) - $meldung_einzelner_doppelspieler_gewertet = TRUE; + $meldung_einzelner_doppelspieler_gewertet = TRUE; } if (!$meldung_einzelner_doppelspieler_gewertet && !empty($rangliste->geschlecht)) { if ($rangliste->geschlecht == 1 && $naechste_turnierplatzierung->geschlecht != 'M') - $meldung_einzelner_doppelspieler_gewertet = TRUE; + $meldung_einzelner_doppelspieler_gewertet = TRUE; if ($rangliste->geschlecht == 2 && $naechste_turnierplatzierung->geschlecht == 'M') - $meldung_einzelner_doppelspieler_gewertet = TRUE; + $meldung_einzelner_doppelspieler_gewertet = TRUE; } // TODO @TimWedemann muss hier was beachtet werden bzgl. Lizenzen? - } - } else - $meldung_einzelner_doppelspieler_gewertet = TRUE; - - if ($meldung_einzelner_doppelspieler_gewertet && $wertung_multiplikator_reduziert == 0) - continue; - } - $meldungen[$turnierplatzierung->turniermeldung_id] = array($turnierplatzierung->spieler_id); - } else if (!in_array($turnierplatzierung->spieler_id, $meldungen[$turnierplatzierung->turniermeldung_id])) - array_push($meldungen[$turnierplatzierung->turniermeldung_id], $turnierplatzierung->spieler_id); - - if (!isset($punkte[$turnierplatzierung->spieler_id])) { - $punkte[$turnierplatzierung->spieler_id] = array(); - $teilnahmen[$turnierplatzierung->spieler_id] = 1; - } else - $teilnahmen[$turnierplatzierung->spieler_id] ++; - - $p = 0; - if ($systemid != 0 && $system->funktion == NULL) { - foreach ($systempunkte as $sp) { - if (($sp->platz_min == 0 || $sp->platz_min <= $turnierplatzierung->platz) && ($sp->platz_max == 0 || $turnierplatzierung->platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { - - if ($turnierdisziplin->typ == 1 && $meldung_einzelner_doppelspieler_gewertet && $turnierdisziplin->doppel_teilwertung < 0) // Doppel - $p = round($sp->punkte * $wertung_multiplikator_reduziert); - else - $p = round($sp->punkte * $wertung_multiplikator_normal); - break; } + } else + $meldung_einzelner_doppelspieler_gewertet = TRUE; + + if ($meldung_einzelner_doppelspieler_gewertet && $wertung_multiplikator_reduziert == 0) + continue; + } + $meldungen[$turnierplatzierung->turniermeldung_id] = array($turnierplatzierung->spieler_id); + } else if (!in_array($turnierplatzierung->spieler_id, $meldungen[$turnierplatzierung->turniermeldung_id])) + $meldungen[$turnierplatzierung->turniermeldung_id][] = $turnierplatzierung->spieler_id; + + if (!isset($punkte[$turnierplatzierung->spieler_id])) { + $punkte[$turnierplatzierung->spieler_id] = array(); + $teilnahmen[$turnierplatzierung->spieler_id] = 1; + } else + $teilnahmen[$turnierplatzierung->spieler_id]++; + + $p = 0; + if ($system->funktion == NULL) { + foreach ($systempunkte as $sp) { + if (($sp->platz_min == 0 || $sp->platz_min <= $turnierplatzierung->platz) && ($sp->platz_max == 0 || $turnierplatzierung->platz <= $sp->platz_max) && ($sp->teilnehmer_min == 0 || $sp->teilnehmer_min <= $teilnehmer) && ($sp->teilnehmer_max == 0 || $teilnehmer <= $sp->teilnehmer_max)) { + + if ($turnierdisziplin->typ == 1 && $meldung_einzelner_doppelspieler_gewertet && $turnierdisziplin->doppel_teilwertung < 0) // Doppel + $p = round($sp->punkte * $wertung_multiplikator_reduziert); + else + $p = round($sp->punkte * $wertung_multiplikator_normal); + break; } - } else { + } + } else { + try { $math->setVariable('p', $turnierplatzierung->platz); if ($meldung_einzelner_doppelspieler_gewertet && !$wertung_multiplikator_einheitlich) { $math->setVariable('m', $wertung_multiplikator_reduziert); - try { - $p = round($math->getValue()); - } catch (Exception $e) { - - } + $p = round($math->getValue()); $math->setVariable('m', $wertung_multiplikator_normal); } else { - try { - $p = round($math->getValue()); - } catch (Exception $e) { - - } + $p = round($math->getValue()); } + } catch (Exception $e) { + Log::add('an error occurred: ' . $e->getMessage(), Log::WARNING, 'com_sportsmanager'); } - array_push($punkte[$turnierplatzierung->spieler_id], $p); - $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p') ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);"; + } + $punkte[$turnierplatzierung->spieler_id][] = $p; + $query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p') ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + $db->transactionCommit(); + } + + $punkte_summe = array(); + $anzahl_turnierdisziplinen = count($turnierdisziplinen); + $bewertete_turnierdisziplinen = $rangliste->streichergebnisse < 0 ? min($anzahl_turnierdisziplinen, abs($rangliste->streichergebnisse)) : ($anzahl_turnierdisziplinen - floor($anzahl_turnierdisziplinen * min(max($rangliste->streichergebnisse, 0), 100) / 100)); + foreach ($punkte as $spieler_id => $spieler_punkte) { + rsort($spieler_punkte, SORT_NUMERIC); + $spieler_punkte_summe = 0; + + for ($i = 0; $i < min($bewertete_turnierdisziplinen, count($spieler_punkte)); $i++) + $spieler_punkte_summe += $spieler_punkte[$i]; + + $punkte_summe[$spieler_id] = $spieler_punkte_summe; + } + + arsort($punkte_summe, SORT_NUMERIC); + $platz = 1; + $tatsaechlicher_platz = 1; + $spieler_punkte = 0; + + $db->transactionStart(); + foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) { + $spieler_teilnahmen = $teilnahmen[$spieler_id]; + if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe) + $tatsaechlicher_platz = $platz; + + $query = "INSERT INTO #__sportsmanager_rangliste_punkte (rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $spieler_punkte = $spieler_punkte_summe; + $platz++; + } + $db->transactionCommit(); + + // Unabhängig von $berechnungen_auswerten ausführen, um ggf. vorhandene Inhalte zu entfernen + $query = "DELETE FROM #__sportsmanager_berechnung WHERE typ = 'rangliste' AND id = $rangliste->rangliste_id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if (laufzeit() >= 10) { + if (!$berechnungen_auswerten) { + $session_id = redirectSessionIdSetzen(); + $db->transactionStart(); + for ($i = $rangliste_index + 1; $i < count($ranglisten); $i++) { + $rangliste_id = $ranglisten[$i]->rangliste_id; + $query = "INSERT INTO #__sportsmanager_berechnung (session_id, typ, id) VALUES ('$session_id', 'rangliste', '$rangliste_id');"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } } $db->transactionCommit(); } - - $punkte_summe = array(); - $anzahl_turnierdisziplinen = count($turnierdisziplinen); - $bewertete_turnierdisziplinen = $rangliste->streichergebnisse < 0 ? min($anzahl_turnierdisziplinen, abs($rangliste->streichergebnisse)) : ($anzahl_turnierdisziplinen - floor($anzahl_turnierdisziplinen * min(max($rangliste->streichergebnisse, 0), 100) / 100)); - foreach ($punkte as $spieler_id => $spieler_punkte) { - rsort($spieler_punkte, SORT_NUMERIC); - $spieler_punkte_summe = 0; - - for ($i = 0; $i < min($bewertete_turnierdisziplinen, count($spieler_punkte)); $i++) - $spieler_punkte_summe += $spieler_punkte[$i]; - - $punkte_summe[$spieler_id] = $spieler_punkte_summe; - } - - arsort($punkte_summe, SORT_NUMERIC); - $platz = 1; - $tatsaechlicher_platz = 1; - $spieler_punkte = 0; - - $db->transactionStart(); - foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) { - $spieler_teilnahmen = $teilnahmen[$spieler_id]; - if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe) - $tatsaechlicher_platz = $platz; - - $query = "INSERT INTO #__sportsmanager_rangliste_punkte (rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $spieler_punkte = $spieler_punkte_summe; - $platz++; - } - $db->transactionCommit(); - - // Unabhängig von $berechnungen_auswerten ausführen, um ggf. vorhandene Inhalte zu entfernen - $query = "DELETE FROM #__sportsmanager_berechnung WHERE typ = 'rangliste' AND id = $rangliste->rangliste_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (laufzeit() >= 10) { - if (!$berechnungen_auswerten) { - $session_id = redirectSessionIdSetzen(); - $db->transactionStart(); - for ($i = $rangliste_index + 1; $i < count($ranglisten); $i++) { - $rangliste_id = $ranglisten[$i]->rangliste_id; - $query = "INSERT INTO #__sportsmanager_berechnung (session_id, typ, id) VALUES ('$session_id', 'rangliste', '$rangliste_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - $db->transactionCommit(); - } - break; - } + break; } - - error_reporting($error_level); - } + error_reporting($error_level); +} - function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_modus_id = 0) { - $db = & getDatabase(); +function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_modus_id = 0): void +{ + $db = getDatabase(); - if ($geaendert_veranstaltung_id != 0) { - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $geaendert_veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $veranstaltung = $rows[0]; - - $teamspiel_modus_id = $veranstaltung->modus_id; - } else - $teamspiel_modus_id = $geaendert_modus_id; - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $teamspiel_modus_id"; + if ($geaendert_veranstaltung_id != 0) { + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $geaendert_veranstaltung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); if (count($rows) < 1) die("Wrong id!"); - $teamspiel_modus = $rows[0]; + $veranstaltung = $rows[0]; - $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; - $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; + $teamspiel_modus_id = $veranstaltung->modus_id; + } else + $teamspiel_modus_id = $geaendert_modus_id; - if ($geaendert_veranstaltung_id != 0) - $query = "SELECT #__sportsmanager_begegnung.begegnung_id, #__sportsmanager_veranstaltung.tabellenwertung FROM #__sportsmanager_veranstaltung, #__sportsmanager_team, #__sportsmanager_begegnung WHERE #__sportsmanager_veranstaltung.veranstaltung_id = $geaendert_veranstaltung_id AND #__sportsmanager_veranstaltung.veranstaltung_id = #__sportsmanager_team.veranstaltung_id AND #__sportsmanager_team.team_id = #__sportsmanager_begegnung.heim_team_id"; - else - $query = "SELECT #__sportsmanager_begegnung.begegnung_id, #__sportsmanager_veranstaltung.tabellenwertung FROM #__sportsmanager_veranstaltung, #__sportsmanager_team, #__sportsmanager_begegnung WHERE modus_id = $geaendert_modus_id AND #__sportsmanager_veranstaltung.veranstaltung_id = #__sportsmanager_team.veranstaltung_id AND #__sportsmanager_team.team_id = #__sportsmanager_begegnung.heim_team_id"; + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $teamspiel_modus_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $teamspiel_modus = $rows[0]; + + $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; + $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; + + if ($geaendert_veranstaltung_id != 0) + $query = "SELECT #__sportsmanager_begegnung.begegnung_id, #__sportsmanager_veranstaltung.tabellenwertung FROM #__sportsmanager_veranstaltung, #__sportsmanager_team, #__sportsmanager_begegnung WHERE #__sportsmanager_veranstaltung.veranstaltung_id = $geaendert_veranstaltung_id AND #__sportsmanager_veranstaltung.veranstaltung_id = #__sportsmanager_team.veranstaltung_id AND #__sportsmanager_team.team_id = #__sportsmanager_begegnung.heim_team_id"; + else + $query = "SELECT #__sportsmanager_begegnung.begegnung_id, #__sportsmanager_veranstaltung.tabellenwertung FROM #__sportsmanager_veranstaltung, #__sportsmanager_team, #__sportsmanager_begegnung WHERE modus_id = $geaendert_modus_id AND #__sportsmanager_veranstaltung.veranstaltung_id = #__sportsmanager_team.veranstaltung_id AND #__sportsmanager_team.team_id = #__sportsmanager_begegnung.heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + foreach ($begegnungen as $begegnung) { + $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $begegnung->begegnung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $begegnungen = $db->loadObjectList(); + $spiele = $db->loadObjectList(); - foreach ($begegnungen as $begegnung) { - $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $begegnung->begegnung_id"; + $total_heim_spielpunkte = 0; + $total_gast_spielpunkte = 0; + + foreach ($spiele as $spiel) { + $spiel_heim_punkte = $spiel->teamspiel_heim_punkte; + $spiel_gast_punkte = $spiel->teamspiel_gast_punkte; + + if ($spiel->heim_spieler_2_id === NULL && $spiel->gast_spieler_2_id === NULL) { + 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; + + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," + . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'" + . "\n WHERE teamspiel_id = $spiel->teamspiel_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_begegnung" + . "\n SET heim_spielpunkte = '$total_heim_spielpunkte'," + . "\n gast_spielpunkte = '$total_gast_spielpunkte'" + . "\n WHERE begegnung_id = $begegnung->begegnung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + +} + +function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $geaenderte_veranstaltung_id = 0, $geaenderter_individualwettbewerb_id = 0, $geaenderter_teamspiel_modus_id = 0): void +{ + $db = getDatabase(); + + $query = "SELECT * FROM #__sportsmanager_bestenliste"; + if ($geaenderte_spielerstatistik_id != 0) + $query .= "\n WHERE bestenliste_id = $geaenderte_spielerstatistik_id"; + else if ($geaenderte_veranstaltung_id != 0) + $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung WHERE $geaenderte_veranstaltung_id = veranstaltung_id AND #__sportsmanager_bestenliste_veranstaltung.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; + else if ($geaenderter_individualwettbewerb_id != 0) + $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE $geaenderter_individualwettbewerb_id = individualwettbewerb_id AND #__sportsmanager_bestenliste_individualwettbewerb.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; + else if ($geaenderter_teamspiel_modus_id != 0) + $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id) WHERE $geaenderter_teamspiel_modus_id = modus_id AND #__sportsmanager_bestenliste_veranstaltung.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + + foreach ($spielerstatistiken as $spielerstatistik) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_bestenliste_veranstaltung" + . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND bestenliste_id = $spielerstatistik->bestenliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_bestenliste_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND bestenliste_id = $spielerstatistik->bestenliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + $punkte = array(); + + foreach ($veranstaltungen as $veranstaltung) { + $query = "SELECT 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" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND veranstaltung_id = $veranstaltung->veranstaltung_id"; + if ($spielerstatistik->typ == 1) + $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; + else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) + $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + foreach ($begegnungen as $begegnung) { + $beteiligte = array(); + if ($spielerstatistik->typ != 3) { + if ($begegnung->heim_spieler_1_id != 0) + $beteiligte[] = array($begegnung->heim_spieler_1_id, "H"); + if ($begegnung->heim_spieler_2_id != 0) + $beteiligte[] = array($begegnung->heim_spieler_2_id, "H"); + if ($begegnung->gast_spieler_1_id != 0) + $beteiligte[] = array($begegnung->gast_spieler_1_id, "G"); + if ($begegnung->gast_spieler_2_id != 0) + $beteiligte[] = array($begegnung->gast_spieler_2_id, "G"); + } else { + if ($begegnung->heim_spieler_1_id != 0 && $begegnung->heim_spieler_2_id != 0) { + if ($begegnung->heim_spieler_1_id < $begegnung->heim_spieler_2_id) + $spieler_id = $begegnung->heim_spieler_1_id . "-" . $begegnung->heim_spieler_2_id; + else + $spieler_id = $begegnung->heim_spieler_2_id . "-" . $begegnung->heim_spieler_1_id; + $beteiligte[] = array($spieler_id, "H"); + } + if ($begegnung->gast_spieler_1_id != 0 && $begegnung->gast_spieler_2_id != 0) { + if ($begegnung->gast_spieler_1_id < $begegnung->gast_spieler_2_id) + $spieler_id = $begegnung->gast_spieler_1_id . "-" . $begegnung->gast_spieler_2_id; + else + $spieler_id = $begegnung->gast_spieler_2_id . "-" . $begegnung->gast_spieler_1_id; + $beteiligte[] = array($spieler_id, "G"); + } + } + $heim_punkte = $begegnung->teamspiel_heim_punkte; + $gast_punkte = $begegnung->teamspiel_gast_punkte; + $heim_spielpunkte = $begegnung->teamspiel_heim_spielpunkte; + $gast_spielpunkte = $begegnung->teamspiel_gast_spielpunkte; + $ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0); + $heim_saetze = $ergebnis == 1 ? 1 : 0; + $unentschieden_saetze = $ergebnis == 0 ? 1 : 0; + $gast_saetze = $ergebnis == 2 ? 1 : 0; + + foreach ($beteiligte as $beteiligter) { + $spieler_id = $beteiligter[0]; + $typ = $beteiligter[1]; + if (!isset($punkte[$spieler_id])) { + $punkte[$spieler_id] = array(); + $punkte[$spieler_id]["s"] = 0; + $punkte[$spieler_id]["u"] = 0; + $punkte[$spieler_id]["n"] = 0; + $punkte[$spieler_id]["spg"] = 0; + $punkte[$spieler_id]["spv"] = 0; + $punkte[$spieler_id]["sg"] = 0; + $punkte[$spieler_id]["su"] = 0; + $punkte[$spieler_id]["sv"] = 0; + $punkte[$spieler_id]["pg"] = 0; + $punkte[$spieler_id]["pv"] = 0; + } + if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) + $punkte[$spieler_id]["s"] += 1; + else if ($ergebnis != 0) + $punkte[$spieler_id]["n"] += 1; + else + $punkte[$spieler_id]["u"] += 1; + $punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte; + $punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte; + $punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze; + $punkte[$spieler_id]["su"] += $unentschieden_saetze; + $punkte[$spieler_id]["sv"] += $typ != "H" ? $heim_saetze : $gast_saetze; + $punkte[$spieler_id]["pg"] += $typ == "H" ? $heim_punkte : $gast_punkte; + $punkte[$spieler_id]["pv"] += $typ != "H" ? $heim_punkte : $gast_punkte; + } + } + } + + foreach ($individualwettbewerbe as $individualwettbewerb) { + $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, ergebnis_detailliert" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb->individualwettbewerb_id"; + if ($spielerstatistik->typ == 1) + $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; + else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) + $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; + $db->setQuery($query); + if (!$db->execute()) { die($db->stderr(true)); } $spiele = $db->loadObjectList(); - $total_heim_spielpunkte = 0; - $total_gast_spielpunkte = 0; - foreach ($spiele as $spiel) { - $spiel_heim_punkte = $spiel->teamspiel_heim_punkte; - $spiel_gast_punkte = $spiel->teamspiel_gast_punkte; - - if ($spiel->heim_spieler_2_id === NULL && $spiel->gast_spieler_2_id === NULL) { - 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; - } - } + $beteiligte = array(); + if ($spielerstatistik->typ != 3) { + if ($spiel->heim_spieler_1_id != 0) + $beteiligte[] = array($spiel->heim_spieler_1_id, "H"); + if ($spiel->heim_spieler_2_id != 0) + $beteiligte[] = array($spiel->heim_spieler_2_id, "H"); + if ($spiel->gast_spieler_1_id != 0) + $beteiligte[] = array($spiel->gast_spieler_1_id, "G"); + if ($spiel->gast_spieler_2_id != 0) + $beteiligte[] = array($spiel->gast_spieler_2_id, "G"); } 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; - } + if ($spiel->heim_spieler_1_id != 0 && $spiel->heim_spieler_2_id != 0) { + if ($spiel->heim_spieler_1_id < $spiel->heim_spieler_2_id) + $spieler_id = $spiel->heim_spieler_1_id . "-" . $spiel->heim_spieler_2_id; + else + $spieler_id = $spiel->heim_spieler_2_id . "-" . $spiel->heim_spieler_1_id; + $beteiligte[] = array($spieler_id, "H"); + } + if ($spiel->gast_spieler_1_id != 0 && $spiel->gast_spieler_2_id != 0) { + if ($spiel->gast_spieler_1_id < $spiel->gast_spieler_2_id) + $spieler_id = $spiel->gast_spieler_1_id . "-" . $spiel->gast_spieler_2_id; + else + $spieler_id = $spiel->gast_spieler_2_id . "-" . $spiel->gast_spieler_1_id; + $beteiligte[] = array($spieler_id, "G"); } } + $ergebnis_detailliert = $spiel->ergebnis_detailliert; + $ergebnis_auswertung = runden_detailliert_auswertung($ergebnis_detailliert); + $ergebnis = $ergebnis_auswertung[0]; + $heim_saetze = $ergebnis_auswertung[1]; + $unentschieden_saetze = $ergebnis_auswertung[2]; + $gast_saetze = $ergebnis_auswertung[3]; + $heim_punkte = $ergebnis_auswertung[4]; + $gast_punkte = $ergebnis_auswertung[5]; + $heim_spielpunkte = $ergebnis == 1 ? 2 : ($ergebnis == 2 ? 0 : 1); + $gast_spielpunkte = $ergebnis == 2 ? 2 : ($ergebnis == 1 ? 0 : 1); - $total_heim_spielpunkte += $spiel_heim_spielpunkte; - $total_gast_spielpunkte += $spiel_gast_spielpunkte; - - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," - . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'" - . "\n WHERE teamspiel_id = $spiel->teamspiel_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + foreach ($beteiligte as $beteiligter) { + $spieler_id = $beteiligter[0]; + $typ = $beteiligter[1]; + if (!isset($punkte[$spieler_id])) { + $punkte[$spieler_id] = array(); + $punkte[$spieler_id]["s"] = 0; + $punkte[$spieler_id]["u"] = 0; + $punkte[$spieler_id]["n"] = 0; + $punkte[$spieler_id]["spg"] = 0; + $punkte[$spieler_id]["spv"] = 0; + $punkte[$spieler_id]["sg"] = 0; + $punkte[$spieler_id]["su"] = 0; + $punkte[$spieler_id]["sv"] = 0; + $punkte[$spieler_id]["pg"] = 0; + $punkte[$spieler_id]["pv"] = 0; + } + if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) + $punkte[$spieler_id]["s"] += 1; + else if ($ergebnis != 0) + $punkte[$spieler_id]["n"] += 1; + else + $punkte[$spieler_id]["u"] += 1; + $punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte; + $punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte; + $punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze; + $punkte[$spieler_id]["su"] += $unentschieden_saetze; + $punkte[$spieler_id]["sv"] += $typ != "H" ? $heim_saetze : $gast_saetze; + $punkte[$spieler_id]["pg"] += $typ == "H" ? $heim_punkte : $gast_punkte; + $punkte[$spieler_id]["pv"] += $typ != "H" ? $heim_punkte : $gast_punkte; } } - - $query = "UPDATE #__sportsmanager_begegnung" - . "\n SET heim_spielpunkte = '$total_heim_spielpunkte'," - . "\n gast_spielpunkte = '$total_gast_spielpunkte'" - . "\n WHERE begegnung_id = $begegnung->begegnung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } } - } - - function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $geaenderte_veranstaltung_id = 0, $geaenderter_individualwettbewerb_id = 0, $geaenderter_teamspiel_modus_id = 0) { - $db = & getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_bestenliste"; - if ($geaenderte_spielerstatistik_id != 0) - $query .= "\n WHERE bestenliste_id = $geaenderte_spielerstatistik_id"; - else if ($geaenderte_veranstaltung_id != 0) - $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung WHERE $geaenderte_veranstaltung_id = veranstaltung_id AND #__sportsmanager_bestenliste_veranstaltung.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; - else if ($geaenderter_individualwettbewerb_id != 0) - $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE $geaenderter_individualwettbewerb_id = individualwettbewerb_id AND #__sportsmanager_bestenliste_individualwettbewerb.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; - else if ($geaenderter_teamspiel_modus_id != 0) - $query .= "\n WHERE (SELECT COUNT(*) FROM #__sportsmanager_bestenliste_veranstaltung INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id) WHERE $geaenderter_teamspiel_modus_id = modus_id AND #__sportsmanager_bestenliste_veranstaltung.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id) > 0"; + $query = "SELECT bestenliste_punkte_id, spieler_id, spieler_2_id FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $spielerstatistiken = $db->loadObjectList(); + $rows = $db->loadObjectList(); - foreach ($spielerstatistiken as $spielerstatistik) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_bestenliste_veranstaltung" - . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND bestenliste_id = $spielerstatistik->bestenliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); + foreach ($rows as $row) { + if ($spielerstatistik->typ != 3) + $spieler_id = $row->spieler_id; + else + $spieler_id = $row->spieler_id . "-" . $row->spieler_2_id; - $query = "SELECT *" - . "\n FROM #__sportsmanager_bestenliste_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND bestenliste_id = $spielerstatistik->bestenliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - $punkte = array(); - - foreach ($veranstaltungen as $veranstaltung) { - $query = "SELECT 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" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id" - . "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND veranstaltung_id = $veranstaltung->veranstaltung_id"; - if ($spielerstatistik->typ == 1) - $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; - else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) - $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; + if (!isset($punkte[$spieler_id])) { + $query = "DELETE FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $spielerstatistik->bestenliste_id AND spieler_id = $row->spieler_id;"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $begegnungen = $db->loadObjectList(); - - foreach ($begegnungen as $begegnung) { - $beteiligte = array(); - if ($spielerstatistik->typ != 3) { - if ($begegnung->heim_spieler_1_id != 0) - array_push($beteiligte, array($begegnung->heim_spieler_1_id, "H")); - if ($begegnung->heim_spieler_2_id != 0) - array_push($beteiligte, array($begegnung->heim_spieler_2_id, "H")); - if ($begegnung->gast_spieler_1_id != 0) - array_push($beteiligte, array($begegnung->gast_spieler_1_id, "G")); - if ($begegnung->gast_spieler_2_id != 0) - array_push($beteiligte, array($begegnung->gast_spieler_2_id, "G")); - } else { - if ($begegnung->heim_spieler_1_id != 0 && $begegnung->heim_spieler_2_id != 0) { - if ($begegnung->heim_spieler_1_id < $begegnung->heim_spieler_2_id) - $spieler_id = $begegnung->heim_spieler_1_id . "-" . $begegnung->heim_spieler_2_id; - else - $spieler_id = $begegnung->heim_spieler_2_id . "-" . $begegnung->heim_spieler_1_id; - array_push($beteiligte, array($spieler_id, "H")); - } - if ($begegnung->gast_spieler_1_id != 0 && $begegnung->gast_spieler_2_id != 0) { - if ($begegnung->gast_spieler_1_id < $begegnung->gast_spieler_2_id) - $spieler_id = $begegnung->gast_spieler_1_id . "-" . $begegnung->gast_spieler_2_id; - else - $spieler_id = $begegnung->gast_spieler_2_id . "-" . $begegnung->gast_spieler_1_id; - array_push($beteiligte, array($spieler_id, "G")); - } - } - $heim_punkte = $begegnung->teamspiel_heim_punkte; - $gast_punkte = $begegnung->teamspiel_gast_punkte; - $heim_spielpunkte = $begegnung->teamspiel_heim_spielpunkte; - $gast_spielpunkte = $begegnung->teamspiel_gast_spielpunkte; - $ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0); - $heim_saetze = $ergebnis == 1 ? 1 : 0; - $unentschieden_saetze = $ergebnis == 0 ? 1 : 0; - $gast_saetze = $ergebnis == 2 ? 1 : 0; - - foreach ($beteiligte as $beteiligter) { - $spieler_id = $beteiligter[0]; - $typ = $beteiligter[1]; - if (!isset($punkte[$spieler_id])) { - $punkte[$spieler_id] = array(); - $punkte[$spieler_id]["s"] = 0; - $punkte[$spieler_id]["u"] = 0; - $punkte[$spieler_id]["n"] = 0; - $punkte[$spieler_id]["spg"] = 0; - $punkte[$spieler_id]["spv"] = 0; - $punkte[$spieler_id]["sg"] = 0; - $punkte[$spieler_id]["su"] = 0; - $punkte[$spieler_id]["sv"] = 0; - $punkte[$spieler_id]["pg"] = 0; - $punkte[$spieler_id]["pv"] = 0; - } - if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) - $punkte[$spieler_id]["s"] += 1; - else if ($ergebnis != 0) - $punkte[$spieler_id]["n"] += 1; - else - $punkte[$spieler_id]["u"] += 1; - $punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte; - $punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte; - $punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze; - $punkte[$spieler_id]["su"] += $unentschieden_saetze; - $punkte[$spieler_id]["sv"] += $typ != "H" ? $heim_saetze : $gast_saetze; - $punkte[$spieler_id]["pg"] += $typ == "H" ? $heim_punkte : $gast_punkte; - $punkte[$spieler_id]["pv"] += $typ != "H" ? $heim_punkte : $gast_punkte; - } - } - } - - foreach ($individualwettbewerbe as $individualwettbewerb) { - $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, ergebnis_detailliert" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n WHERE individualwettbewerb_id = $individualwettbewerb->individualwettbewerb_id"; - if ($spielerstatistik->typ == 1) - $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; - else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) - $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - foreach ($spiele as $spiel) { - $beteiligte = array(); - if ($spielerstatistik->typ != 3) { - if ($spiel->heim_spieler_1_id != 0) - array_push($beteiligte, array($spiel->heim_spieler_1_id, "H")); - if ($spiel->heim_spieler_2_id != 0) - array_push($beteiligte, array($spiel->heim_spieler_2_id, "H")); - if ($spiel->gast_spieler_1_id != 0) - array_push($beteiligte, array($spiel->gast_spieler_1_id, "G")); - if ($spiel->gast_spieler_2_id != 0) - array_push($beteiligte, array($spiel->gast_spieler_2_id, "G")); - } else { - if ($spiel->heim_spieler_1_id != 0 && $spiel->heim_spieler_2_id != 0) { - if ($spiel->heim_spieler_1_id < $spiel->heim_spieler_2_id) - $spieler_id = $spiel->heim_spieler_1_id . "-" . $spiel->heim_spieler_2_id; - else - $spieler_id = $spiel->heim_spieler_2_id . "-" . $spiel->heim_spieler_1_id; - array_push($beteiligte, array($spieler_id, "H")); - } - if ($spiel->gast_spieler_1_id != 0 && $spiel->gast_spieler_2_id != 0) { - if ($spiel->gast_spieler_1_id < $spiel->gast_spieler_2_id) - $spieler_id = $spiel->gast_spieler_1_id . "-" . $spiel->gast_spieler_2_id; - else - $spieler_id = $spiel->gast_spieler_2_id . "-" . $spiel->gast_spieler_1_id; - array_push($beteiligte, array($spieler_id, "G")); - } - } - $ergebnis_detailliert = $spiel->ergebnis_detailliert; - $ergebnis_auswertung = runden_detailliert_auswertung($ergebnis_detailliert); - $ergebnis = $ergebnis_auswertung[0]; - $heim_saetze = $ergebnis_auswertung[1]; - $unentschieden_saetze = $ergebnis_auswertung[2]; - $gast_saetze = $ergebnis_auswertung[3]; - $heim_punkte = $ergebnis_auswertung[4]; - $gast_punkte = $ergebnis_auswertung[5]; - $heim_spielpunkte = $ergebnis == 1 ? 2 : ($ergebnis == 2 ? 0 : 1); - $gast_spielpunkte = $ergebnis == 2 ? 2 : ($ergebnis == 1 ? 0 : 1); - - foreach ($beteiligte as $beteiligter) { - $spieler_id = $beteiligter[0]; - $typ = $beteiligter[1]; - if (!isset($punkte[$spieler_id])) { - $punkte[$spieler_id] = array(); - $punkte[$spieler_id]["s"] = 0; - $punkte[$spieler_id]["u"] = 0; - $punkte[$spieler_id]["n"] = 0; - $punkte[$spieler_id]["spg"] = 0; - $punkte[$spieler_id]["spv"] = 0; - $punkte[$spieler_id]["sg"] = 0; - $punkte[$spieler_id]["su"] = 0; - $punkte[$spieler_id]["sv"] = 0; - $punkte[$spieler_id]["pg"] = 0; - $punkte[$spieler_id]["pv"] = 0; - } - if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) - $punkte[$spieler_id]["s"] += 1; - else if ($ergebnis != 0) - $punkte[$spieler_id]["n"] += 1; - else - $punkte[$spieler_id]["u"] += 1; - $punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte; - $punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte; - $punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze; - $punkte[$spieler_id]["su"] += $unentschieden_saetze; - $punkte[$spieler_id]["sv"] += $typ != "H" ? $heim_saetze : $gast_saetze; - $punkte[$spieler_id]["pg"] += $typ == "H" ? $heim_punkte : $gast_punkte; - $punkte[$spieler_id]["pv"] += $typ != "H" ? $heim_punkte : $gast_punkte; - } - } - } - - $query = "SELECT bestenliste_punkte_id, spieler_id, spieler_2_id FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - if ($spielerstatistik->typ != 3) - $spieler_id = $row->spieler_id; - else - $spieler_id = $row->spieler_id . "-" . $row->spieler_2_id; - - if (!isset($punkte[$spieler_id])) { - $query = "DELETE FROM #__sportsmanager_bestenliste_punkte WHERE bestenliste_id = $spielerstatistik->bestenliste_id AND spieler_id = $row->spieler_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } else { - $spieler_punkte = $punkte[$spieler_id]; - $spieler_punkte_siege = $spieler_punkte["s"]; - $spieler_punkte_unentschieden = $spieler_punkte["u"]; - $spieler_punkte_niederlagen = $spieler_punkte["n"]; - $spieler_punkte_spielpunkte_gewonnen = $spieler_punkte["spg"]; - $spieler_punkte_spielpunkte_verloren = $spieler_punkte["spv"]; - $spieler_punkte_saetze_gewonnen = $spieler_punkte["sg"]; - $spieler_punkte_saetze_unentschieden = $spieler_punkte["su"]; - $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; - $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; - $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; - $query = "UPDATE #__sportsmanager_bestenliste_punkte" - . "\n SET siege = $spieler_punkte_siege," - . "\n unentschieden = $spieler_punkte_unentschieden," - . "\n niederlagen = $spieler_punkte_niederlagen," - . "\n spielpunkte_gewonnen = $spieler_punkte_spielpunkte_gewonnen," - . "\n spielpunkte_verloren = $spieler_punkte_spielpunkte_verloren," - . "\n saetze_gewonnen = $spieler_punkte_saetze_gewonnen," - . "\n saetze_unentschieden = $spieler_punkte_saetze_unentschieden," - . "\n saetze_verloren = $spieler_punkte_saetze_verloren," - . "\n punkte_gewonnen = $spieler_punkte_punkte_gewonnen," - . "\n punkte_verloren = $spieler_punkte_punkte_verloren" - . "\n WHERE bestenliste_punkte_id = $row->bestenliste_punkte_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - unset($punkte[$spieler_id]); - } - } - - foreach ($punkte as $spieler_id => $spieler_punkte) { - if ($spielerstatistik->typ != 3) { - $spieler_1_id = $spieler_id; - $spieler_2_id = NULL; - } else { - list($spieler_1_id, $spieler_2_id) = explode("-", $spieler_id); - } + } else { + $spieler_punkte = $punkte[$spieler_id]; $spieler_punkte_siege = $spieler_punkte["s"]; $spieler_punkte_unentschieden = $spieler_punkte["u"]; $spieler_punkte_niederlagen = $spieler_punkte["n"]; @@ -6119,7 +5619,7 @@ function teamSpielplanXML() { $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; - $query = "INSERT #__sportsmanager_bestenliste_punkte" + $query = "UPDATE #__sportsmanager_bestenliste_punkte" . "\n SET siege = $spieler_punkte_siege," . "\n unentschieden = $spieler_punkte_unentschieden," . "\n niederlagen = $spieler_punkte_niederlagen," @@ -6129,620 +5629,445 @@ function teamSpielplanXML() { . "\n saetze_unentschieden = $spieler_punkte_saetze_unentschieden," . "\n saetze_verloren = $spieler_punkte_saetze_verloren," . "\n punkte_gewonnen = $spieler_punkte_punkte_gewonnen," - . "\n punkte_verloren = $spieler_punkte_punkte_verloren," - . "\n spieler_id = $spieler_1_id," - . "\n spieler_2_id = " . ($spieler_2_id != NULL ? "$spieler_2_id" : "NULL") . "," - . "\n bestenliste_id = $spielerstatistik->bestenliste_id;"; + . "\n punkte_verloren = $spieler_punkte_punkte_verloren" + . "\n WHERE bestenliste_punkte_id = $row->bestenliste_punkte_id;"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } + unset($punkte[$spieler_id]); } } - } - - function wannGespieltAktualisieren() { - $db = & getDatabase(); - - $query = "UPDATE #__sportsmanager_spieler" - . "\n LEFT JOIN" - . "\n (SELECT spieler_id, DATE(MAX(termin)) AS letzter_termin, DATE(MIN(termin)) AS erster_termin" - . "\n FROM" - . "\n (SELECT heim_spieler_1_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND heim_spieler_1_id != 0" - . "\n UNION" - . "\n SELECT heim_spieler_2_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND NOT ISNULL(heim_spieler_2_id) AND heim_spieler_2_id != 0" - . "\n UNION" - . "\n SELECT gast_spieler_1_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND gast_spieler_1_id != 0" - . "\n UNION" - . "\n SELECT gast_spieler_2_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND NOT ISNULL(gast_spieler_2_id) AND gast_spieler_2_id != 0" - . "\n UNION" - . "\n SELECT spieler_id, beginn AS termin" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n WHERE NOT ISNULL(spieler_id) AND status > 0 AND rundenstufe = 0" - . "\n UNION" - . "\n SELECT heim_spieler_1_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND heim_spieler_1_id != 0" - . "\n UNION" - . "\n SELECT heim_spieler_2_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND NOT ISNULL(heim_spieler_2_id) AND heim_spieler_2_id != 0" - . "\n UNION" - . "\n SELECT gast_spieler_1_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND gast_spieler_1_id != 0" - . "\n UNION" - . "\n SELECT gast_spieler_2_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" - . "\n FROM #__sportsmanager_individualwettbewerb_spiel" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND NOT ISNULL(gast_spieler_2_id) AND gast_spieler_2_id != 0" - . "\n ) AS spieltermine" - . "\n GROUP BY spieler_id) AS letzte_spieltermine" - . "\n USING (spieler_id)" - . "\n SET erstmals_gespielt = erster_termin," - . "\n zuletzt_gespielt = letzter_termin"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - function aktuellerVereinAktualisieren($spieler_id = 0) { - $db = & getDatabase(); - - $query = "UPDATE #__sportsmanager_spieler" - . "\n LEFT JOIN (SELECT spieler_id, verein_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)" - . "\n SET aktueller_verein_id = mitgliedschaft.verein_id"; - if ($spieler_id != 0) - $query .= "\n WHERE spieler_id = $spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - } - - function eloAktualisieren($datum_beginn = NULL) { - $db = & getDatabase(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE status > 0 AND elo_wertung > 0)" - . " OR EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE status > 0 AND elo_wertung > 0)" - . " OR EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(elo_einzel_spiele) OR NOT ISNULL(elo_doppel_spiele)), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $elo_ermitteln = $db->loadResult(); - - if ($elo_ermitteln == 0) - return; - - $elo_einzel = array(); - $elo_doppel = array(); - $spiele_einzel = array(); - $spiele_doppel = array(); - - $dummy_array_einzel = array(); - $dummy_array_doppel = array(); - - eloGenerieren($datum_beginn, $elo_einzel, $elo_doppel, $spiele_einzel, $spiele_doppel, NULL, $dummy_array_einzel, $dummy_array_doppel); - - $query = "SELECT spieler_id, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele" - . "\n FROM #__sportsmanager_spieler"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - foreach ($spieler as $row) { - $spieler_id = $row->spieler_id; - $spieler_elo_einzel = isset($elo_einzel[$spieler_id]) ? $elo_einzel[$spieler_id] : NULL; - $spieler_elo_doppel = isset($elo_doppel[$spieler_id]) ? $elo_doppel[$spieler_id] : NULL; - $spieler_spiele_einzel = isset($spiele_einzel[$spieler_id]) ? $spiele_einzel[$spieler_id] : NULL; - $spieler_spiele_doppel = isset($spiele_doppel[$spieler_id]) ? $spiele_doppel[$spieler_id] : NULL; - - if ($row->elo_einzel != $spieler_elo_einzel || - $row->elo_doppel != $spieler_elo_doppel || - $row->elo_einzel_spiele != $spieler_spiele_einzel || - $row->elo_doppel_spiele != $spieler_spiele_doppel) { - - $query = "UPDATE #__sportsmanager_spieler" - . "\n SET elo_einzel = " . (isset($elo_einzel[$spieler_id]) ? $spieler_elo_einzel : "NULL") . "," - . "\n elo_doppel = " . (isset($elo_doppel[$spieler_id]) ? $spieler_elo_doppel : "NULL") . "," - . "\n elo_einzel_spiele = " . (isset($spiele_einzel[$spieler_id]) ? $spieler_spiele_einzel : "NULL") . "," - . "\n elo_doppel_spiele = " . (isset($spiele_doppel[$spieler_id]) ? $spieler_spiele_doppel : "NULL") - . "\n WHERE spieler_id = $spieler_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + foreach ($punkte as $spieler_id => $spieler_punkte) { + if ($spielerstatistik->typ != 3) { + $spieler_1_id = $spieler_id; + $spieler_2_id = NULL; + } else { + list($spieler_1_id, $spieler_2_id) = explode("-", $spieler_id); } - } - } - - function eloGenerieren($datum_beginn, &$elo_einzel, &$elo_doppel, &$spiele_einzel, &$spiele_doppel, $spieler_id, &$spieler_elo_verlauf_einzel, &$spieler_elo_verlauf_doppel) { - $db = & getDatabase(); - - $cache_datum_beginn = NULL; - if (!empty($datum_beginn)) { - $query = "SELECT MAX(cache_datum)" - . "\n FROM #__sportsmanager_elo_cache" - . "\n WHERE cache_datum <= '$datum_beginn'"; + $spieler_punkte_siege = $spieler_punkte["s"]; + $spieler_punkte_unentschieden = $spieler_punkte["u"]; + $spieler_punkte_niederlagen = $spieler_punkte["n"]; + $spieler_punkte_spielpunkte_gewonnen = $spieler_punkte["spg"]; + $spieler_punkte_spielpunkte_verloren = $spieler_punkte["spv"]; + $spieler_punkte_saetze_gewonnen = $spieler_punkte["sg"]; + $spieler_punkte_saetze_unentschieden = $spieler_punkte["su"]; + $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; + $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; + $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; + $query = "INSERT #__sportsmanager_bestenliste_punkte" + . "\n SET siege = $spieler_punkte_siege," + . "\n unentschieden = $spieler_punkte_unentschieden," + . "\n niederlagen = $spieler_punkte_niederlagen," + . "\n spielpunkte_gewonnen = $spieler_punkte_spielpunkte_gewonnen," + . "\n spielpunkte_verloren = $spieler_punkte_spielpunkte_verloren," + . "\n saetze_gewonnen = $spieler_punkte_saetze_gewonnen," + . "\n saetze_unentschieden = $spieler_punkte_saetze_unentschieden," + . "\n saetze_verloren = $spieler_punkte_saetze_verloren," + . "\n punkte_gewonnen = $spieler_punkte_punkte_gewonnen," + . "\n punkte_verloren = $spieler_punkte_punkte_verloren," + . "\n spieler_id = $spieler_1_id," + . "\n spieler_2_id = " . ($spieler_2_id != NULL ? "$spieler_2_id" : "NULL") . "," + . "\n bestenliste_id = $spielerstatistik->bestenliste_id;"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $cache_datum_beginn = $db->loadResult(); + } + } +} - $query = "SELECT spieler_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele" - . "\n FROM #__sportsmanager_elo_cache" - . "\n WHERE cache_datum = '$cache_datum_beginn'"; +function wannGespieltAktualisieren(): void +{ + $db = getDatabase(); + + $query = "UPDATE #__sportsmanager_spieler" + . "\n LEFT JOIN" + . "\n (SELECT spieler_id, DATE(MAX(termin)) AS letzter_termin, DATE(MIN(termin)) AS erster_termin" + . "\n FROM" + . "\n (SELECT heim_spieler_1_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND heim_spieler_1_id != 0" + . "\n UNION" + . "\n SELECT heim_spieler_2_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND NOT ISNULL(heim_spieler_2_id) AND heim_spieler_2_id != 0" + . "\n UNION" + . "\n SELECT gast_spieler_1_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND gast_spieler_1_id != 0" + . "\n UNION" + . "\n SELECT gast_spieler_2_id AS spieler_id, #__sportsmanager_begegnung.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND NOT ISNULL(gast_spieler_2_id) AND gast_spieler_2_id != 0" + . "\n UNION" + . "\n SELECT spieler_id, beginn AS termin" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n WHERE NOT ISNULL(spieler_id) AND status > 0 AND rundenstufe = 0" + . "\n UNION" + . "\n SELECT heim_spieler_1_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND heim_spieler_1_id != 0" + . "\n UNION" + . "\n SELECT heim_spieler_2_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND NOT ISNULL(heim_spieler_2_id) AND heim_spieler_2_id != 0" + . "\n UNION" + . "\n SELECT gast_spieler_1_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND gast_spieler_1_id != 0" + . "\n UNION" + . "\n SELECT gast_spieler_2_id AS spieler_id, #__sportsmanager_individualwettbewerb_spiel.zeitpunkt AS termin" + . "\n FROM #__sportsmanager_individualwettbewerb_spiel" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND NOT ISNULL(gast_spieler_2_id) AND gast_spieler_2_id != 0" + . "\n ) AS spieltermine" + . "\n GROUP BY spieler_id) AS letzte_spieltermine" + . "\n USING (spieler_id)" + . "\n SET erstmals_gespielt = erster_termin," + . "\n zuletzt_gespielt = letzter_termin"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } +} + +function aktuellerVereinAktualisieren($spieler_id = 0): void +{ + $db = getDatabase(); + + $query = "UPDATE #__sportsmanager_spieler" + . "\n LEFT JOIN (SELECT spieler_id, verein_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)" + . "\n SET aktueller_verein_id = mitgliedschaft.verein_id"; + if ($spieler_id != 0) + $query .= "\n WHERE spieler_id = $spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + +} + +function eloAktualisieren($datum_beginn = NULL): void +{ + $db = getDatabase(); + + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstaltung WHERE status > 0 AND elo_wertung > 0)" + . " OR EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE status > 0 AND elo_wertung > 0)" + . " OR EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(elo_einzel_spiele) OR NOT ISNULL(elo_doppel_spiele)), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $elo_ermitteln = $db->loadResult(); + + if ($elo_ermitteln == 0) + return; + + $elo_einzel = array(); + $elo_doppel = array(); + $spiele_einzel = array(); + $spiele_doppel = array(); + + $dummy_array_einzel = array(); + $dummy_array_doppel = array(); + + eloGenerieren($datum_beginn, $elo_einzel, $elo_doppel, $spiele_einzel, $spiele_doppel, NULL, $dummy_array_einzel, $dummy_array_doppel); + + $query = "SELECT spieler_id, elo_einzel, elo_einzel_spiele, elo_doppel, elo_doppel_spiele" + . "\n FROM #__sportsmanager_spieler"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + foreach ($spieler as $row) { + $spieler_id = $row->spieler_id; + $spieler_elo_einzel = $elo_einzel[$spieler_id] ?? NULL; + $spieler_elo_doppel = $elo_doppel[$spieler_id] ?? NULL; + $spieler_spiele_einzel = $spiele_einzel[$spieler_id] ?? NULL; + $spieler_spiele_doppel = $spiele_doppel[$spieler_id] ?? NULL; + + if ($row->elo_einzel != $spieler_elo_einzel || + $row->elo_doppel != $spieler_elo_doppel || + $row->elo_einzel_spiele != $spieler_spiele_einzel || + $row->elo_doppel_spiele != $spieler_spiele_doppel) { + + $query = "UPDATE #__sportsmanager_spieler" + . "\n SET elo_einzel = " . (isset($elo_einzel[$spieler_id]) ? $spieler_elo_einzel : "NULL") . "," + . "\n elo_doppel = " . (isset($elo_doppel[$spieler_id]) ? $spieler_elo_doppel : "NULL") . "," + . "\n elo_einzel_spiele = " . (isset($spiele_einzel[$spieler_id]) ? $spieler_spiele_einzel : "NULL") . "," + . "\n elo_doppel_spiele = " . (isset($spiele_doppel[$spieler_id]) ? $spieler_spiele_doppel : "NULL") + . "\n WHERE spieler_id = $spieler_id;"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - if ($row->elo_einzel != NULL) { - $elo_einzel[$row->spieler_id] = $row->elo_einzel; - $spiele_einzel[$row->spieler_id] = $row->elo_einzel_spiele; - } - if ($row->elo_doppel != NULL) { - $elo_doppel[$row->spieler_id] = $row->elo_doppel; - $spiele_doppel[$row->spieler_id] = $row->elo_doppel_spiele; - } - } } + } +} - $query = "SELECT spieler_id, elo_einzel_startwert, elo_doppel_startwert" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(elo_einzel_startwert) OR NOT ISNULL(elo_doppel_startwert)"; +function eloGenerieren($datum_beginn, &$elo_einzel, &$elo_doppel, &$spiele_einzel, &$spiele_doppel, $spieler_id, &$spieler_elo_verlauf_einzel, &$spieler_elo_verlauf_doppel): void +{ + $db = getDatabase(); + + $cache_datum_beginn = NULL; + if (!empty($datum_beginn)) { + $query = "SELECT MAX(cache_datum)" + . "\n FROM #__sportsmanager_elo_cache" + . "\n WHERE cache_datum <= '$datum_beginn'"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { + die($db->stderr(true)); + } + $cache_datum_beginn = $db->loadResult(); + + $query = "SELECT spieler_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele" + . "\n FROM #__sportsmanager_elo_cache" + . "\n WHERE cache_datum = '$cache_datum_beginn'"; + $db->setQuery($query); + if (!$db->execute()) { die($db->stderr(true)); } $rows = $db->loadObjectList(); foreach ($rows as $row) { - if ((!isset($elo_einzel[$row->spieler_id]) || $elo_einzel[$row->spieler_id] == 0) && $row->elo_einzel_startwert != NULL) - $elo_einzel[$row->spieler_id] = $row->elo_einzel_startwert; - if ((!isset($elo_doppel[$row->spieler_id]) || $elo_doppel[$row->spieler_id] == 0) && $row->elo_doppel_startwert != NULL) - $elo_doppel[$row->spieler_id] = $row->elo_doppel_startwert; - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; - if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamspiele_anzahl = $db->loadResult(); - $teamspiele_offset = 0; - - $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung, elo_wertung" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; - if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $query .= "\n ORDER BY zeitpunkt, begegnung_id, teamspiel_nummer" - . "\n LIMIT 0, 5000"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamspiele = $db->loadObjectList(); - $teamspiele_nr = 0; - - $query = "SELECT turnierdisziplin_id, beginn, typ, elo_wertung" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE status > 0"; - if ($spieler_id == NULL) - $query .= " AND elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND DATE(beginn) >= '$cache_datum_beginn'"; - $query .= "\n ORDER BY beginn"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplinen = $db->loadObjectList(); - $disziplinen_anzahl = count($disziplinen); - $disziplinen_nr = 0; - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0"; - if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerb_spiele_anzahl = $db->loadResult(); - $individualwettbewerb_spiele_offset = 0; - - $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id, elo_wertung" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0"; - if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $query .= "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id" - . "\n LIMIT 0, 5000"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerb_spiele = $db->loadObjectList(); - $individualwettbewerb_spiele_nr = 0; - - /* - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(zuletzt_gespielt) AND elo_wertung AND DATEDIFF(CURDATE(), zuletzt_gespielt) <= 365"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - $aktiver_spieler = array(); - foreach($rows as $row) - $aktiver_spieler[$row->spieler_id] = true; - */ - - if ($spieler_id == NULL) { - $query = "DELETE FROM #__sportsmanager_elo_cache"; - if (!empty($cache_datum_beginn)) - $query .= " WHERE cache_datum > '$cache_datum_beginn'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); + if ($row->elo_einzel != NULL) { + $elo_einzel[$row->spieler_id] = $row->elo_einzel; + $spiele_einzel[$row->spieler_id] = $row->elo_einzel_spiele; + } + if ($row->elo_doppel != NULL) { + $elo_doppel[$row->spieler_id] = $row->elo_doppel; + $spiele_doppel[$row->spieler_id] = $row->elo_doppel_spiele; } } + } - $spieler_elo_verlauf_einzel_nr = 0; - $spieler_elo_verlauf_doppel_nr = 0; + $query = "SELECT spieler_id, elo_einzel_startwert, elo_doppel_startwert" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(elo_einzel_startwert) OR NOT ISNULL(elo_doppel_startwert)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $anfangswert = 1500; - $k = 25; + foreach ($rows as $row) { + if ((!isset($elo_einzel[$row->spieler_id]) || $elo_einzel[$row->spieler_id] == 0) && $row->elo_einzel_startwert != NULL) + $elo_einzel[$row->spieler_id] = $row->elo_einzel_startwert; + if ((!isset($elo_doppel[$row->spieler_id]) || $elo_doppel[$row->spieler_id] == 0) && $row->elo_doppel_startwert != NULL) + $elo_doppel[$row->spieler_id] = $row->elo_doppel_startwert; + } - $zeitpunkt_aktuell = NULL; - while ($teamspiele_nr < $teamspiele_anzahl || $disziplinen_nr < $disziplinen_anzahl || $individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl) { - // Als nächstes Mannschaftsbegegnung, Turnierdisziplin oder Individualwettbewerb-Spiel? - $elo_einzel_neu = $elo_einzel; - $elo_doppel_neu = $elo_doppel; + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; + if ($spieler_id == NULL) + $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teamspiele_anzahl = $db->loadResult(); + $teamspiele_offset = 0; - $zeitpunkt_vorher = $zeitpunkt_aktuell; - /* - if ($disziplinen_nr >= $disziplinen_anzahl || ($teamspiele_nr < $teamspiele_anzahl && $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt < $disziplinen[$disziplinen_nr]->beginn)) - $zeitpunkt_aktuell = $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt; - else - $zeitpunkt_aktuell = $disziplinen[$disziplinen_nr]->beginn; - */ - if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt)) - $zeitpunkt_aktuell = $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt; - else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn)) - $zeitpunkt_aktuell = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt; - else - $zeitpunkt_aktuell = $disziplinen[$disziplinen_nr]->beginn; + $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung, elo_wertung" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; + if ($spieler_id == NULL) + $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; + $query .= "\n ORDER BY zeitpunkt, begegnung_id, teamspiel_nummer" + . "\n LIMIT 0, 5000"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teamspiele = $db->loadObjectList(); + $teamspiele_nr = 0; - if ($spieler_id == NULL && !empty($zeitpunkt_vorher) && !empty($zeitpunkt_aktuell) && substr($zeitpunkt_vorher, 0, 4) != substr($zeitpunkt_aktuell, 0, 4)) { - $cache_spieler = array_keys($elo_einzel) + array_keys($elo_doppel); - $cache_datum = substr($zeitpunkt_aktuell, 0, 4) . "-01-01"; - foreach ($cache_spieler as $cache_spieler_id) { - $spieler_elo_einzel = isset($elo_einzel[$cache_spieler_id]) ? $elo_einzel[$cache_spieler_id] : NULL; - $spieler_elo_doppel = isset($elo_doppel[$cache_spieler_id]) ? $elo_doppel[$cache_spieler_id] : NULL; - $spieler_spiele_einzel = isset($spiele_einzel[$cache_spieler_id]) ? $spiele_einzel[$cache_spieler_id] : NULL; - $spieler_spiele_doppel = isset($spiele_doppel[$cache_spieler_id]) ? $spiele_doppel[$cache_spieler_id] : NULL; + $query = "SELECT turnierdisziplin_id, beginn, typ, elo_wertung" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n WHERE status > 0"; + if ($spieler_id == NULL) + $query .= " AND elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND DATE(beginn) >= '$cache_datum_beginn'"; + $query .= "\n ORDER BY beginn"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $disziplinen = $db->loadObjectList(); + $disziplinen_anzahl = count($disziplinen); + $disziplinen_nr = 0; - $query = "REPLACE #__sportsmanager_elo_cache" - . "\n SET spieler_id = $cache_spieler_id," - . "\n cache_datum = '$cache_datum'," - . "\n elo_einzel = " . ($spieler_elo_einzel != NULL ? $spieler_elo_einzel : "NULL") . "," - . "\n elo_doppel = " . ($spieler_elo_doppel != NULL ? $spieler_elo_doppel : "NULL") . "," - . "\n elo_einzel_spiele = " . ($spieler_spiele_einzel != NULL ? $spieler_spiele_einzel : "NULL") . "," - . "\n elo_doppel_spiele = " . ($spieler_spiele_doppel != NULL ? $spieler_spiele_doppel : "NULL"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0"; + if ($spieler_id == NULL) + $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerb_spiele_anzahl = $db->loadResult(); + $individualwettbewerb_spiele_offset = 0; + + $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id, elo_wertung" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0"; + if ($spieler_id == NULL) + $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; + $query .= "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id" + . "\n LIMIT 0, 5000"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerb_spiele = $db->loadObjectList(); + $individualwettbewerb_spiele_nr = 0; + + if ($spieler_id == NULL) { + /** @noinspection SqlWithoutWhere */ + $query = "DELETE FROM #__sportsmanager_elo_cache"; + if (!empty($cache_datum_beginn)) + $query .= " WHERE cache_datum > '$cache_datum_beginn'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $spieler_elo_verlauf_einzel_nr = 0; + $spieler_elo_verlauf_doppel_nr = 0; + + $anfangswert = 1500; + $k = 25; + + $zeitpunkt_aktuell = NULL; + while ($teamspiele_nr < $teamspiele_anzahl || $disziplinen_nr < $disziplinen_anzahl || $individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl) { + // Als nächstes Mannschaftsbegegnung, Turnierdisziplin oder Individualwettbewerb-Spiel? + $elo_einzel_neu = $elo_einzel; + $elo_doppel_neu = $elo_doppel; + + $zeitpunkt_vorher = $zeitpunkt_aktuell; + if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt)) + $zeitpunkt_aktuell = $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt; + else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn)) + $zeitpunkt_aktuell = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt; + else + $zeitpunkt_aktuell = $disziplinen[$disziplinen_nr]->beginn; + + if ($spieler_id == NULL && !empty($zeitpunkt_vorher) && !empty($zeitpunkt_aktuell) && substr($zeitpunkt_vorher, 0, 4) != substr($zeitpunkt_aktuell, 0, 4)) { + $cache_spieler = array_keys($elo_einzel) + array_keys($elo_doppel); + $cache_datum = substr($zeitpunkt_aktuell, 0, 4) . "-01-01"; + foreach ($cache_spieler as $cache_spieler_id) { + $spieler_elo_einzel = $elo_einzel[$cache_spieler_id] ?? NULL; + $spieler_elo_doppel = $elo_doppel[$cache_spieler_id] ?? NULL; + $spieler_spiele_einzel = $spiele_einzel[$cache_spieler_id] ?? NULL; + $spieler_spiele_doppel = $spiele_doppel[$cache_spieler_id] ?? NULL; + + $query = "REPLACE #__sportsmanager_elo_cache" + . "\n SET spieler_id = $cache_spieler_id," + . "\n cache_datum = '$cache_datum'," + . "\n elo_einzel = " . ($spieler_elo_einzel != NULL ? $spieler_elo_einzel : "NULL") . "," + . "\n elo_doppel = " . ($spieler_elo_doppel != NULL ? $spieler_elo_doppel : "NULL") . "," + . "\n elo_einzel_spiele = " . ($spieler_spiele_einzel != NULL ? $spieler_spiele_einzel : "NULL") . "," + . "\n elo_doppel_spiele = " . ($spieler_spiele_doppel != NULL ? $spieler_spiele_doppel : "NULL"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); } } + } -// if ($disziplinen_nr >= $disziplinen_anzahl || ($teamspiele_nr < $teamspiele_anzahl && $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt < $disziplinen[$disziplinen_nr]->beginn)) { - if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt)) { - // Begegnung auswerten - $begegnung_id = $teamspiele[$teamspiele_nr - $teamspiele_offset]->begegnung_id; - do { - $teamspiel = $teamspiele[$teamspiele_nr++ - $teamspiele_offset]; - if ($teamspiele_nr - $teamspiele_offset == 5000) { - $teamspiele_offset += 5000; - $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung, elo_wertung" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; - if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; - if (!empty($cache_datum_beginn)) - $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $query .= "\n ORDER BY zeitpunkt, begegnung_id, teamspiel_nummer" - . "\n LIMIT $teamspiele_offset, 5000"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamspiele = $db->loadObjectList(); - } - $heim_spieler_1_id = $teamspiel->heim_spieler_1_id; - $heim_spieler_2_id = $teamspiel->heim_spieler_2_id; - $gast_spieler_1_id = $teamspiel->gast_spieler_1_id; - $gast_spieler_2_id = $teamspiel->gast_spieler_2_id; - - if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { - // Einzel-Spiel - if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) - continue; - // if (!isset($aktiver_spieler[$heim_spieler_1_id]) || !isset($aktiver_spieler[$gast_spieler_1_id])) - // continue; - - if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) - $sa = 1; - else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) - $sa = 0; - else - $sa = 0.5; - - // if ($teamspiel->elo_wertung > 0 && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_1_id])) { - if ($teamspiel->elo_wertung > 0) { - $ra = isset($elo_einzel[$heim_spieler_1_id]) ? $elo_einzel[$heim_spieler_1_id] : $anfangswert; - $rb = isset($elo_einzel[$gast_spieler_1_id]) ? $elo_einzel[$gast_spieler_1_id] : $anfangswert; - $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); - $zuwachs_ra = round($k * ($sa - $ea)); - $elo_werten = TRUE; - } else - $elo_werten = FALSE; - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr] = array(); - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $teamspiel->zeitpunkt; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["th"] = $teamspiel->heim_team_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["tg"] = $teamspiel->gast_team_id; - if ($elo_werten) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert; - } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["v"] = $teamspiel->veranstaltung_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["r"] = $teamspiel->spieltag; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["u"] = $teamspiel->unterteilung; - } - } - - // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat - if ($elo_werten) { - if ($zuwachs_ra > 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; - } - - $elo_einzel_neu[$heim_spieler_1_id] = (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_einzel_neu[$gast_spieler_1_id] = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; - $spiele_einzel[$heim_spieler_1_id] = isset($spiele_einzel[$heim_spieler_1_id]) ? $spiele_einzel[$heim_spieler_1_id] + 1 : 1; - $spiele_einzel[$gast_spieler_1_id] = isset($spiele_einzel[$gast_spieler_1_id]) ? $spiele_einzel[$gast_spieler_1_id] + 1 : 1; - } - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { - if ($elo_werten) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1rn"] = $elo_einzel_neu[$heim_spieler_1_id]; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1rn"] = $elo_einzel_neu[$gast_spieler_1_id]; - } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_elo_verlauf_einzel_nr++; - } - } - } else { - // Doppel-Spiel - if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) - continue; - - if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) - $sa = 1; - else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) - $sa = 0; - else - $sa = 0.5; - - // if ($teamspiel->elo_wertung > 0 && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$heim_spieler_2_id]) && isset($aktiver_spieler[$gast_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_2_id])) { - if ($teamspiel->elo_wertung > 0) { - $ra_1 = isset($elo_doppel[$heim_spieler_1_id]) ? $elo_doppel[$heim_spieler_1_id] : $anfangswert; - $ra_2 = isset($elo_doppel[$heim_spieler_2_id]) ? $elo_doppel[$heim_spieler_2_id] : $anfangswert; - $ra = ($ra_1 + $ra_2) / 2; - $rb_1 = isset($elo_doppel[$gast_spieler_1_id]) ? $elo_doppel[$gast_spieler_1_id] : $anfangswert; - $rb_2 = isset($elo_doppel[$gast_spieler_2_id]) ? $elo_doppel[$gast_spieler_2_id] : $anfangswert; - $rb = ($rb_1 + $rb_2) / 2; - $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); - $zuwachs_ra = round($k * ($sa - $ea)); - $elo_werten = TRUE; - } else - $elo_werten = FALSE; - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr] = array(); - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $teamspiel->zeitpunkt; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["th"] = $teamspiel->heim_team_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["tg"] = $teamspiel->gast_team_id; - if ($elo_werten) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1r"] = isset($elo_doppel_neu[$gast_spieler_1_id]) != NULL ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2r"] = isset($elo_doppel_neu[$gast_spieler_2_id]) != NULL ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert; - } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["v"] = $teamspiel->veranstaltung_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["r"] = $teamspiel->spieltag; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["u"] = $teamspiel->unterteilung; - } - } - - // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat - if ($elo_werten) { - if ($zuwachs_ra > 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 9999; - } - - $elo_doppel_neu[$heim_spieler_1_id] = (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$heim_spieler_2_id] = (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_1_id] = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_2_id] = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra; - $spiele_doppel[$heim_spieler_1_id] = isset($spiele_doppel[$heim_spieler_1_id]) ? $spiele_doppel[$heim_spieler_1_id] + 1 : 1; - $spiele_doppel[$heim_spieler_2_id] = isset($spiele_doppel[$heim_spieler_2_id]) ? $spiele_doppel[$heim_spieler_2_id] + 1 : 1; - $spiele_doppel[$gast_spieler_1_id] = isset($spiele_doppel[$gast_spieler_1_id]) ? $spiele_doppel[$gast_spieler_1_id] + 1 : 1; - $spiele_doppel[$gast_spieler_2_id] = isset($spiele_doppel[$gast_spieler_2_id]) ? $spiele_doppel[$gast_spieler_2_id] + 1 : 1; - } - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { - if ($elo_werten) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1rn"] = $elo_doppel_neu[$heim_spieler_1_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2rn"] = $elo_doppel_neu[$heim_spieler_2_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1rn"] = $elo_doppel_neu[$gast_spieler_1_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2rn"] = $elo_doppel_neu[$gast_spieler_2_id]; - } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_elo_verlauf_doppel_nr++; - } - } - } - } while ($teamspiele_nr < $teamspiele_anzahl && $begegnung_id == $teamspiele[$teamspiele_nr - $teamspiele_offset]->begegnung_id); - } else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn)) { - // Individualwettbewerbspiel auswerten - $individualwettbewerb_spiel = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr++ - $individualwettbewerb_spiele_offset]; - if ($individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset == 5000) { - $individualwettbewerb_spiele_offset += 5000; - $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id, elo_wertung" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)"; + if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr - $teamspiele_offset]->zeitpunkt <= $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt)) { + // Begegnung auswerten + $begegnung_id = $teamspiele[$teamspiele_nr - $teamspiele_offset]->begegnung_id; + do { + $teamspiel = $teamspiele[$teamspiele_nr++ - $teamspiele_offset]; + if ($teamspiele_nr - $teamspiele_offset == 5000) { + $teamspiele_offset += 5000; + $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung, elo_wertung" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id)"; if ($spieler_id == NULL) - $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; + $query .= " AND #__sportsmanager_veranstaltung.elo_wertung > 0"; if (!empty($cache_datum_beginn)) $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; - $query .= "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id" - . "\n LIMIT $individualwettbewerb_spiele_offset, 5000"; + $query .= "\n ORDER BY zeitpunkt, begegnung_id, teamspiel_nummer" + . "\n LIMIT $teamspiele_offset, 5000"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $individualwettbewerb_spiele = $db->loadObjectList(); + $teamspiele = $db->loadObjectList(); } - $heim_spieler_1_id = $individualwettbewerb_spiel->heim_spieler_1_id; - $heim_spieler_2_id = $individualwettbewerb_spiel->heim_spieler_2_id; - $gast_spieler_1_id = $individualwettbewerb_spiel->gast_spieler_1_id; - $gast_spieler_2_id = $individualwettbewerb_spiel->gast_spieler_2_id; - - if ($individualwettbewerb_spiel->ergebnis == 1) - $sa = 1; - else if ($individualwettbewerb_spiel->ergebnis == 2) - $sa = 0; - else - $sa = 0.5; + $heim_spieler_1_id = $teamspiel->heim_spieler_1_id; + $heim_spieler_2_id = $teamspiel->heim_spieler_2_id; + $gast_spieler_1_id = $teamspiel->gast_spieler_1_id; + $gast_spieler_2_id = $teamspiel->gast_spieler_2_id; if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { // Einzel-Spiel if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) continue; - // if (!isset($aktiver_spieler[$heim_spieler_1_id]) || !isset($aktiver_spieler[$gast_spieler_1_id])) - // continue; - // if ($teamspiel->elo_wertung > 0 && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_1_id])) { - if ($individualwettbewerb_spiel->elo_wertung > 0) { - $ra = isset($elo_einzel[$heim_spieler_1_id]) ? $elo_einzel[$heim_spieler_1_id] : $anfangswert; - $rb = isset($elo_einzel[$gast_spieler_1_id]) ? $elo_einzel[$gast_spieler_1_id] : $anfangswert; + + if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) + $sa = 1; + else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) + $sa = 0; + else + $sa = 0.5; + $zuwachs_ra = null; + if ($teamspiel->elo_wertung > 0) { + $ra = $elo_einzel[$heim_spieler_1_id] ?? $anfangswert; + $rb = $elo_einzel[$gast_spieler_1_id] ?? $anfangswert; $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); $zuwachs_ra = round($k * ($sa - $ea)); $elo_werten = TRUE; @@ -6752,34 +6077,37 @@ function teamSpielplanXML() { if ($spieler_id != NULL) { if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr] = array(); - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $teamspiel->zeitpunkt; $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["th"] = $teamspiel->heim_team_id; $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["tg"] = $teamspiel->gast_team_id; if ($elo_werten) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = $elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = $elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert; } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["v"] = $teamspiel->veranstaltung_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["r"] = $teamspiel->spieltag; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["u"] = $teamspiel->unterteilung; } } // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat if ($elo_werten) { if ($zuwachs_ra > 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; } - $elo_einzel_neu[$heim_spieler_1_id] = (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_einzel_neu[$gast_spieler_1_id] = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; + $elo_einzel_neu[$heim_spieler_1_id] = ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_einzel_neu[$gast_spieler_1_id] = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; $spiele_einzel[$heim_spieler_1_id] = isset($spiele_einzel[$heim_spieler_1_id]) ? $spiele_einzel[$heim_spieler_1_id] + 1 : 1; $spiele_einzel[$gast_spieler_1_id] = isset($spiele_einzel[$gast_spieler_1_id]) ? $spiele_einzel[$gast_spieler_1_id] + 1 : 1; } @@ -6790,7 +6118,7 @@ function teamSpielplanXML() { $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1rn"] = $elo_einzel_neu[$heim_spieler_1_id]; $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1rn"] = $elo_einzel_neu[$gast_spieler_1_id]; } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); $spieler_elo_verlauf_einzel_nr++; } } @@ -6799,13 +6127,20 @@ function teamSpielplanXML() { if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) continue; - // if ($teamspiel->elo_wertung > 0 && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$heim_spieler_2_id]) && isset($aktiver_spieler[$gast_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_2_id])) { - if ($individualwettbewerb_spiel->elo_wertung > 0) { - $ra_1 = isset($elo_doppel[$heim_spieler_1_id]) ? $elo_doppel[$heim_spieler_1_id] : $anfangswert; - $ra_2 = isset($elo_doppel[$heim_spieler_2_id]) ? $elo_doppel[$heim_spieler_2_id] : $anfangswert; + if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) + $sa = 1; + else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) + $sa = 0; + else + $sa = 0.5; + + $zuwachs_ra = null; + if ($teamspiel->elo_wertung > 0) { + $ra_1 = $elo_doppel[$heim_spieler_1_id] ?? $anfangswert; + $ra_2 = $elo_doppel[$heim_spieler_2_id] ?? $anfangswert; $ra = ($ra_1 + $ra_2) / 2; - $rb_1 = isset($elo_doppel[$gast_spieler_1_id]) ? $elo_doppel[$gast_spieler_1_id] : $anfangswert; - $rb_2 = isset($elo_doppel[$gast_spieler_2_id]) ? $elo_doppel[$gast_spieler_2_id] : $anfangswert; + $rb_1 = $elo_doppel[$gast_spieler_1_id] ?? $anfangswert; + $rb_2 = $elo_doppel[$gast_spieler_2_id] ?? $anfangswert; $rb = ($rb_1 + $rb_2) / 2; $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); $zuwachs_ra = round($k * ($sa - $ea)); @@ -6816,48 +6151,51 @@ function teamSpielplanXML() { if ($spieler_id != NULL) { if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr] = array(); - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $teamspiel->zeitpunkt; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["th"] = $teamspiel->heim_team_id; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["tg"] = $teamspiel->gast_team_id; if ($elo_werten) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = $elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = $elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1r"] = isset($elo_doppel_neu[$gast_spieler_1_id]) != NULL ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2r"] = isset($elo_doppel_neu[$gast_spieler_2_id]) != NULL ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert; } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["v"] = $teamspiel->veranstaltung_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["r"] = $teamspiel->spieltag; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["u"] = $teamspiel->unterteilung; } } // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat if ($elo_werten) { if ($zuwachs_ra > 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 9999; + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 9999; } - $elo_doppel_neu[$heim_spieler_1_id] = (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$heim_spieler_2_id] = (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_1_id] = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_2_id] = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra; + $elo_doppel_neu[$heim_spieler_1_id] = ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$heim_spieler_2_id] = ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_1_id] = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_2_id] = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra; $spiele_doppel[$heim_spieler_1_id] = isset($spiele_doppel[$heim_spieler_1_id]) ? $spiele_doppel[$heim_spieler_1_id] + 1 : 1; $spiele_doppel[$heim_spieler_2_id] = isset($spiele_doppel[$heim_spieler_2_id]) ? $spiele_doppel[$heim_spieler_2_id] + 1 : 1; $spiele_doppel[$gast_spieler_1_id] = isset($spiele_doppel[$gast_spieler_1_id]) ? $spiele_doppel[$gast_spieler_1_id] + 1 : 1; @@ -6872,1393 +6210,1368 @@ function teamSpielplanXML() { $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1rn"] = $elo_doppel_neu[$gast_spieler_1_id]; $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2rn"] = $elo_doppel_neu[$gast_spieler_2_id]; } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); $spieler_elo_verlauf_doppel_nr++; } } } + } while ($teamspiele_nr < $teamspiele_anzahl && $begegnung_id == $teamspiele[$teamspiele_nr - $teamspiele_offset]->begegnung_id); + } else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset]->zeitpunkt <= $disziplinen[$disziplinen_nr]->beginn)) { + // Individualwettbewerbspiel auswerten + $individualwettbewerb_spiel = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr++ - $individualwettbewerb_spiele_offset]; + if ($individualwettbewerb_spiele_nr - $individualwettbewerb_spiele_offset == 5000) { + $individualwettbewerb_spiele_offset += 5000; + $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id, elo_wertung" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)"; + if ($spieler_id == NULL) + $query .= " AND #__sportsmanager_individualwettbewerb.elo_wertung > 0"; + if (!empty($cache_datum_beginn)) + $query .= " AND zeitpunkt >= '$cache_datum_beginn'"; + $query .= "\n ORDER BY zeitpunkt, individualwettbewerb_spiel_id" + . "\n LIMIT $individualwettbewerb_spiele_offset, 5000"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerb_spiele = $db->loadObjectList(); + } + $heim_spieler_1_id = $individualwettbewerb_spiel->heim_spieler_1_id; + $heim_spieler_2_id = $individualwettbewerb_spiel->heim_spieler_2_id; + $gast_spieler_1_id = $individualwettbewerb_spiel->gast_spieler_1_id; + $gast_spieler_2_id = $individualwettbewerb_spiel->gast_spieler_2_id; + + if ($individualwettbewerb_spiel->ergebnis == 1) + $sa = 1; + else if ($individualwettbewerb_spiel->ergebnis == 2) + $sa = 0; + else + $sa = 0.5; + + if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { + // Einzel-Spiel + if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) + continue; + $zuwachs_ra = null; + if ($individualwettbewerb_spiel->elo_wertung > 0) { + $ra = $elo_einzel[$heim_spieler_1_id] ?? $anfangswert; + $rb = $elo_einzel[$gast_spieler_1_id] ?? $anfangswert; + $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); + $zuwachs_ra = round($k * ($sa - $ea)); + $elo_werten = TRUE; + } else + $elo_werten = FALSE; + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr] = array(); + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; + if ($elo_werten) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = $elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = $elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert; + } + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + } + } + + // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($elo_werten) { + if ($zuwachs_ra > 0) { + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; + } + + $elo_einzel_neu[$heim_spieler_1_id] = ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_einzel_neu[$gast_spieler_1_id] = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; + $spiele_einzel[$heim_spieler_1_id] = isset($spiele_einzel[$heim_spieler_1_id]) ? $spiele_einzel[$heim_spieler_1_id] + 1 : 1; + $spiele_einzel[$gast_spieler_1_id] = isset($spiele_einzel[$gast_spieler_1_id]) ? $spiele_einzel[$gast_spieler_1_id] + 1 : 1; + } + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { + if ($elo_werten) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1rn"] = $elo_einzel_neu[$heim_spieler_1_id]; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1rn"] = $elo_einzel_neu[$gast_spieler_1_id]; + } + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_elo_verlauf_einzel_nr++; + } + } } else { - // Turnierdisziplin auswerten - $disziplin = $disziplinen[$disziplinen_nr++]; + // Doppel-Spiel + if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) + continue; - $query = "SELECT turniermeldung_id, spieler_id" - . "\n FROM #__sportsmanager_turniermeldung INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungenSpieler = $db->loadObjectList(); + $zuwachs_ra = null; + if ($individualwettbewerb_spiel->elo_wertung > 0) { + $ra_1 = $elo_doppel[$heim_spieler_1_id] ?? $anfangswert; + $ra_2 = $elo_doppel[$heim_spieler_2_id] ?? $anfangswert; + $ra = ($ra_1 + $ra_2) / 2; + $rb_1 = $elo_doppel[$gast_spieler_1_id] ?? $anfangswert; + $rb_2 = $elo_doppel[$gast_spieler_2_id] ?? $anfangswert; + $rb = ($rb_1 + $rb_2) / 2; + $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); + $zuwachs_ra = round($k * ($sa - $ea)); + $elo_werten = TRUE; + } else + $elo_werten = FALSE; - $meldungenSpielerIds = array(); - foreach ($meldungenSpieler as $s) { - if (!isset($meldungenSpielerIds[$s->turniermeldung_id])) - $meldungenSpielerIds[$s->turniermeldung_id] = array(); - array_push($meldungenSpielerIds[$s->turniermeldung_id], $s->spieler_id); - } - - $query = "SELECT heim_meldung_id, gast_meldung_id, runde, rundenstufe, ergebnis" - . "\n FROM #__sportsmanager_turnierspiel" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id" - . "\n ORDER BY spiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - foreach ($spiele as $spiel) { - if ($disziplin->typ == 0) { // Einzel - if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 1 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 1) - continue; - - $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; - $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; - if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) - continue; - - if ($spiel->ergebnis == 1) - $sa = 1; - else if ($spiel->ergebnis == 2) - $sa = 0; - else - $sa = 0.5; - - // if ($disziplin->elo_wertung > 0 && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_1_id])) { - if ($disziplin->elo_wertung > 0) { - $ra = isset($elo_einzel[$heim_spieler_1_id]) ? $elo_einzel[$heim_spieler_1_id] : $anfangswert; - $rb = isset($elo_einzel[$gast_spieler_1_id]) ? $elo_einzel[$gast_spieler_1_id] : $anfangswert; - - $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); - $zuwachs_ra = round($k * ($sa - $ea)); - $elo_werten = TRUE; - } else - $elo_werten = FALSE; - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr] = array(); - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $disziplin->beginn; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; - if ($elo_werten) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert; - } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["t"] = $disziplin->turnierdisziplin_id; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["r"] = $spiel->runde; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["rs"] = $spiel->rundenstufe; - } - } - - // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr] = array(); + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; if ($elo_werten) { - if ($zuwachs_ra > 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; - } - - $elo_einzel_neu[$heim_spieler_1_id] = (isset($elo_einzel_neu[$heim_spieler_1_id]) ? $elo_einzel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_einzel_neu[$gast_spieler_1_id] = (isset($elo_einzel_neu[$gast_spieler_1_id]) ? $elo_einzel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; - $spiele_einzel[$heim_spieler_1_id] = isset($spiele_einzel[$heim_spieler_1_id]) ? $spiele_einzel[$heim_spieler_1_id] + 1 : 1; - $spiele_einzel[$gast_spieler_1_id] = isset($spiele_einzel[$gast_spieler_1_id]) ? $spiele_einzel[$gast_spieler_1_id] + 1 : 1; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = $elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = $elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1r"] = isset($elo_doppel_neu[$gast_spieler_1_id]) != NULL ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2r"] = isset($elo_doppel_neu[$gast_spieler_2_id]) != NULL ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert; } + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + } + } - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { - if ($elo_werten) { - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1rn"] = $elo_einzel_neu[$heim_spieler_1_id]; - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1rn"] = $elo_einzel_neu[$gast_spieler_1_id]; - } - $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_elo_verlauf_einzel_nr++; - } - } - } else { // Doppel - if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 2 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 2) - continue; + // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($elo_werten) { + if ($zuwachs_ra > 0) { + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 9999; + } - $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; - $heim_spieler_2_id = $meldungenSpielerIds[$spiel->heim_meldung_id][1]; - $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; - $gast_spieler_2_id = $meldungenSpielerIds[$spiel->gast_meldung_id][1]; + $elo_doppel_neu[$heim_spieler_1_id] = ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$heim_spieler_2_id] = ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_1_id] = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_2_id] = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra; + $spiele_doppel[$heim_spieler_1_id] = isset($spiele_doppel[$heim_spieler_1_id]) ? $spiele_doppel[$heim_spieler_1_id] + 1 : 1; + $spiele_doppel[$heim_spieler_2_id] = isset($spiele_doppel[$heim_spieler_2_id]) ? $spiele_doppel[$heim_spieler_2_id] + 1 : 1; + $spiele_doppel[$gast_spieler_1_id] = isset($spiele_doppel[$gast_spieler_1_id]) ? $spiele_doppel[$gast_spieler_1_id] + 1 : 1; + $spiele_doppel[$gast_spieler_2_id] = isset($spiele_doppel[$gast_spieler_2_id]) ? $spiele_doppel[$gast_spieler_2_id] + 1 : 1; + } - if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) - continue; - - if ($spiel->ergebnis == 1) - $sa = 1; - else if ($spiel->ergebnis == 2) - $sa = 0; - else - $sa = 0.5; - - // if ($disziplin->elo_wertung && isset($aktiver_spieler[$heim_spieler_1_id]) && isset($aktiver_spieler[$heim_spieler_2_id]) && isset($aktiver_spieler[$gast_spieler_1_id]) && isset($aktiver_spieler[$gast_spieler_2_id])) { - if ($disziplin->elo_wertung) { - $ra_1 = isset($elo_doppel[$heim_spieler_1_id]) ? $elo_doppel[$heim_spieler_1_id] : $anfangswert; - $ra_2 = isset($elo_doppel[$heim_spieler_2_id]) ? $elo_doppel[$heim_spieler_2_id] : $anfangswert; - $ra = ($ra_1 + $ra_2) / 2; - $rb_1 = isset($elo_doppel[$gast_spieler_1_id]) ? $elo_doppel[$gast_spieler_1_id] : $anfangswert; - $rb_2 = isset($elo_doppel[$gast_spieler_2_id]) ? $elo_doppel[$gast_spieler_2_id] : $anfangswert; - $rb = ($rb_1 + $rb_2) / 2; - - $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); - $zuwachs_ra = round($k * ($sa - $ea)); - $elo_werten = TRUE; - } else - $elo_werten = FALSE; - - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr] = array(); - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $disziplin->beginn; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; - if ($elo_werten) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1r"] = isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2r"] = isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert; - } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["t"] = $disziplin->turnierdisziplin_id; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["r"] = $spiel->runde; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["rs"] = $spiel->rundenstufe; - } - } - - // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { if ($elo_werten) { - if ($zuwachs_ra > 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra > 9999) - $zuwachs_ra = 9999 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 1; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra < 1) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 1; - } - else if ($zuwachs_ra < 0) { - if ((isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert); - if ((isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra < 1) - $zuwachs_ra = 1 - (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert); - if ((isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - 9999; - if ((isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra > 9999) - $zuwachs_ra = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - 9999; - } + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1rn"] = $elo_doppel_neu[$heim_spieler_1_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2rn"] = $elo_doppel_neu[$heim_spieler_2_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1rn"] = $elo_doppel_neu[$gast_spieler_1_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2rn"] = $elo_doppel_neu[$gast_spieler_2_id]; + } + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_elo_verlauf_doppel_nr++; + } + } + } + } else { + // Turnierdisziplin auswerten + $disziplin = $disziplinen[$disziplinen_nr++]; - $elo_doppel_neu[$heim_spieler_1_id] = (isset($elo_doppel_neu[$heim_spieler_1_id]) ? $elo_doppel_neu[$heim_spieler_1_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$heim_spieler_2_id] = (isset($elo_doppel_neu[$heim_spieler_2_id]) ? $elo_doppel_neu[$heim_spieler_2_id] : $anfangswert) + $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_1_id] = (isset($elo_doppel_neu[$gast_spieler_1_id]) ? $elo_doppel_neu[$gast_spieler_1_id] : $anfangswert) - $zuwachs_ra; - $elo_doppel_neu[$gast_spieler_2_id] = (isset($elo_doppel_neu[$gast_spieler_2_id]) ? $elo_doppel_neu[$gast_spieler_2_id] : $anfangswert) - $zuwachs_ra; - $spiele_doppel[$heim_spieler_1_id] = isset($spiele_doppel[$heim_spieler_1_id]) ? $spiele_doppel[$heim_spieler_1_id] + 1 : 1; - $spiele_doppel[$heim_spieler_2_id] = isset($spiele_doppel[$heim_spieler_2_id]) ? $spiele_doppel[$heim_spieler_2_id] + 1 : 1; - $spiele_doppel[$gast_spieler_1_id] = isset($spiele_doppel[$gast_spieler_1_id]) ? $spiele_doppel[$gast_spieler_1_id] + 1 : 1; - $spiele_doppel[$gast_spieler_2_id] = isset($spiele_doppel[$gast_spieler_2_id]) ? $spiele_doppel[$gast_spieler_2_id] + 1 : 1; + $query = "SELECT turniermeldung_id, spieler_id" + . "\n FROM #__sportsmanager_turniermeldung INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungenSpieler = $db->loadObjectList(); + + $meldungenSpielerIds = array(); + foreach ($meldungenSpieler as $s) { + if (!isset($meldungenSpielerIds[$s->turniermeldung_id])) + $meldungenSpielerIds[$s->turniermeldung_id] = array(); + $meldungenSpielerIds[$s->turniermeldung_id][] = $s->spieler_id; + } + + $query = "SELECT heim_meldung_id, gast_meldung_id, runde, rundenstufe, ergebnis" + . "\n FROM #__sportsmanager_turnierspiel" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id" + . "\n ORDER BY spiel_nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + foreach ($spiele as $spiel) { + if ($disziplin->typ == 0) { // Einzel + if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 1 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 1) + continue; + + $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; + $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; + if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) + continue; + + if ($spiel->ergebnis == 1) + $sa = 1; + else if ($spiel->ergebnis == 2) + $sa = 0; + else + $sa = 0.5; + + $zuwachs_ra = null; + if ($disziplin->elo_wertung > 0) { + $ra = $elo_einzel[$heim_spieler_1_id] ?? $anfangswert; + $rb = $elo_einzel[$gast_spieler_1_id] ?? $anfangswert; + + $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); + $zuwachs_ra = round($k * ($sa - $ea)); + $elo_werten = TRUE; + } else + $elo_werten = FALSE; + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr] = array(); + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["z"] = $disziplin->beginn; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; + if ($elo_werten) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1r"] = $elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1r"] = $elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert; + } + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["t"] = $disziplin->turnierdisziplin_id; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["r"] = $spiel->runde; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["rs"] = $spiel->rundenstufe; + } + } + + // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($elo_werten) { + if ($zuwachs_ra > 0) { + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; } - if ($spieler_id != NULL) { - if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { - if ($elo_werten) { - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1rn"] = $elo_doppel_neu[$heim_spieler_1_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2rn"] = $elo_doppel_neu[$heim_spieler_2_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1rn"] = $elo_doppel_neu[$gast_spieler_1_id]; - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2rn"] = $elo_doppel_neu[$gast_spieler_2_id]; - } - $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_elo_verlauf_doppel_nr++; + $elo_einzel_neu[$heim_spieler_1_id] = ($elo_einzel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_einzel_neu[$gast_spieler_1_id] = ($elo_einzel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; + $spiele_einzel[$heim_spieler_1_id] = isset($spiele_einzel[$heim_spieler_1_id]) ? $spiele_einzel[$heim_spieler_1_id] + 1 : 1; + $spiele_einzel[$gast_spieler_1_id] = isset($spiele_einzel[$gast_spieler_1_id]) ? $spiele_einzel[$gast_spieler_1_id] + 1 : 1; + } + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $gast_spieler_1_id) { + if ($elo_werten) { + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["h1rn"] = $elo_einzel_neu[$heim_spieler_1_id]; + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["g1rn"] = $elo_einzel_neu[$gast_spieler_1_id]; } + $spieler_elo_verlauf_einzel[$spieler_elo_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); + $spieler_elo_verlauf_einzel_nr++; + } + } + } else { // Doppel + if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 2 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 2) + continue; + + $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; + $heim_spieler_2_id = $meldungenSpielerIds[$spiel->heim_meldung_id][1]; + $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; + $gast_spieler_2_id = $meldungenSpielerIds[$spiel->gast_meldung_id][1]; + + if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) + continue; + + if ($spiel->ergebnis == 1) + $sa = 1; + else if ($spiel->ergebnis == 2) + $sa = 0; + else + $sa = 0.5; + + $zuwachs_ra = null; + if ($disziplin->elo_wertung) { + $ra_1 = $elo_doppel[$heim_spieler_1_id] ?? $anfangswert; + $ra_2 = $elo_doppel[$heim_spieler_2_id] ?? $anfangswert; + $ra = ($ra_1 + $ra_2) / 2; + $rb_1 = $elo_doppel[$gast_spieler_1_id] ?? $anfangswert; + $rb_2 = $elo_doppel[$gast_spieler_2_id] ?? $anfangswert; + $rb = ($rb_1 + $rb_2) / 2; + + $ea = 1 / (1 + pow(10, ($rb - $ra) / 400)); + $zuwachs_ra = round($k * ($sa - $ea)); + $elo_werten = TRUE; + } else + $elo_werten = FALSE; + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr] = array(); + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["z"] = $disziplin->beginn; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; + if ($elo_werten) { + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1r"] = $elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2r"] = $elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1r"] = $elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2r"] = $elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert; + } + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["t"] = $disziplin->turnierdisziplin_id; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["r"] = $spiel->runde; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["rs"] = $spiel->rundenstufe; + } + } + + // Sicherstellen, dass kein Spieler weniger als einen oder mehr als 9999 Punkte hat + if ($elo_werten) { + if ($zuwachs_ra > 0) { + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra > 9999) + $zuwachs_ra = 9999 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 1; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra < 1) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 1; + } else if ($zuwachs_ra < 0) { + if (($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert); + if (($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra < 1) + $zuwachs_ra = 1 - ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert); + if (($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - 9999; + if (($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra > 9999) + $zuwachs_ra = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - 9999; + } + + $elo_doppel_neu[$heim_spieler_1_id] = ($elo_doppel_neu[$heim_spieler_1_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$heim_spieler_2_id] = ($elo_doppel_neu[$heim_spieler_2_id] ?? $anfangswert) + $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_1_id] = ($elo_doppel_neu[$gast_spieler_1_id] ?? $anfangswert) - $zuwachs_ra; + $elo_doppel_neu[$gast_spieler_2_id] = ($elo_doppel_neu[$gast_spieler_2_id] ?? $anfangswert) - $zuwachs_ra; + $spiele_doppel[$heim_spieler_1_id] = isset($spiele_doppel[$heim_spieler_1_id]) ? $spiele_doppel[$heim_spieler_1_id] + 1 : 1; + $spiele_doppel[$heim_spieler_2_id] = isset($spiele_doppel[$heim_spieler_2_id]) ? $spiele_doppel[$heim_spieler_2_id] + 1 : 1; + $spiele_doppel[$gast_spieler_1_id] = isset($spiele_doppel[$gast_spieler_1_id]) ? $spiele_doppel[$gast_spieler_1_id] + 1 : 1; + $spiele_doppel[$gast_spieler_2_id] = isset($spiele_doppel[$gast_spieler_2_id]) ? $spiele_doppel[$gast_spieler_2_id] + 1 : 1; + } + + if ($spieler_id != NULL) { + if ($spieler_id == $heim_spieler_1_id || $spieler_id == $heim_spieler_2_id || $spieler_id == $gast_spieler_1_id || $spieler_id == $gast_spieler_2_id) { + if ($elo_werten) { + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h1rn"] = $elo_doppel_neu[$heim_spieler_1_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["h2rn"] = $elo_doppel_neu[$heim_spieler_2_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g1rn"] = $elo_doppel_neu[$gast_spieler_1_id]; + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["g2rn"] = $elo_doppel_neu[$gast_spieler_2_id]; + } + $spieler_elo_verlauf_doppel[$spieler_elo_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); + $spieler_elo_verlauf_doppel_nr++; } } } } - $elo_einzel = $elo_einzel_neu; - $elo_doppel = $elo_doppel_neu; } + $elo_einzel = $elo_einzel_neu; + $elo_doppel = $elo_doppel_neu; } +} - function spieleVerlauf($spieler_id, &$spieler_verlauf_einzel, &$spieler_verlauf_doppel) { - $db = & getDatabase(); +function spieleVerlauf($spieler_id, &$spieler_verlauf_einzel, &$spieler_verlauf_doppel): void +{ + $db = getDatabase(); - $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" - . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" - . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" - . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)" - . "\n ORDER BY zeitpunkt DESC, begegnung_id DESC, teamspiel_nummer DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamspiele = $db->loadObjectList(); - $teamspiele_anzahl = count($teamspiele); - $teamspiele_nr = 0; + $query = "SELECT #__sportsmanager_begegnung.begegnung_id, zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, heim_team_id, gast_team_id, #__sportsmanager_veranstaltung.veranstaltung_id, spieltag, #__sportsmanager_veranstaltung.unterteilung" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id" + . "\n INNER JOIN #__sportsmanager_teamspiel USING (begegnung_id)" + . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" + . "\n WHERE #__sportsmanager_veranstaltung.status > 0 AND ISNULL(unbestaetigtes_ergebnis_id) AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)" + . "\n ORDER BY zeitpunkt DESC, begegnung_id DESC, teamspiel_nummer DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teamspiele = $db->loadObjectList(); + $teamspiele_anzahl = count($teamspiele); + $teamspiele_nr = 0; - $query = "SELECT DISTINCT turnierdisziplin_id, beginn, typ" - . "\n FROM #__sportsmanager_turniermeldung_spieler" - . "\n INNER JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id)" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n WHERE spieler_id = $spieler_id AND status > 0 AND rundenstufe = 0" - . "\n ORDER BY beginn DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplinen = $db->loadObjectList(); - $disziplinen_anzahl = count($disziplinen); - $disziplinen_nr = 0; + $query = "SELECT DISTINCT turnierdisziplin_id, beginn, typ" + . "\n FROM #__sportsmanager_turniermeldung_spieler" + . "\n INNER JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id)" + . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n WHERE spieler_id = $spieler_id AND status > 0 AND rundenstufe = 0" + . "\n ORDER BY beginn DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $disziplinen = $db->loadObjectList(); + $disziplinen_anzahl = count($disziplinen); + $disziplinen_nr = 0; - $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" - . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)" - . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerb_spiele = $db->loadObjectList(); - $individualwettbewerb_spiele_anzahl = count($individualwettbewerb_spiele); - $individualwettbewerb_spiele_nr = 0; + $query = "SELECT zeitpunkt, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, ergebnis, #__sportsmanager_individualwettbewerb.individualwettbewerb_id" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" + . "\n WHERE #__sportsmanager_individualwettbewerb.status > 0 AND (heim_spieler_1_id = $spieler_id OR heim_spieler_2_id = $spieler_id OR gast_spieler_1_id = $spieler_id OR gast_spieler_2_id = $spieler_id)" + . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerb_spiele = $db->loadObjectList(); + $individualwettbewerb_spiele_anzahl = count($individualwettbewerb_spiele); + $individualwettbewerb_spiele_nr = 0; - $spieler_verlauf_einzel_nr = 0; - $spieler_verlauf_doppel_nr = 0; + $spieler_verlauf_einzel_nr = 0; + $spieler_verlauf_doppel_nr = 0; - while ($spieler_verlauf_einzel_nr <= 100 && $spieler_verlauf_doppel_nr <= 100 && ($teamspiele_nr < $teamspiele_anzahl || $disziplinen_nr < $disziplinen_anzahl || $individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl)) { - // Als nächstes Mannschaftsbegegnung oder Turnierdisziplin? + while ($spieler_verlauf_einzel_nr <= 100 && $spieler_verlauf_doppel_nr <= 100 && ($teamspiele_nr < $teamspiele_anzahl || $disziplinen_nr < $disziplinen_anzahl || $individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl)) { + // Als nächstes Mannschaftsbegegnung oder Turnierdisziplin? // if ($disziplinen_nr >= $disziplinen_anzahl || ($teamspiele_nr < $teamspiele_anzahl && $teamspiele[$teamspiele_nr]->zeitpunkt > $disziplinen[$disziplinen_nr]->beginn)) { - if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr]->zeitpunkt > $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr]->zeitpunkt > $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt)) { - // Begegnung auswerten - $begegnung_id = $teamspiele[$teamspiele_nr]->begegnung_id; - do { - $teamspiel = $teamspiele[$teamspiele_nr++]; - $heim_spieler_1_id = $teamspiel->heim_spieler_1_id; - $heim_spieler_2_id = $teamspiel->heim_spieler_2_id; - $gast_spieler_1_id = $teamspiel->gast_spieler_1_id; - $gast_spieler_2_id = $teamspiel->gast_spieler_2_id; - - if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { - // Einzel-Spiel - if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) - $sa = 1; - else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) - $sa = 0; - else - $sa = 0.5; - - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr] = array(); - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $teamspiel->zeitpunkt; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["th"] = $teamspiel->heim_team_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["tg"] = $teamspiel->gast_team_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["v"] = $teamspiel->veranstaltung_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["r"] = $teamspiel->spieltag; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["u"] = $teamspiel->unterteilung; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_verlauf_einzel_nr++; - } - else { - // Doppel-Spiel - if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) - continue; - - if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) - $sa = 1; - else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) - $sa = 0; - else - $sa = 0.5; - - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr] = array(); - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $teamspiel->zeitpunkt; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["th"] = $teamspiel->heim_team_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["tg"] = $teamspiel->gast_team_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["v"] = $teamspiel->veranstaltung_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["r"] = $teamspiel->spieltag; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["u"] = $teamspiel->unterteilung; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_verlauf_doppel_nr++; - } - } - while ($teamspiele_nr < $teamspiele_anzahl && $begegnung_id == $teamspiele[$teamspiele_nr]->begegnung_id); - } else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt > $disziplinen[$disziplinen_nr]->beginn)) { - // Individualwettbewerb-Spiel auswerten - $individualwettbewerb_spiel = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr++]; - $heim_spieler_1_id = $individualwettbewerb_spiel->heim_spieler_1_id; - $heim_spieler_2_id = $individualwettbewerb_spiel->heim_spieler_2_id; - $gast_spieler_1_id = $individualwettbewerb_spiel->gast_spieler_1_id; - $gast_spieler_2_id = $individualwettbewerb_spiel->gast_spieler_2_id; + if ($teamspiele_nr < $teamspiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $teamspiele[$teamspiele_nr]->zeitpunkt > $disziplinen[$disziplinen_nr]->beginn) && ($individualwettbewerb_spiele_nr >= $individualwettbewerb_spiele_anzahl || $teamspiele[$teamspiele_nr]->zeitpunkt > $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt)) { + // Begegnung auswerten + $begegnung_id = $teamspiele[$teamspiele_nr]->begegnung_id; + do { + $teamspiel = $teamspiele[$teamspiele_nr++]; + $heim_spieler_1_id = $teamspiel->heim_spieler_1_id; + $heim_spieler_2_id = $teamspiel->heim_spieler_2_id; + $gast_spieler_1_id = $teamspiel->gast_spieler_1_id; + $gast_spieler_2_id = $teamspiel->gast_spieler_2_id; if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { // Einzel-Spiel + if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) + $sa = 1; + else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) + $sa = 0; + else + $sa = 0.5; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr] = array(); - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $teamspiel->zeitpunkt; $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["th"] = $teamspiel->heim_team_id; $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["tg"] = $teamspiel->gast_team_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["v"] = $teamspiel->veranstaltung_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["r"] = $teamspiel->spieltag; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["u"] = $teamspiel->unterteilung; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); $spieler_verlauf_einzel_nr++; } else { // Doppel-Spiel if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) continue; + if ($teamspiel->teamspiel_heim_punkte > $teamspiel->teamspiel_gast_punkte) + $sa = 1; + else if ($teamspiel->teamspiel_heim_punkte < $teamspiel->teamspiel_gast_punkte) + $sa = 0; + else + $sa = 0.5; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr] = array(); - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $teamspiel->zeitpunkt; $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["th"] = $teamspiel->heim_team_id; $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["tg"] = $teamspiel->gast_team_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["v"] = $teamspiel->veranstaltung_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["r"] = $teamspiel->spieltag; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["u"] = $teamspiel->unterteilung; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); $spieler_verlauf_doppel_nr++; } + } while ($teamspiele_nr < $teamspiele_anzahl && $begegnung_id == $teamspiele[$teamspiele_nr]->begegnung_id); + } else if ($individualwettbewerb_spiele_nr < $individualwettbewerb_spiele_anzahl && ($disziplinen_nr >= $disziplinen_anzahl || $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr]->zeitpunkt > $disziplinen[$disziplinen_nr]->beginn)) { + // Individualwettbewerb-Spiel auswerten + $individualwettbewerb_spiel = $individualwettbewerb_spiele[$individualwettbewerb_spiele_nr++]; + $heim_spieler_1_id = $individualwettbewerb_spiel->heim_spieler_1_id; + $heim_spieler_2_id = $individualwettbewerb_spiel->heim_spieler_2_id; + $gast_spieler_1_id = $individualwettbewerb_spiel->gast_spieler_1_id; + $gast_spieler_2_id = $individualwettbewerb_spiel->gast_spieler_2_id; + + if ($heim_spieler_2_id == NULL && $gast_spieler_2_id == NULL) { + // Einzel-Spiel + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr] = array(); + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_verlauf_einzel_nr++; } else { - // Turnierdisziplin auswerten - $disziplin = $disziplinen[$disziplinen_nr++]; + // Doppel-Spiel + if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) + continue; - $query = "SELECT turniermeldung_id, spieler_id" - . "\n FROM #__sportsmanager_turniermeldung INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungenSpieler = $db->loadObjectList(); - - $meldungenSpielerIds = array(); - foreach ($meldungenSpieler as $s) { - if (!isset($meldungenSpielerIds[$s->turniermeldung_id])) - $meldungenSpielerIds[$s->turniermeldung_id] = array(); - array_push($meldungenSpielerIds[$s->turniermeldung_id], $s->spieler_id); - } - - $query = "SELECT heim_meldung_id, gast_meldung_id, runde, rundenstufe, ergebnis" - . "\n FROM #__sportsmanager_turnierspiel" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id" - . "\n ORDER BY spiel_nummer DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - foreach ($spiele as $spiel) { - if ($disziplin->typ == 0) { // Einzel - if (!isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || !isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 1 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 1) - continue; - - $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; - $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; - if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) - continue; - - if ($spieler_id != $heim_spieler_1_id && $spieler_id != $gast_spieler_1_id) - continue; - - if ($spiel->ergebnis == 1) - $sa = 1; - else if ($spiel->ergebnis == 2) - $sa = 0; - else - $sa = 0.5; - - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr] = array(); - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $disziplin->beginn; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["t"] = $disziplin->turnierdisziplin_id; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["r"] = $spiel->runde; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["rs"] = $spiel->rundenstufe; - $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_verlauf_einzel_nr++; - } - else { // Doppel - if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || !isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 2 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 2) - continue; - - $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; - $heim_spieler_2_id = $meldungenSpielerIds[$spiel->heim_meldung_id][1]; - $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; - $gast_spieler_2_id = $meldungenSpielerIds[$spiel->gast_meldung_id][1]; - if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) - continue; - - if ($spieler_id != $heim_spieler_1_id && $spieler_id != $heim_spieler_2_id && $spieler_id != $gast_spieler_1_id && $spieler_id != $gast_spieler_2_id) - continue; - - if ($spiel->ergebnis == 1) - $sa = 1; - else if ($spiel->ergebnis == 2) - $sa = 0; - else - $sa = 0.5; - - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr] = array(); - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $disziplin->beginn; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["t"] = $disziplin->turnierdisziplin_id; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["r"] = $spiel->runde; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["rs"] = $spiel->rundenstufe; - $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); - $spieler_verlauf_doppel_nr++; - } - } + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr] = array(); + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $individualwettbewerb_spiel->zeitpunkt; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["i"] = $individualwettbewerb_spiel->individualwettbewerb_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $individualwettbewerb_spiel->ergebnis; + $spieler_verlauf_doppel_nr++; } - } + } else { + // Turnierdisziplin auswerten + $disziplin = $disziplinen[$disziplinen_nr++]; - } - - function turniervoranmeldungen() { - $db = & getDatabase(); - global $params; - - $details_anzeigen = currentUserHasAccessToDetails(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)" - . "\n WHERE " . kategorieFilter("kategorie IN", "AND ") . "NOT EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AND" - . "\n status > 0 AND (NOT ISNULL(voranmeldung) OR EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 20))" - . "\n ORDER BY beginn, reihenfolge, disziplin, kategorie"; // LIMIT 6, 18446744073709551615 - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplinen = $db->loadObjectList(); - - HTML_sportsmanager::turniervoranmeldungenHeader($params->get('titel'), $params->get('beschreibung')); - - foreach ($disziplinen as $disziplin) { - $query = "SELECT platz, turniermeldung_id" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '20'" - . "\n ORDER BY platz, turniermeldung_id"; + $query = "SELECT turniermeldung_id, spieler_id" + . "\n FROM #__sportsmanager_turniermeldung INNER JOIN #__sportsmanager_turniermeldung_spieler USING (turniermeldung_id)" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = 0"; $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen = $db->loadObjectList(); - - $query = "SELECT turniermeldung_id, #__sportsmanager_spieler.spieler_id, geschlecht, bild_ausblenden, " . ($disziplin->voranmeldungen_rangliste_id != 0 ? "punkte, " : "") . "IF(ISNULL(#__sportsmanager_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(#__sportsmanager_spieler.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)"; - if ($disziplin->voranmeldungen_rangliste_id != 0) - $query .= "\n LEFT JOIN #__sportsmanager_rangliste_punkte ON (NOT ISNULL(#__sportsmanager_spieler.spieler_id)) AND rangliste_id = $disziplin->voranmeldungen_rangliste_id AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_spieler.spieler_id"; - $query .= "\n WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '20'" - . "\n ORDER BY turniermeldung_spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $meldungenSpieler = $db->loadObjectList(); $meldungenSpielerIds = array(); - $meldungenSpielerNamen = array(); - $meldungenSpielerGeschlechter = array(); - $meldungenSpielerBilderAusblenden = array(); - $meldungenSpielerPunkte = array(); foreach ($meldungenSpieler as $s) { - $turniermeldung_id = $s->turniermeldung_id; - $spielerId = $s->spieler_id; - $spielername = $s->nachname . ", " . $s->vorname; - $spielerGeschlecht = $s->geschlecht; - $spielerBilderAusblenden = $s->bild_ausblenden; - $spielerPunkte = $s->punkte; - if (!isset($meldungenSpielerIds[$turniermeldung_id])) { - $meldungenSpielerIds[$turniermeldung_id] = array(); - $meldungenSpielerNamen[$turniermeldung_id] = array(); - $meldungenSpielerGeschlechter[$turniermeldung_id] = array(); - $meldungenSpielerBilderAusblenden[$turniermeldung_id] = array(); - $meldungenSpielerPunkte[$turniermeldung_id] = array(); - } - array_push($meldungenSpielerIds[$turniermeldung_id], $spielerId); - array_push($meldungenSpielerNamen[$turniermeldung_id], $spielername); - array_push($meldungenSpielerGeschlechter[$turniermeldung_id], $spielerGeschlecht); - array_push($meldungenSpielerBilderAusblenden[$turniermeldung_id], $spielerBilderAusblenden); - array_push($meldungenSpielerPunkte[$turniermeldung_id], !empty($spielerPunkte) ? $spielerPunkte : 0); + if (!isset($meldungenSpielerIds[$s->turniermeldung_id])) + $meldungenSpielerIds[$s->turniermeldung_id] = array(); + $meldungenSpielerIds[$s->turniermeldung_id][] = $s->spieler_id; } - $meldungenSpielerSortiert = array(); - if ($disziplin->voranmeldungen_rangliste_id != 0) { - foreach ($meldungen as $meldung) { - $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; - $spielerPunkte = $meldungenSpielerPunkte[$meldung->turniermeldung_id]; - if ($disziplin->typ == 0 || !isset($spielerPunkte[1])) { - $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spielerPunkte[0]; - } else if ($disziplin->voranmeldungen_reihenfolge == 1) { - $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spielerPunkte[0] + $spielerPunkte[1]; - } else { - $meldungenSpielerSortiert[$meldung->turniermeldung_id] = max($spielerPunkte[0], $spielerPunkte[1]); - } - } - arsort($meldungenSpielerSortiert); - } else { - foreach ($meldungen as $meldung) { - $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; - $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spieler[0]; - if (isset($spieler[1])) - $meldungenSpielerSortiert[$meldung->turniermeldung_id] .= " / " . $spieler[1]; - } - asort($meldungenSpielerSortiert); - } - - HTML_sportsmanager::turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $details_anzeigen); - } - - administrationFooter(); - } - - function spielerstatistiken() { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; - - $details_anzeigen = currentUserHasAccessToDetails(); - $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_bestenliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - 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_bestenliste" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - - HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - - foreach ($spielerstatistiken as $spielerstatistik) { - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) - $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - else if ($spielerstatistik->tabellenwertung == 2) - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - $query .= "\n FROM #__sportsmanager_bestenliste_punkte" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" - . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; - if ($spielerstatistik->tabellenwertung == 0) - $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - else - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $query = "SELECT heim_meldung_id, gast_meldung_id, runde, rundenstufe, ergebnis" + . "\n FROM #__sportsmanager_turnierspiel" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id" + . "\n ORDER BY spiel_nummer DESC"; $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistik_punkte = $db->loadObjectList(); - - HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, $filter_saison_id, 0, 0, $details_anzeigen); - } - - /* - if ($filter_saison_id == $aktuelles_jahr) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_bestenliste" - . "\n WHERE status > 0 AND erster_tag > CURDATE() OR letzter_tag < CURDATE()" . kategorieFilter("AND kategorie IN"); - if ($filter_saison_id != NULL) - $query .= " AND (ISNULL(erster_tag) OR (ISNULL(letzter_tag) AND YEAR(erster_tag) = $filter_saison_id) OR (NOT ISNULL(letzter_tag) AND YEAR(erster_tag) <= $filter_saison_id AND YEAR(letzter_tag) >= $filter_saison_id))"; - $query .= "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $spielerstatistik_uebrige = $db->loadObjectList(); - - if (count($spielerstatistik_uebrige) > 0) - HTML_sportsmanager::spielerstatistikenListe($spielerstatistiken_uebrige); - } - */ - - administrationFooter(); - } - - function spielerstatistik() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) { - abortWithError("Missing id!"); - } - if (isJson()) { - // get id from db - $query = "select bestenliste_id from #__sportsmanager_bestenliste_veranstaltung where veranstaltung_id = " . $id; - $db->setQuery($query); - $id = $db->loadResult(); - } - $details_anzeigen = currentUserHasAccessToDetails(); - $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_bestenliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - 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; - } - } - - // Spielerstatistik ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_bestenliste" - . "\n WHERE bestenliste_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN"); - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - abortWithError("Wrong id!"); - } - $spielerstatistik = $rows[0]; - - // Spielerstatistikpunkte ermitteln - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) { - $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - } else if ($spielerstatistik->tabellenwertung == 2) { - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - } - $query .= "\n FROM #__sportsmanager_bestenliste_punkte" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" - . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; - if ($spielerstatistik->tabellenwertung == 0) { - $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - } - else { - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $spielerstatistik_punkte = $db->loadObjectList(); - - // Vorherige und nächste Spielerstatistik ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_bestenliste" - . "\n WHERE status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $n = count($rows); - $vorherige_spielerstatistik_id = 0; - $naechste_spielerstatistik_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->bestenliste_id == $id) { - if ($i > 0) { - $vorherige_spielerstatistik_id = $rows[$i - 1]->bestenliste_id; - } - if ($i + 1 < $n) { - $naechste_spielerstatistik_id = $rows[$i + 1]->bestenliste_id; - } - break; - } - } - - // Anzeigen - if (isJson()) { - JSON_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_saison_id, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); - } else { - HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_saison_id, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); - } - - } - - function eloRanglisten() { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; - - $typ = $jinput->get('typ', '', 'RAW'); - $kategorie = $jinput->get('kategorie', '', 'RAW'); - $jahr = date("Y"); - $kategorieFilter = kategorieFilter("AND kategorie IN"); - $details_anzeigen = currentUserHasAccessToDetails(); - - $elo_rangliste_typ = $params->get('typ'); - $elo_rangliste_einstufung_herrendamen = $params->get('kategorie_einstufung_herrendamen'); - $ansicht_kategorien = array("" => "alle", ($elo_rangliste_einstufung_herrendamen == "inklusive" ? "M" : "H") => "herren", ($elo_rangliste_einstufung_herrendamen == "inklusive" ? "W" : "D") => "damen", "J" => "junioren", "S" => "senioren"); - $ansicht_typen = array(); - if ($elo_rangliste_typ != "doppel") - array_push($ansicht_typen, "einzel"); - if ($elo_rangliste_typ != "einzel") - array_push($ansicht_typen, "doppel"); - $ansichten = array(); - foreach ($ansicht_kategorien as $ansicht_kategorie => $ansicht_kategorie_bezeichnung) { - if ($params->get('kategorie_' . $ansicht_kategorie_bezeichnung) == "an") { - // TODO: Prüfen, ob Spieler in dieser Einstufung vorhanden sind - $ansicht_typ = $typ; - - foreach ($ansicht_typen as $ansicht_typ) { - if (empty($kategorieFilter)) { - $query = "SELECT IF(EXISTS(SELECT geschlecht," - . "\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 FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0"; - } else { - $query = "SELECT IF(EXISTS(SELECT geschlecht," - . "\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 FROM #__sportsmanager_spieler" - . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_verein AS kategorie_verein USING (verein_id)" - . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = #__sportsmanager_verein.verein_id" - . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $kategorieFilter . "AND NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0" - . "\n GROUP BY spieler_id"; - } - if (!empty($ansicht_kategorie)) - $query .= "\n HAVING " . ($ansicht_kategorie == "M" || $ansicht_kategorie == "W" ? "geschlecht" : "kategorie") . " = '" . $db->escape($ansicht_kategorie) . "'"; - $query .= "), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) - continue; - - array_push($ansichten, array($ansicht_typ, $ansicht_kategorie)); - } - } - } - - $vorherige_ansicht = NULL; - $naechste_ansicht = NULL; - if (count($ansichten) > 1 && !empty($typ)) { - foreach ($ansichten as $index => $ansicht) { - if ($ansicht[0] == $typ && $ansicht[1] == $kategorie) { - if ($index != 0) - $vorherige_ansicht = $ansichten[$index - 1]; - if (isset($ansichten[$index + 1])) - $naechste_ansicht = $ansichten[$index + 1]; - $ansichten = array(array($typ, $kategorie)); - break; - } - } - } - $allein_angezeigt = count($ansichten) == 1; - - if (empty($vorherige_ansicht) && empty($naechste_ansicht)) - HTML_sportsmanager::eloRanglistenHeader($params->get('titel'), $params->get('beschreibung')); - foreach ($ansichten as $ansicht) { - $ansicht_typ = $ansicht[0]; - $ansicht_kategorie = $ansicht[1]; - if (empty($kategorieFilter)) { - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, aktueller_verein_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele," - . "\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 FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0"; - } else { - $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, aktueller_verein_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele," - . "\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 FROM #__sportsmanager_spieler" - . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n INNER JOIN #__sportsmanager_verein AS kategorie_verein USING (verein_id)" - . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = #__sportsmanager_verein.verein_id" - . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $kategorieFilter . "AND NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0" - . "\n GROUP BY spieler_id"; - } - if (!empty($ansicht_kategorie)) - $query .= "\n HAVING " . ($ansicht_kategorie == "M" || $ansicht_kategorie == "W" ? "geschlecht" : "kategorie") . " = '" . $db->escape($ansicht_kategorie) . "'"; - $query .= "\n ORDER BY " . ($ansicht_typ != "doppel" ? "elo_einzel DESC, nachname, vorname" : "elo_doppel DESC, nachname, vorname"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - if (!empty($spieler)) - HTML_sportsmanager::eloRangliste($spieler, $ansicht_typ, $ansicht_kategorie, $allein_angezeigt, $vorherige_ansicht, $naechste_ansicht, $details_anzeigen); - } - - if (empty($vorherige_ansicht) && empty($naechste_ansicht)) - administrationFooter(); - } - - function individualwettbewerbe() { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; - - $ansicht = $params->get('ansicht'); - $id = $jinput->get('id', 0, 'INT'); - $kategorieFilter = kategorieFilter("AND kategorie IN"); - $details_anzeigen = currentUserHasAccessToDetails(); - - $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_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE #__sportsmanager_individualwettbewerb_spiel.individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id" . $kategorieFilter . ")" - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - 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_individualwettbewerb" - . "\n WHERE status > 0" . $kategorieFilter . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE #__sportsmanager_individualwettbewerb_spiel.individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - if ($ansicht != "spiele") { - $vorheriger_individualwettbewerb_id = 0; - $naechster_individualwettbewerb_id = 0; - if (count($individualwettbewerbe) > 1 && !empty($id)) { - foreach ($individualwettbewerbe as $index => $individualwettbewerb) { - if ($individualwettbewerb->individualwettbewerb_id == $id) { - if ($index != 0) - $vorheriger_individualwettbewerb_id = $individualwettbewerbe[$index - 1]->individualwettbewerb_id; - if (isset($individualwettbewerbe[$index + 1])) - $naechster_individualwettbewerb_id = $individualwettbewerbe[$index + 1]->individualwettbewerb_id; - $individualwettbewerbe = array($individualwettbewerb); - break; - } - } - } - $allein_angezeigt = count($individualwettbewerbe) == 1; - - if (empty($vorheriger_individualwettbewerb_id) && empty($naechster_individualwettbewerb_id)) - HTML_sportsmanager::individualwettbewerbHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - - foreach ($individualwettbewerbe as $individualwettbewerb) { - $individualwettbewerbid = $individualwettbewerb->individualwettbewerb_id; - $query = "SELECT #__sportsmanager_individualwettbewerb_spiel.*," - . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.geschlecht AS heim_spieler_1_geschlecht, theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden," - . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.geschlecht AS heim_spieler_2_geschlecht, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden," - . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.geschlecht AS gast_spieler_1_geschlecht, tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden," - . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.geschlecht AS gast_spieler_2_geschlecht, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - if ($individualwettbewerb->tabellenwertung) { - $query = "SELECT spieler_id, nachname, vorname, geschlecht, vereinsname, aktueller_verein_id, platz, bild_ausblenden" - . "\n FROM #__sportsmanager_individualwettbewerb_platzierung" - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $platzierungen = $db->loadObjectList(); - } else { - $platzierungen = NULL; - } - - HTML_sportsmanager::individualwettbewerb($individualwettbewerb, $spiele, $platzierungen, $allein_angezeigt, $vorheriger_individualwettbewerb_id, $naechster_individualwettbewerb_id, $details_anzeigen); - } - } else { - HTML_sportsmanager::individualwettbewerbHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - - $individualwettbewerbe_bezeichnungen = array(); - foreach ($individualwettbewerbe as $individualwettbewerb) - $individualwettbewerbe_bezeichnungen[$individualwettbewerb->individualwettbewerb_id] = $individualwettbewerb->bezeichnung; - - $query = "SELECT #__sportsmanager_individualwettbewerb_spiel.*," - . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden," - . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden," - . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden," - . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" - . "\n FROM #__sportsmanager_individualwettbewerb" - . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" - . "\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 status > 0" . $kategorieFilter . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $spiele = $db->loadObjectList(); - HTML_sportsmanager::individualwettbewerbSpiele($individualwettbewerbe_bezeichnungen, $spiele, $details_anzeigen); + foreach ($spiele as $spiel) { + if ($disziplin->typ == 0) { // Einzel + if (!isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || !isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 1 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 1) + continue; + + $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; + $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; + if ($heim_spieler_1_id == 0 || $gast_spieler_1_id == 0) + continue; + + if ($spieler_id != $heim_spieler_1_id && $spieler_id != $gast_spieler_1_id) + continue; + + if ($spiel->ergebnis == 1) + $sa = 1; + else if ($spiel->ergebnis == 2) + $sa = 0; + else + $sa = 0.5; + + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr] = array(); + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["z"] = $disziplin->beginn; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["h1"] = $heim_spieler_1_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["g1"] = $gast_spieler_1_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["t"] = $disziplin->turnierdisziplin_id; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["r"] = $spiel->runde; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["rs"] = $spiel->rundenstufe; + $spieler_verlauf_einzel[$spieler_verlauf_einzel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); + $spieler_verlauf_einzel_nr++; + } else { // Doppel + if (empty($spiel->heim_meldung_id) || empty($spiel->gast_meldung_id) || !isset($meldungenSpielerIds[$spiel->heim_meldung_id]) || !isset($meldungenSpielerIds[$spiel->gast_meldung_id]) || count($meldungenSpielerIds[$spiel->heim_meldung_id]) != 2 || count($meldungenSpielerIds[$spiel->gast_meldung_id]) != 2) + continue; + + $heim_spieler_1_id = $meldungenSpielerIds[$spiel->heim_meldung_id][0]; + $heim_spieler_2_id = $meldungenSpielerIds[$spiel->heim_meldung_id][1]; + $gast_spieler_1_id = $meldungenSpielerIds[$spiel->gast_meldung_id][0]; + $gast_spieler_2_id = $meldungenSpielerIds[$spiel->gast_meldung_id][1]; + if ($heim_spieler_1_id == 0 || $heim_spieler_2_id == 0 || $gast_spieler_1_id == 0 || $gast_spieler_2_id == 0) + continue; + + if ($spieler_id != $heim_spieler_1_id && $spieler_id != $heim_spieler_2_id && $spieler_id != $gast_spieler_1_id && $spieler_id != $gast_spieler_2_id) + continue; + + if ($spiel->ergebnis == 1) + $sa = 1; + else if ($spiel->ergebnis == 2) + $sa = 0; + else + $sa = 0.5; + + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr] = array(); + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["z"] = $disziplin->beginn; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h1"] = $heim_spieler_1_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["h2"] = $heim_spieler_2_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g1"] = $gast_spieler_1_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["g2"] = $gast_spieler_2_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["t"] = $disziplin->turnierdisziplin_id; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["r"] = $spiel->runde; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["rs"] = $spiel->rundenstufe; + $spieler_verlauf_doppel[$spieler_verlauf_doppel_nr]["s"] = $sa == 1 ? 1 : ($sa == 0 ? 2 : 0); + $spieler_verlauf_doppel_nr++; + } + } } - - if ($ansicht != "spiele" || (empty($vorheriger_individualwettbewerb_id) && empty($naechster_individualwettbewerb_id))) - administrationFooter(); - - return; } - function ranglisten() { - $db = & getDatabase(); - global $params; - $jinput = JFactory::getApplication()->input; +} - /* - $error_level = error_reporting(E_ERROR); - $math = new MathParserSM; - $math->setVariable('m', 1); - try { - // normal bisher online - $math->setExpression("MAX(ROUND(IF(m >= 0, m, 1 / -m) * ROUND((((POW(n * 10, 0.7) - 1) * (-LN(p / n) * (1 - (p / n)))) / (-LN(1 / n) * (1 - (1 / n)))) + 1)), 1)"); +function turniervoranmeldungen(): void +{ + $db = getDatabase(); + global $params; - $math->setVariable('n', 15); - $math->setVariable('p', 1); - // echo $math->getValue() . "
"; + $details_anzeigen = currentUserHasAccessToDetails(); - // SOLL - // - Rohpunkte(#Teams)=((10*#Teams)0.7)-1 - // - Punktefaktor(Platz, #Teams) = - LOG(Platz/#Teams)*(1-(Platz/#Teams))/(-LOG(1/#Teams)*(1-(1/#Teams))) - // - PunkteHerren(Platz, #Teams) = Rohpunkte(#Teams) * PunkteFaktor(Platz, #Teams) + 1 + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n LEFT JOIN #__sportsmanager_turnier USING (turnier_id)" + . "\n WHERE " . kategorieFilter("kategorie IN", "AND ") . "NOT EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0) AND" + . "\n status > 0 AND (NOT ISNULL(voranmeldung) OR EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 20))" + . "\n ORDER BY beginn, reihenfolge, disziplin, kategorie"; // LIMIT 6, 18446744073709551615 + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $disziplinen = $db->loadObjectList(); - // Rohpunkte - $math->setExpression("POW(10 * n, 0.7) - 1"); - // Punktefaktor - $math->setExpression("-LOG(p / n) * (1 - (p / n)) / (-LOG(1 / n) * (1 - (1 / n)))"); - // Zusammen - $math->setExpression("ROUND(IF(m >= 0, m, 1 / -m) * (POW(10 * n, 0.7) - 1) * -LOG(p / n) * (1 - (p / n)) / (-LOG(1 / n) * (1 - (1 / n))) + 1)"); + HTML_sportsmanager::turniervoranmeldungenHeader($params->get('titel'), $params->get('beschreibung')); - $math->setVariable('n', 105); - $math->setVariable('p', 9); - // echo $math->getValue() . "
"; - - // 2/3 - $math->setExpression("MAX(ROUND(IF(m >= 0, m, 1 / -m) * ROUND((((POW(n * 10, 0.7) - 1) * (-LN(p / n) * (1 - (p / n)))) / (-LN(1 / n) * (1 - (1 / n)))) + 1) * 2 / 3), 1)"); - $math->setExpression("ROUND(IF(m >= 0, m, 1 / -m) * 2 / 3 * (POW(10 * n, 0.7) - 1) * -LOG(p / n) * (1 - (p / n)) / (-LOG(1 / n) * (1 - (1 / n))) + 1)"); - - $math->setVariable('n', 22); - $math->setVariable('p', 9); - echo $math->getValue() . "
"; - - // 2/3 * 2/3 - $math->setExpression("MAX(ROUND(IF(m >= 0, m, 1 / -m) * ROUND((((POW(n * 10, 0.7) - 1) * (-LN(p / n) * (1 - (p / n)))) / (-LN(1 / n) * (1 - (1 / n)))) + 1) * 2 / 3), 1)"); - $math->setExpression("ROUND(IF(m >= 0, m, 1 / -m) * 2 / 3 * 2 / 3 * (POW(10 * n, 0.7) - 1) * -LOG(p / n) * (1 - (p / n)) / (-LOG(1 / n) * (1 - (1 / n))) + 1)"); - - - // n+5 - $math->setExpression("MAX(ROUND(IF(m >= 0, m, 1 / -m) * ROUND((((POW((n + 5) * 10, 0.7) - 1) * (-LN(p / (n + 5)) * (1 - (p / (n + 5))))) / (-LN(1 / (n + 5)) * (1 - (1 / (n + 5))))) + 1)), 1)"); - - - } catch (Exception $e) { - } - error_reporting($error_level); - jexit(); - */ - - $details_anzeigen = currentUserHasAccessToDetails(); - $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_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; + foreach ($disziplinen as $disziplin) { + $query = "SELECT platz, turniermeldung_id" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '20'" + . "\n ORDER BY platz, turniermeldung_id"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $saisons = $db->loadObjectList(); + $meldungen = $db->loadObjectList(); - if (count($saisons) != 0) { - $gefunden = FALSE; - foreach ($saisons as $saison) { - if ($saison->saison_id == $filter_saison_id) { - $gefunden = TRUE; + $query = "SELECT turniermeldung_id, #__sportsmanager_spieler.spieler_id, geschlecht, bild_ausblenden, " . ($disziplin->voranmeldungen_rangliste_id != 0 ? "punkte, " : "") . "IF(ISNULL(#__sportsmanager_spieler.spieler_id), #__sportsmanager_turniermeldung_spieler_name.nachname, #__sportsmanager_spieler.nachname) AS nachname, IF(ISNULL(#__sportsmanager_spieler.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)"; + if ($disziplin->voranmeldungen_rangliste_id != 0) + $query .= "\n LEFT JOIN #__sportsmanager_rangliste_punkte ON (NOT ISNULL(#__sportsmanager_spieler.spieler_id)) AND rangliste_id = $disziplin->voranmeldungen_rangliste_id AND #__sportsmanager_rangliste_punkte.spieler_id = #__sportsmanager_spieler.spieler_id"; + $query .= "\n WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = $disziplin->turnierdisziplin_id AND rundenstufe = '20'" + . "\n ORDER BY turniermeldung_spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungenSpieler = $db->loadObjectList(); + + $meldungenSpielerIds = array(); + $meldungenSpielerNamen = array(); + $meldungenSpielerGeschlechter = array(); + $meldungenSpielerBilderAusblenden = array(); + $meldungenSpielerPunkte = array(); + foreach ($meldungenSpieler as $s) { + $turniermeldung_id = $s->turniermeldung_id; + $spielerId = $s->spieler_id; + $spielername = $s->nachname . ", " . $s->vorname; + $spielerGeschlecht = $s->geschlecht; + $spielerBilderAusblenden = $s->bild_ausblenden; + $spielerPunkte = $s->punkte; + if (!isset($meldungenSpielerIds[$turniermeldung_id])) { + $meldungenSpielerIds[$turniermeldung_id] = array(); + $meldungenSpielerNamen[$turniermeldung_id] = array(); + $meldungenSpielerGeschlechter[$turniermeldung_id] = array(); + $meldungenSpielerBilderAusblenden[$turniermeldung_id] = array(); + $meldungenSpielerPunkte[$turniermeldung_id] = array(); + } + $meldungenSpielerIds[$turniermeldung_id][] = $spielerId; + $meldungenSpielerNamen[$turniermeldung_id][] = $spielername; + $meldungenSpielerGeschlechter[$turniermeldung_id][] = $spielerGeschlecht; + $meldungenSpielerBilderAusblenden[$turniermeldung_id][] = $spielerBilderAusblenden; + $meldungenSpielerPunkte[$turniermeldung_id][] = !empty($spielerPunkte) ? $spielerPunkte : 0; + } + + $meldungenSpielerSortiert = array(); + if ($disziplin->voranmeldungen_rangliste_id != 0) { + foreach ($meldungen as $meldung) { + $spielerPunkte = $meldungenSpielerPunkte[$meldung->turniermeldung_id]; + if ($disziplin->typ == 0 || !isset($spielerPunkte[1])) { + $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spielerPunkte[0]; + } else if ($disziplin->voranmeldungen_reihenfolge == 1) { + $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spielerPunkte[0] + $spielerPunkte[1]; + } else { + $meldungenSpielerSortiert[$meldung->turniermeldung_id] = max($spielerPunkte[0], $spielerPunkte[1]); + } + } + arsort($meldungenSpielerSortiert); + } else { + foreach ($meldungen as $meldung) { + $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; + $meldungenSpielerSortiert[$meldung->turniermeldung_id] = $spieler[0]; + if (isset($spieler[1])) + $meldungenSpielerSortiert[$meldung->turniermeldung_id] .= " / " . $spieler[1]; + } + asort($meldungenSpielerSortiert); + } + + HTML_sportsmanager::turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $meldungenSpielerIds, $meldungenSpielerGeschlechter, $meldungenSpielerNamen, $meldungenSpielerBilderAusblenden, $details_anzeigen); + } + + administrationFooter(); +} + +function spielerstatistiken(): void +{ + $db = getDatabase(); + global $params; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $details_anzeigen = currentUserHasAccessToDetails(); + $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_bestenliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") + . "\n GROUP BY saison_id" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + 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_bestenliste" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); + + foreach ($spielerstatistiken as $spielerstatistik) { + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; + if ($spielerstatistik->tabellenwertung == 1) + $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; + else if ($spielerstatistik->tabellenwertung == 2) + $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; + $query .= "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; + if ($spielerstatistik->tabellenwertung == 0) + $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + else + $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistik_punkte = $db->loadObjectList(); + + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, $details_anzeigen); + } + + administrationFooter(); +} + +function spielerstatistik(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) { + abortWithError("Missing id!"); + } + if (isJson()) { + // get id from db + $query = "select bestenliste_id from #__sportsmanager_bestenliste_veranstaltung where veranstaltung_id = " . $id; + $db->setQuery($query); + $id = $db->loadResult(); + } + $details_anzeigen = currentUserHasAccessToDetails(); + $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_bestenliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN") + . "\n GROUP BY saison_id" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + 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; + } + } + + // Spielerstatistik ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_bestenliste" + . "\n WHERE bestenliste_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_bestenliste_punkte WHERE #__sportsmanager_bestenliste_punkte.bestenliste_id = #__sportsmanager_bestenliste.bestenliste_id)" . kategorieFilter("AND kategorie IN"); + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + abortWithError("Wrong id!"); + } + $spielerstatistik = $rows[0]; + + // Spielerstatistikpunkte ermitteln + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; + if ($spielerstatistik->tabellenwertung == 1) { + $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 2) { + $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; + } + $query .= "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; + if ($spielerstatistik->tabellenwertung == 0) { + $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + } else { + $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + } + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $spielerstatistik_punkte = $db->loadObjectList(); + + // Vorherige und nächste Spielerstatistik ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_bestenliste" + . "\n WHERE status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $n = count($rows); + $vorherige_spielerstatistik_id = 0; + $naechste_spielerstatistik_id = 0; + for ($i = 0; $i < $n; $i++) { + if ($rows[$i]->bestenliste_id == $id) { + if ($i > 0) { + $vorherige_spielerstatistik_id = $rows[$i - 1]->bestenliste_id; + } + if ($i + 1 < $n) { + $naechste_spielerstatistik_id = $rows[$i + 1]->bestenliste_id; + } + break; + } + } + + // Anzeigen + if (isJson()) { + JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte); + } else { + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); + } + +} + +function eloRanglisten(): void +{ + $db = getDatabase(); + global $params; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $typ = $jInput->get('typ', '', 'RAW'); + $kategorie = $jInput->get('kategorie', '', 'RAW'); + $jahr = date("Y"); + $kategorieFilter = kategorieFilter("AND kategorie IN"); + $details_anzeigen = currentUserHasAccessToDetails(); + + $elo_rangliste_typ = $params->get('typ'); + $elo_rangliste_einstufung_herrendamen = $params->get('kategorie_einstufung_herrendamen'); + $ansicht_kategorien = array("" => "alle", ($elo_rangliste_einstufung_herrendamen == "inklusive" ? "M" : "H") => "herren", ($elo_rangliste_einstufung_herrendamen == "inklusive" ? "W" : "D") => "damen", "J" => "junioren", "S" => "senioren"); + $ansicht_typen = array(); + if ($elo_rangliste_typ != "doppel") + $ansicht_typen[] = "einzel"; + if ($elo_rangliste_typ != "einzel") + $ansicht_typen[] = "doppel"; + $ansichten = array(); + foreach ($ansicht_kategorien as $ansicht_kategorie => $ansicht_kategorie_bezeichnung) { + if ($params->get('kategorie_' . $ansicht_kategorie_bezeichnung) == "an") { + // TODO: Prüfen, ob Spieler in dieser Einstufung vorhanden sind + + foreach ($ansicht_typen as $ansicht_typ) { + if (empty($kategorieFilter)) { + $query = "SELECT IF(EXISTS(SELECT geschlecht," + . "\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 FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0"; + } else { + $query = "SELECT IF(EXISTS(SELECT geschlecht," + . "\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 FROM #__sportsmanager_spieler" + . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_verein AS kategorie_verein USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = #__sportsmanager_verein.verein_id" + . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $kategorieFilter . "AND NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0" + . "\n GROUP BY spieler_id"; + } + if (!empty($ansicht_kategorie)) + $query .= "\n HAVING " . ($ansicht_kategorie == "M" || $ansicht_kategorie == "W" ? "geschlecht" : "kategorie") . " = '" . $db->escape($ansicht_kategorie) . "'"; + $query .= "), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n == 0) + continue; + + $ansichten[] = array($ansicht_typ, $ansicht_kategorie); + } + } + } + + $vorherige_ansicht = NULL; + $naechste_ansicht = NULL; + if (count($ansichten) > 1 && !empty($typ)) { + foreach ($ansichten as $index => $ansicht) { + if ($ansicht[0] == $typ && $ansicht[1] == $kategorie) { + if ($index != 0) + $vorherige_ansicht = $ansichten[$index - 1]; + if (isset($ansichten[$index + 1])) + $naechste_ansicht = $ansichten[$index + 1]; + $ansichten = array(array($typ, $kategorie)); + break; + } + } + } + $allein_angezeigt = count($ansichten) == 1; + + if (empty($vorherige_ansicht) && empty($naechste_ansicht)) + HTML_sportsmanager::eloRanglistenHeader($params->get('titel'), $params->get('beschreibung')); + foreach ($ansichten as $ansicht) { + $ansicht_typ = $ansicht[0]; + $ansicht_kategorie = $ansicht[1]; + if (empty($kategorieFilter)) { + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, aktueller_verein_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele," + . "\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 FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0"; + } else { + $query = "SELECT #__sportsmanager_spieler.spieler_id, vorname, nachname, geschlecht, pseudonym, bild_ausblenden, aktueller_verein_id, elo_einzel, elo_doppel, elo_einzel_spiele, elo_doppel_spiele," + . "\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 FROM #__sportsmanager_spieler" + . "\n INNER JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n INNER JOIN #__sportsmanager_verein AS kategorie_verein USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = #__sportsmanager_verein.verein_id" + . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $kategorieFilter . "AND NOT ISNULL(aktueller_verein_id) AND " . ($ansicht_typ != "doppel" ? "elo_einzel" : "elo_doppel") . " <> 0" + . "\n GROUP BY spieler_id"; + } + if (!empty($ansicht_kategorie)) + $query .= "\n HAVING " . ($ansicht_kategorie == "M" || $ansicht_kategorie == "W" ? "geschlecht" : "kategorie") . " = '" . $db->escape($ansicht_kategorie) . "'"; + $query .= "\n ORDER BY " . ($ansicht_typ != "doppel" ? "elo_einzel DESC, nachname, vorname" : "elo_doppel DESC, nachname, vorname"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + if (!empty($spieler)) + HTML_sportsmanager::eloRangliste($spieler, $ansicht_typ, $ansicht_kategorie, $allein_angezeigt, $vorherige_ansicht, $naechste_ansicht, $details_anzeigen); + } + + if (empty($vorherige_ansicht) && empty($naechste_ansicht)) + administrationFooter(); +} + +function individualwettbewerbe(): void +{ + $db = getDatabase(); + global $params; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $ansicht = $params->get('ansicht'); + $id = $jInput->get('id', 0, 'INT'); + $kategorieFilter = kategorieFilter("AND kategorie IN"); + $details_anzeigen = currentUserHasAccessToDetails(); + + $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_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE #__sportsmanager_individualwettbewerb_spiel.individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id" . $kategorieFilter . ")" + . "\n GROUP BY saison_id" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + 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_individualwettbewerb" + . "\n WHERE status > 0" . $kategorieFilter . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") . " AND EXISTS(SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE #__sportsmanager_individualwettbewerb_spiel.individualwettbewerb_id = #__sportsmanager_individualwettbewerb.individualwettbewerb_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + if ($ansicht != "spiele") { + $vorheriger_individualwettbewerb_id = 0; + $naechster_individualwettbewerb_id = 0; + if (count($individualwettbewerbe) > 1 && !empty($id)) { + foreach ($individualwettbewerbe as $index => $individualwettbewerb) { + if ($individualwettbewerb->individualwettbewerb_id == $id) { + if ($index != 0) + $vorheriger_individualwettbewerb_id = $individualwettbewerbe[$index - 1]->individualwettbewerb_id; + if (isset($individualwettbewerbe[$index + 1])) + $naechster_individualwettbewerb_id = $individualwettbewerbe[$index + 1]->individualwettbewerb_id; + $individualwettbewerbe = array($individualwettbewerb); break; } } - if (!$gefunden) - $filter_saison_id = $saisons[0]->saison_id; } + $allein_angezeigt = count($individualwettbewerbe) == 1; - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); + if (empty($vorheriger_individualwettbewerb_id) && empty($naechster_individualwettbewerb_id)) + HTML_sportsmanager::individualwettbewerbHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - HTML_sportsmanager::ranglistenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - - foreach ($ranglisten as $rangliste) { - $query = "SELECT spieler_id, platz, punkte, vorname, nachname, geschlecht, aktueller_verein_id, bild_ausblenden" - . "\n FROM #__sportsmanager_rangliste_punkte" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE rangliste_id = $rangliste->rangliste_id AND platz <= 3" - . "\n ORDER BY platz, nachname, vorname"; + foreach ($individualwettbewerbe as $individualwettbewerb) { + $individualwettbewerbid = $individualwettbewerb->individualwettbewerb_id; + $query = "SELECT #__sportsmanager_individualwettbewerb_spiel.*," + . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.geschlecht AS heim_spieler_1_geschlecht, theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden," + . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.geschlecht AS heim_spieler_2_geschlecht, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden," + . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.geschlecht AS gast_spieler_1_geschlecht, tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden," + . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.geschlecht AS gast_spieler_2_geschlecht, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" + . "\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"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $rangliste_punkte = $db->loadObjectList(); + $spiele = $db->loadObjectList(); - $turnierdisziplinen = array(); - $punkte = array(); - $platzierung = array(); + if ($individualwettbewerb->tabellenwertung) { + $query = "SELECT spieler_id, nachname, vorname, geschlecht, vereinsname, aktueller_verein_id, platz, bild_ausblenden" + . "\n FROM #__sportsmanager_individualwettbewerb_platzierung" + . "\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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $platzierungen = $db->loadObjectList(); + } else { + $platzierungen = NULL; + } - HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, FALSE, FALSE, $turnierdisziplinen, $punkte, $platzierung, $filter_saison_id, 0, 0, $details_anzeigen); + HTML_sportsmanager::individualwettbewerb($individualwettbewerb, $spiele, $platzierungen, $allein_angezeigt, $vorheriger_individualwettbewerb_id, $naechster_individualwettbewerb_id, $details_anzeigen); } + } else { + HTML_sportsmanager::individualwettbewerbHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); - /* - if ($filter_saison_id == $aktuelles_jahr) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE status > 0 AND erster_tag > CURDATE() OR letzter_tag < CURDATE()" . kategorieFilter("AND kategorie IN"); - if ($filter_saison_id != NULL) - $query .= " AND (ISNULL(erster_tag) OR (ISNULL(letzter_tag) AND YEAR(erster_tag) = $filter_saison_id) OR (NOT ISNULL(letzter_tag) AND YEAR(erster_tag) <= $filter_saison_id AND YEAR(letzter_tag) >= $filter_saison_id))"; - $query .= "\n ORDER BY reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $ranglisten_uebrige = $db->loadObjectList(); + $individualwettbewerbe_bezeichnungen = array(); + foreach ($individualwettbewerbe as $individualwettbewerb) + $individualwettbewerbe_bezeichnungen[$individualwettbewerb->individualwettbewerb_id] = $individualwettbewerb->bezeichnung; - if (count($ranglisten_uebrige) > 0) - HTML_sportsmanager::ranglistenListe($ranglisten_uebrige); - } s - */ + $query = "SELECT #__sportsmanager_individualwettbewerb_spiel.*," + . " theim1.vorname AS heim_spieler_1_vorname, theim1.nachname AS heim_spieler_1_nachname, theim1.bild_ausblenden AS heim_spieler_1_bild_ausblenden," + . " theim2.vorname AS heim_spieler_2_vorname, theim2.nachname AS heim_spieler_2_nachname, theim2.bild_ausblenden AS heim_spieler_2_bild_ausblenden," + . " tgast1.vorname AS gast_spieler_1_vorname, tgast1.nachname AS gast_spieler_1_nachname, tgast1.bild_ausblenden AS gast_spieler_1_bild_ausblenden," + . " tgast2.vorname AS gast_spieler_2_vorname, tgast2.nachname AS gast_spieler_2_nachname, tgast2.bild_ausblenden AS gast_spieler_2_bild_ausblenden" + . "\n FROM #__sportsmanager_individualwettbewerb" + . "\n INNER JOIN #__sportsmanager_individualwettbewerb_spiel USING (individualwettbewerb_id)" + . "\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 status > 0" . $kategorieFilter . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY zeitpunkt DESC, individualwettbewerb_spiel_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); - administrationFooter(); + HTML_sportsmanager::individualwettbewerbSpiele($individualwettbewerbe_bezeichnungen, $spiele, $details_anzeigen); } - function rangliste() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; + if ($ansicht != "spiele" || (empty($vorheriger_individualwettbewerb_id) && empty($naechster_individualwettbewerb_id))) + administrationFooter(); +} - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) - die("Missing id!"); +function ranglisten(): void +{ + $db = getDatabase(); + global $params; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $details_anzeigen = currentUserHasAccessToDetails(); + $details_anzeigen = currentUserHasAccessToDetails(); + $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'); - $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_rangliste" + . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") + . "\n GROUP BY saison_id" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - if (count($saisons) != 0) { - $gefunden = FALSE; - foreach ($saisons as $saison) { - if ($saison->saison_id == $filter_saison_id) { - $gefunden = TRUE; - break; - } + 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 (!$gefunden) + $filter_saison_id = $saisons[0]->saison_id; + } - // Rangliste ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE rangliste_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $rangliste = $rows[0]; + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") + . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); - // Ranglistenpunkte ermitteln + HTML_sportsmanager::ranglistenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); + + foreach ($ranglisten as $rangliste) { $query = "SELECT spieler_id, platz, punkte, vorname, nachname, geschlecht, aktueller_verein_id, bild_ausblenden" . "\n FROM #__sportsmanager_rangliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE rangliste_id = $rangliste->rangliste_id" + . "\n WHERE rangliste_id = $rangliste->rangliste_id AND platz <= 3" . "\n ORDER BY platz, nachname, vorname"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } $rangliste_punkte = $db->loadObjectList(); - // Vorherige und nächste Rangliste ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE status > 0" . kategorieFilter("AND kategorie IN") . ($filter_saison_id != 0 ? " AND saison_id = $filter_saison_id" : "") - . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $n = count($rows); - $vorherige_rangliste_id = 0; - $naechste_rangliste_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->rangliste_id == $id) { - if ($i > 0) - $vorherige_rangliste_id = $rows[$i - 1]->rangliste_id; - if ($i + 1 < $n) - $naechste_rangliste_id = $rows[$i + 1]->rangliste_id; - break; - } - } - - // Anzeigen -// HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, TRUE, $rangliste_detailliert, $turnierdisziplinen, $punkte, $platzierung, $vereine_anzeigen, $filter_saison_id, $vorherige_rangliste_id, $naechste_rangliste_id, $details_anzeigen ); - HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, TRUE, $filter_saison_id, $vorherige_rangliste_id, $naechste_rangliste_id, $details_anzeigen); + HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, FALSE, $details_anzeigen); } + administrationFooter(); +} - function ranglistenpunkte() { - $db = & getDatabase(); - $jinput = JFactory::getApplication()->input; +function rangliste(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $rangliste_id = $jinput->get('rangliste_id', 0, 'INT'); - if ($rangliste_id == 0) - die("Missing id!"); - $spieler_id = $jinput->get('spieler_id', 0, 'INT'); - if ($spieler_id == 0) - die("Missing id!"); + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) + die("Missing id!"); - $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'); + $details_anzeigen = currentUserHasAccessToDetails(); - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_rangliste" - . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" - . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN") - . "\n GROUP BY saison_id" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + // Rangliste ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE rangliste_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id)" . kategorieFilter("AND kategorie IN"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $rangliste = $rows[0]; - 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; - } + // Ranglistenpunkte ermitteln + $query = "SELECT spieler_id, platz, punkte, vorname, nachname, geschlecht, aktueller_verein_id, bild_ausblenden" + . "\n FROM #__sportsmanager_rangliste_punkte" + . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE rangliste_id = $rangliste->rangliste_id" + . "\n ORDER BY platz, nachname, vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rangliste_punkte = $db->loadObjectList(); - // Rangliste ermitteln - $query = "SELECT *," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id) AS teilnehmer" - . "\n FROM #__sportsmanager_rangliste" - . "\n WHERE rangliste_id = $rangliste_id AND status > 0" . kategorieFilter("AND kategorie IN"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $rangliste = $rows[0]; + // Anzeigen + HTML_sportsmanager::rangliste($rangliste, $rangliste_punkte, TRUE, $details_anzeigen); +} - // Ranglistenpunkte ermitteln - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste_punkte" - . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE rangliste_id = $rangliste_id AND spieler_id = $spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) - die("Wrong id!"); - $rangliste_punkte = $rows[0]; +function ranglistenpunkte(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $query = "SELECT *" - . ", (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_rangliste_turnierdisziplin_punkte.turnierdisziplin_id AND rundenstufe = 0) AS teilnehmer" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" + $rangliste_id = $jInput->get('rangliste_id', 0, 'INT'); + if ($rangliste_id == 0) + die("Missing id!"); + $spieler_id = $jInput->get('spieler_id', 0, 'INT'); + if ($spieler_id == 0) + die("Missing id!"); + + // Rangliste ermitteln + $query = "SELECT *," + . "\n (SELECT COUNT(*) FROM #__sportsmanager_rangliste_punkte WHERE #__sportsmanager_rangliste_punkte.rangliste_id = #__sportsmanager_rangliste.rangliste_id) AS teilnehmer" + . "\n FROM #__sportsmanager_rangliste" + . "\n WHERE rangliste_id = $rangliste_id AND status > 0" . kategorieFilter("AND kategorie IN"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $rangliste = $rows[0]; + + // Ranglistenpunkte ermitteln + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste_punkte" + . "\n INNER JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n WHERE rangliste_id = $rangliste_id AND spieler_id = $spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) + die("Wrong id!"); + $rangliste_punkte = $rows[0]; + + $query = "SELECT *" + . ", (SELECT COUNT(*) FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_rangliste_turnierdisziplin_punkte.turnierdisziplin_id AND rundenstufe = 0) AS teilnehmer" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" + . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" + . "\n INNER JOIN #__sportsmanager_turnier USING (turnier_id)" + . "\n WHERE rangliste_id = $rangliste_id AND spieler_id = $spieler_id AND #__sportsmanager_turnierdisziplin.status > 0 " + . "\n ORDER BY beginn DESC, turnier_id DESC, turnierdisziplin_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $turnierdisziplinen = $db->loadObjectList(); + + $streichergebnisse = array(); + if ($rangliste->streichergebnisse != 0) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n INNER JOIN #__sportsmanager_turnier USING (turnier_id)" - . "\n WHERE rangliste_id = $rangliste_id AND spieler_id = $spieler_id AND #__sportsmanager_turnierdisziplin.status > 0 " - . "\n ORDER BY beginn DESC, turnier_id DESC, turnierdisziplin_id DESC"; + . "\n WHERE rangliste_id = $rangliste_id AND #__sportsmanager_turnierdisziplin.status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_rangliste_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"; $db->setQuery($query); - if (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $turnierdisziplinen = $db->loadObjectList(); + $anzahl_turnierdisziplinen = $db->loadResult(); - $streichergebnisse = array(); - if ($rangliste->streichergebnisse != 0) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n INNER JOIN #__sportsmanager_turnierdisziplin USING (turnierdisziplin_id)" - . "\n WHERE rangliste_id = $rangliste_id AND #__sportsmanager_turnierdisziplin.status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_turniermeldung WHERE #__sportsmanager_turniermeldung.turnierdisziplin_id = #__sportsmanager_rangliste_turnierdisziplin.turnierdisziplin_id AND rundenstufe = 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahl_turnierdisziplinen = $db->loadResult(); - ; + $spieler_anzahl_turnierdisziplinen = count($turnierdisziplinen); + $bewertete_turnierdisziplinen = $rangliste->streichergebnisse < 0 ? min($anzahl_turnierdisziplinen, abs($rangliste->streichergebnisse)) : ($anzahl_turnierdisziplinen - floor($anzahl_turnierdisziplinen * min(max($rangliste->streichergebnisse, 0), 100) / 100)); - $spieler_anzahl_turnierdisziplinen = count($turnierdisziplinen); - $bewertete_turnierdisziplinen = $rangliste->streichergebnisse < 0 ? min($anzahl_turnierdisziplinen, abs($rangliste->streichergebnisse)) : ($anzahl_turnierdisziplinen - floor($anzahl_turnierdisziplinen * min(max($rangliste->streichergebnisse, 0), 100) / 100)); + if ($spieler_anzahl_turnierdisziplinen > $bewertete_turnierdisziplinen) { + foreach ($turnierdisziplinen as $turnierdisziplin) + $streichergebnisse[$turnierdisziplin->turnierdisziplin_id] = $turnierdisziplin->punkte; - if ($spieler_anzahl_turnierdisziplinen > $bewertete_turnierdisziplinen) { - foreach ($turnierdisziplinen as $turnierdisziplin) - $streichergebnisse[$turnierdisziplin->turnierdisziplin_id] = $turnierdisziplin->punkte; + arsort($streichergebnisse, SORT_NUMERIC); + $streichergebnisse_iterieren = $streichergebnisse; - arsort($streichergebnisse, SORT_NUMERIC); - $streichergebnisse_iterieren = $streichergebnisse; - - $anzahl_gewertet = 0; - foreach ($streichergebnisse_iterieren as $turnierdisziplin_id => $punkte) { - unset($streichergebnisse[$turnierdisziplin_id]); - $anzahl_gewertet++; - if ($anzahl_gewertet == $bewertete_turnierdisziplinen) - break; - } + $anzahl_gewertet = 0; + foreach ($streichergebnisse_iterieren as $turnierdisziplin_id => $punkte) { + unset($streichergebnisse[$turnierdisziplin_id]); + $anzahl_gewertet++; + if ($anzahl_gewertet == $bewertete_turnierdisziplinen) + break; } } - - // Vorherige und nächste Ranglistenpunkte ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_rangliste_punkte" - . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" - . "\n WHERE rangliste_id = $rangliste_id" - . "\n ORDER BY platz, nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $n = count($rows); - $vorherige_spieler_id = 0; - $naechste_spieler_id = 0; - for ($i = 0; $i < $n; $i++) { - if ($rows[$i]->spieler_id == $spieler_id) { - if ($i > 0) { - $vorherige_spieler_id = $rows[$i - 1]->spieler_id; - } - if ($i + 1 < $n) { - $naechste_spieler_id = $rows[$i + 1]->spieler_id; - } - break; - } - } - - HTML_sportsmanager::ranglistenpunkte($rangliste, $rangliste_punkte, $turnierdisziplinen, $streichergebnisse, $vorherige_spieler_id, $naechste_spieler_id); } - ?> + + HTML_sportsmanager::ranglistenpunkte($rangliste, $rangliste_punkte, $turnierdisziplinen, $streichergebnisse); +} + +?> diff --git a/src/structure/components/com_sportsmanager/controller.php b/src/structure/components/com_sportsmanager/src/Controller/DisplayController.php similarity index 60% rename from src/structure/components/com_sportsmanager/controller.php rename to src/structure/components/com_sportsmanager/src/Controller/DisplayController.php index 34630d8..1d8341d 100644 --- a/src/structure/components/com_sportsmanager/controller.php +++ b/src/structure/components/com_sportsmanager/src/Controller/DisplayController.php @@ -1,57 +1,46 @@ -input->getCmd('view', 'default'); - $viewFormat = $document->getType(); - $view = $this->getView($viewName, $viewFormat); - $view->document = $document; - - $app = JFactory::getApplication(); - $input = $app->input; - $layout = $input->get('layout', '', 'STRING'); - - //var_dump($layout); - $view->display($layout); - } -} - +GNU/GPL2.0.0Verwaltung von Spielern und Vereinen in Mannschafts- und Individualwettbewerben + Dtfb\Component\com_sportsmanager index.html admin.php api.php - controller.php - database.php sportsmanager.php mathparser.php tools.php js/jquery.min.js - images + database + images models + src util views @@ -35,10 +36,10 @@ access.xml - sportsmanager.php - controller.php index.html - views + services + src + tmpl language/en-GB/en-GB.com_sportsmanager.ini From 31a3eeef1284b6155143fbf5a6129cd6f03f96fe Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 14:24:02 +0100 Subject: [PATCH 2/9] chore: replace database.php by splitting into init and update --- .../com_sportsmanager/database/init.php | 120 + .../{database.php => database/update.php} | 10528 ++++++++-------- 2 files changed, 5403 insertions(+), 5245 deletions(-) create mode 100644 src/structure/components/com_sportsmanager/database/init.php rename src/structure/components/com_sportsmanager/{database.php => database/update.php} (79%) diff --git a/src/structure/components/com_sportsmanager/database/init.php b/src/structure/components/com_sportsmanager/database/init.php new file mode 100644 index 0000000..77b57b1 --- /dev/null +++ b/src/structure/components/com_sportsmanager/database/init.php @@ -0,0 +1,120 @@ +get(DatabaseInterface::class); + + $query = "SELECT * FROM #__sportsmanager_einstellungen"; + $sportsmanager_database_local->setQuery($query); + if (!$sportsmanager_database_local->execute()) { + die($sportsmanager_database_local->stderr(true)); + } + $rows = $sportsmanager_database_local->loadObjectList(); + + $database_driver = "mysql"; + $database_host = ""; + $database_user = ""; + $database_password = ""; + $database_database = ""; + $database_prefix = "jos_"; + $joomla_path = ""; + $joomla_url = ""; + foreach ($rows as $row) { + $name = mb_strtolower($row->name); + if ($name == "database_driver") + $database_driver = $row->wert; + else if ($name == "database_host") + $database_host = $row->wert; + else if ($name == "database_user") + $database_user = $row->wert; + else if ($name == "database_password") + $database_password = $row->wert; + else if ($name == "database_database") + $database_database = $row->wert; + else if ($name == "database_prefix") + $database_prefix = $row->wert; + else if ($name == "joomla_path") + $joomla_path = $row->wert; + else if ($name == "joomla_url") + $joomla_url = $row->wert; + } + + if (!empty($database_driver) && !empty($database_host) && !empty($database_user) && !empty($database_database) && !empty($database_prefix) && !empty($joomla_path) && !empty($joomla_url)) { + $option = array(); //prevent problems + + $option['driver'] = $database_driver; // Database driver name + $option['host'] = $database_host; // Database host name + $option['user'] = $database_user; // User for database authentication + $option['password'] = $database_password; // Password for database authentication + $option['database'] = $database_database; // Database name + $option['prefix'] = $database_prefix; // Database prefix (may be empty) + + $sportsmanager_database_external = match ($option['driver']) { + 'mysql' => new MysqlDriver($option), + 'mysqli' => new MysqliDriver($option), + default => NULL, + }; + + if ($sportsmanager_database_external === NULL) { + echo "" . Text::_('COM_SPORTSMANAGER_CONNECTION_EXTERNAL_DB_FAILURE') . "

"; + } else { + $query = "SELECT wert FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'"; + $sportsmanager_database_external->setQuery($query); + try { + if (!$sportsmanager_database_external->execute()) { + echo "" . Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_TABLES') . "

"; + $sportsmanager_database_external = NULL; + } else { + $db_version = $sportsmanager_database_external->loadResult(); + if ($db_version < 38) { + echo "" . Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_VERSION') . "

"; + $sportsmanager_database_external = NULL; + } else if (!is_dir($joomla_path . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR . "sportsmanager")) { + echo "" . Text::_('COM_SPORTSMANAGER_EXTERNAL_NO_IMAGES_FOLDER') . " '/images/sportsmanager'!

"; + $sportsmanager_database_external = NULL; + } else { + $sportsmanager_joomla_path = $joomla_path; + $sportsmanager_joomla_url = $joomla_url; + } + } + } catch (Exception $e) { + error_log($e->getMessage()); + } + } + } +} + +function isExternalDatabase(): bool +{ + global $sportsmanager_database_external; + return $sportsmanager_database_external != NULL; +} + +function getDatabase($forceLocalDB = FALSE) +{ + global $sportsmanager_database_local; + global $sportsmanager_database_external; + if ($forceLocalDB || $sportsmanager_database_external == NULL) + $db = $sportsmanager_database_local; + else + $db = $sportsmanager_database_external; + + return $db; +} diff --git a/src/structure/components/com_sportsmanager/database.php b/src/structure/components/com_sportsmanager/database/update.php similarity index 79% rename from src/structure/components/com_sportsmanager/database.php rename to src/structure/components/com_sportsmanager/database/update.php index 22490d0..b826884 100644 --- a/src/structure/components/com_sportsmanager/database.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -1,5245 +1,5283 @@ -setQuery( $query ); - if (!$result = $sportsmanager_database_local->execute()) { die($sportsmanager_database_local->stderr(true)); } - $rows = $sportsmanager_database_local->loadObjectList(); - - $database_driver = "mysql"; - $database_host = ""; - $database_user = ""; - $database_password = ""; - $database_database = ""; - $database_prefix = "jos_"; - $joomla_path = ""; - $joomla_url = ""; - foreach ($rows as $row) { - $name = mb_strtolower($row->name); - if ($name == "database_driver") - $database_driver = $row->wert; - else if ($name == "database_host") - $database_host = $row->wert; - else if ($name == "database_user") - $database_user = $row->wert; - else if ($name == "database_password") - $database_password = $row->wert; - else if ($name == "database_database") - $database_database = $row->wert; - else if ($name == "database_prefix") - $database_prefix = $row->wert; - else if ($name == "joomla_path") - $joomla_path = $row->wert; - else if ($name == "joomla_url") - $joomla_url = $row->wert; - } - - if (!empty($database_driver) && !empty($database_host) && !empty($database_user) && !empty($database_database) && !empty($database_prefix) && !empty($joomla_path) && !empty($joomla_url)) { - $option = array(); //prevent problems - - $option['driver'] = $database_driver; // Database driver name - $option['host'] = $database_host; // Database host name - $option['user'] = $database_user; // User for database authentication - $option['password'] = $database_password; // Password for database authentication - $option['database'] = $database_database; // Database name - $option['prefix'] = $database_prefix; // Database prefix (may be empty) - - $sportsmanager_database_external = JDatabase::getInstance( $option ); - if (JError::isError($sportsmanager_database_external)) { - echo "".JText::_( 'COM_SPORTSMANAGER_CONNECTION_EXTERNAL_DB_FAILURE' )."

"; - $sportsmanager_database_external = NULL; - // jexit(htmlentities_utf8('Database Error: ' . $sportsmanager_database_external->toString())); - } else { - $query = "SELECT wert FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'"; - $sportsmanager_database_external->setQuery($query); - if (!$result = $sportsmanager_database_external->execute()) { - echo "".JText::_( 'COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_TABLES' )."

"; - $sportsmanager_database_external = NULL; - } else { - $db_version = $sportsmanager_database_external->loadResult(); - if ($db_version < 38) { - echo "".JText::_( 'COM_SPORTSMANAGER_EXTERNAL_DB_NO_SM_VERSION' )."

"; - $sportsmanager_database_external = NULL; - } else if (!is_dir($joomla_path.DIRECTORY_SEPARATOR."images".DIRECTORY_SEPARATOR."sportsmanager")) { - echo "".JText::_( 'COM_SPORTSMANAGER_EXTERNAL_NO_IMAGES_FOLDER' )." '/images/sportsmanager'!

"; - $sportsmanager_database_external = NULL; - } else { - $sportsmanager_joomla_path = $joomla_path; - $sportsmanager_joomla_url = $joomla_url; - } - } - } - } -} - -function isExternalDatabase() { - global $sportsmanager_database_external; - return $sportsmanager_database_external != NULL; -} - -function getDatabase($forceLocalDB = FALSE) { - global $sportsmanager_database_local; - global $sportsmanager_database_external; - if ($forceLocalDB || $sportsmanager_database_external == NULL) - $db = $sportsmanager_database_local; - else - $db = $sportsmanager_database_external; - - return $db; -} - -// Datenbank aktualisieren -function updateDatabase() -{ - $db = getDatabase(); - - - $elo_aktualisieren = false; - $rangliste_aktualisieren = false; - $wann_gespielt_aktualisieren = false; - $teamstatistik_aktualisieren = false; - $aktueller_verein_aktualisieren = false; - $spielerstatistik_aktualisieren = false; - $termin_aktionen_email_setzen = false; - - $query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "tsleague_basis' || name = '" . $db->getPrefix() . "tsleague_einstellungen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) { - $query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "tsleague_basis'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) > 0) { - $query = "SELECT * FROM #__tsleague_basis"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die(JText::_( 'COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY' )); - - $datenbank_version = $rows[0]->datenbank_version; - - if ($datenbank_version < 1) { - $query = "ALTER TABLE #__tsleague_spieler DROP verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 2) { - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_system` (" - . "\n `rangliste_system_id` int(11) NOT NULL auto_increment," - . "\n `systembezeichnung` varchar(50)," - . "\n PRIMARY KEY (`rangliste_system_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_system_punkte` (" - . "\n `rangliste_system_punkte_id` int(11) NOT NULL auto_increment," - . "\n `system_id` int(11) NOT NULL," - . "\n `platz_min` smallint," - . "\n `platz_max` smallint," - . "\n `teilnehmer_min` smallint," - . "\n `teilnehmer_max` smallint," - . "\n `punkte` smallint," - . "\n PRIMARY KEY (`rangliste_system_punkte_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste` (" - . "\n `rangliste_id` int(11) NOT NULL auto_increment," - . "\n `system_id` int(11) NOT NULL," - . "\n `bezeichnung` varchar(50)," - . "\n `erster_tag` date NOT NULL," - . "\n `letzter_tag` date NOT NULL," - . "\n `status` tinyint NOT NULL default '0'," - . "\n PRIMARY KEY (`rangliste_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_turnierdisziplin` (" - . "\n `rangliste_turnierdisziplin_id` int(11) NOT NULL auto_increment," - . "\n `rangliste_id` int(11) NOT NULL," - . "\n `turnierdisziplin_id` int(11) NOT NULL," - . "\n PRIMARY KEY (`rangliste_turnierdisziplin_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS #__tsleague_rangliste_punkte (" - . "\n `rangliste_punkte_id` int(11) NOT NULL auto_increment," - . "\n `spieler_id` int(11) NOT NULL," - . "\n `punkte` smallint," - . "\n `teilnahmen` smallint," - . "\n PRIMARY KEY (`rangliste_punkte_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 3) { - $query = "ALTER TABLE #__tsleague_teamspiel_modus ADD spielpunkte_wertung tinyint NOT NULL default '0' AFTER punktetyp"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamspiel_modus ADD begegnungspunkte_wertung tinyint NOT NULL default '0' AFTER spielpunkte_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 3"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 4) { - $query = "ALTER TABLE #__tsleague_rangliste_system ADD streichergebnisse tinyint AFTER rangliste_system_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_punkte ADD rangliste_id int(11) NOT NULL AFTER rangliste_punkte_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 4"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 5) { - $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE einzel_liga_elo elo_einzel smallint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE doppel_liga_elo elo_doppel smallint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE einzel_liga_spiele spiele_einzel smallint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE doppel_liga_spiele spiele_doppel smallint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo DROP einzel_turnier_elo"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo DROP doppel_turnier_elo"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo DROP einzel_turnier_spiele"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler_elo DROP doppel_turnier_spiele"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierdisziplin CHANGE gewichtung elo_wertung tinyint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung ADD elo_wertung tinyint AFTER letzter_tag"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_veranstaltung" - . "\n SET elo_wertung = 1" - . "\n WHERE status = 2 OR status = 3"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_turnierdisziplin" - . "\n SET elo_wertung = 1" - . "\n WHERE elo_wertung != 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 5"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $elo_aktualisieren = true; - } - - if ($datenbank_version < 6) { - - $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD kommentar varchar(512) AFTER vorschlagendes_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD kommentar varchar(512) AFTER vorschlagendes_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 6"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 7) { - - $query = "ALTER TABLE #__tsleague_team CHANGE verein_id verein_id int(11)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_team" - . "\n SET verein_id = NULL" - . "\n WHERE verein_id = 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein DROP veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 7"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 8) { - $query = "ALTER TABLE #__tsleague_veranstalter ADD veranstalterkuerzel varchar(20) AFTER veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein ADD veranstalter_id int(11) AFTER verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 8"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 9) { - $query = "SELECT spieler_id, geschlecht" - . "\n FROM #__tsleague_spieler"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - $query = "ALTER TABLE #__tsleague_spieler CHANGE geschlecht geschlecht char(1)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach ($spieler as $s) { - $query = "UPDATE #__tsleague_spieler" - . "\n SET geschlecht = " . ($s->geschlecht == 0 ? "'M'" : "'W'") - . "\n WHERE spieler_id = $s->spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 9"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 10) { - $query = "ALTER TABLE #__tsleague_spieler ADD zuletzt_gespielt date AFTER spielernr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 10"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $wann_gespielt_aktualisieren = true; - $elo_aktualisieren = true; - } - - if ($datenbank_version < 11) { - $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD voranmeldung datetime AFTER elo_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS #__tsleague_turniervoranmeldung (" - . "\n `turniervoranmeldung_id` int(11) NOT NULL auto_increment," - . "\n `turnierdisziplin_id` int(11) NOT NULL," - . "\n `spieler_1_id` int(11) NOT NULL," - . "\n `spieler_2_id` int(11)," - . "\n PRIMARY KEY (`turniervoranmeldung_id`)" - . "\n ) TYPE=MyISAM;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 11"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 12) { - $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE kommentar kommentar varchar(255)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis CHANGE kommentar kommentar varchar(255)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 12"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 13) { - $query = "ALTER TABLE #__tsleague_verein ADD vereinssitz varchar(30) AFTER vereinsname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD landeskennung varchar(10) AFTER ort"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstalter ADD kennzahl varchar(10) AFTER veranstalterkuerzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 13"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 14) { - $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD vorgeschlagen datetime AFTER kommentar"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorgeschlagen datetime AFTER kommentar"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorschlaege_heim smallint default 0 AFTER vorgeschlagen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorschlag_gast_erlauben smallint default 1 AFTER vorschlaege_heim"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung ADD reihenfolge tinyint default 1 AFTER status"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 14"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 15) { - $query = "ALTER TABLE #__tsleague_spieler ADD ausgetreten tinyint AFTER zuletzt_gespielt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 15"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $elo_aktualisieren = true; - } - - if ($datenbank_version < 16) { - - $query = "ALTER TABLE #__tsleague_spieler CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_vereinsansprechpartner CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstalter CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamspiel_modus CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_team CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamansprechpartner CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnier CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierdisziplin CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turniermeldung CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_system CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 16"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 17) { - $query = "ALTER TABLE #__tsleague_veranstalter DROP kennzahl"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler DROP url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 17"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 18) { - $query = "ALTER TABLE #__tsleague_spieler_elo ADD UNIQUE (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein ADD KEY (veranstalter_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_verein ADD KEY (spieler_id), ADD KEY (verein_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_vereinsansprechpartner ADD KEY (verein_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_berechtigt_fuer_verein ADD KEY (berechtigt_user_id), ADD KEY (berechtigt_verein_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung ADD KEY (veranstalter_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_team ADD KEY (verein_id), ADD KEY (veranstaltung_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamansprechpartner ADD KEY (team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_team ADD KEY (spieler_id), ADD KEY (team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung ADD KEY (heim_team_id), ADD KEY (gast_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (begegnung_id), ADD KEY (vorschlagendes_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamspiel ADD KEY (begegnung_id), ADD KEY (heim_spieler_1_id), ADD KEY (heim_spieler_2_id), ADD KEY (gast_spieler_1_id), ADD KEY (gast_spieler_2_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD KEY (begegnung_id), ADD KEY (vorschlagendes_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_berechtigt_fuer_team ADD KEY (berechtigt_user_id), ADD KEY (berechtigt_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_moderator ADD KEY (moderator_user_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnier ADD KEY (veranstalter_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD KEY (turnier_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turniervoranmeldung ADD KEY (turnierdisziplin_id), ADD KEY (spieler_1_id), ADD KEY (spieler_2_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turniermeldung ADD KEY (turnierdisziplin_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turniermeldung_spieler ADD KEY (turniermeldung_id), ADD KEY (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierspiel ADD KEY (turnierdisziplin_id), ADD KEY (heim_meldung_id), ADD KEY (gast_meldung_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_system_punkte ADD KEY (system_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste ADD KEY (system_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD KEY (rangliste_id), ADD KEY (turnierdisziplin_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_punkte ADD KEY (rangliste_id), ADD KEY (spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 18"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 19) { - $query = "ALTER TABLE #__tsleague_verein CHANGE vereinsname vereinsname varchar(50) NOT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_basis" - . "\n SET datenbank_version = 19"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "DROP TABLE IF EXISTS `#__tsleague_einstellungen`;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_einstellungen` (" - . "\n `name` char(30)," - . "\n `wert` char(255)," - . "\n PRIMARY KEY (`name`)" - . "\n ) TYPE=MyISAM COLLATE=latin1_german1_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD lizenznr varchar(20) AFTER spielernr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__tsleague_einstellungen" - . "\n SET name = 'datenbank_version', wert = '20'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__tsleague_einstellungen" - . "\n SET name = 'basis_spielernr', wert = ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DROP TABLE #__tsleague_basis"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__tsleague_einstellungen WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die(JText::_( 'COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY' )); - - $datenbank_version = intval($rows[0]->wert); - - if ($datenbank_version < 21) { - $query = "ALTER TABLE #__tsleague_veranstalter ADD kategorie tinyint default '1' AFTER veranstalterkuerzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung ADD kategorie tinyint default '1' AFTER reihenfolge"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '21'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 22) { - $query = "ALTER TABLE #__tsleague_veranstaltung ADD tabellenwertung tinyint NOT NULL default '0' AFTER modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_veranstaltung ADD unterteilung tinyint NOT NULL default '0' AFTER tabellenwertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_veranstaltung" - . "\n LEFT JOIN #__tsleague_teamspiel_modus ON teamspiel_modus_id = modus_id" - . "\n SET tabellenwertung = IF(begegnungspunkte_wertung = 0, 1, 2)" - . "\n WHERE status = 2"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_veranstaltung" - . "\n SET unterteilung = IF(status = 3, 1, 2)" - . "\n WHERE status = 3 OR status = 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_veranstaltung" - . "\n SET status = 1" - . "\n WHERE status > 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamspiel_modus DROP begegnungspunkte_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_teamspiel_modus DROP ergebnistyp"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung DROP heim_begegnungspunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung DROP gast_begegnungspunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '22'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 23) { - if (!JFolder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'spieler')) { - if (!JFolder::move(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'players', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'spieler')) - die(JText::_( 'COM_SPORTSMANAGER_RENAME_PLAYER_DIRECTORY_FAILED' )); - } - - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'mannschaften', 0777)) - die(JText::_( 'COM_SPORTSMANAGER_CREATE_TEAM_DIRECTORY_FAILED' )); - - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'vereine', 0777)) - die(JText::_( 'COM_SPORTSMANAGER_CREATE_CLUB_DIRECTORY_FAILED' )); - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '23'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 24) { - $query = "ALTER TABLE #__tsleague_rangliste ADD reihenfolge tinyint default '1' AFTER status"; - - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste ADD kategorie tinyint default '1' AFTER reihenfolge"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD wertung tinyint default '1' AFTER turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '24'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 25) { - $query = "ALTER TABLE #__tsleague_turnierspiel CHANGE runde runde smallint"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '25'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 26) { - $query = "UPDATE #__tsleague_veranstaltung" - . "\n SET tabellenwertung = IF(tabellenwertung = 1, 2, 5)" - . "\n WHERE tabellenwertung > 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '26'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 27) { - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD aktion tinyint default '0' AFTER begegnung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE neuer_zeitpunkt zeitpunkt datetime"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD user_id int(11) AFTER zeitpunkt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP INDEX vorschlagendes_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE vorschlagendes_team_id team_id int(11)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD verantwortlich_team_id int(11) AFTER team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (user_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (verantwortlich_team_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP vorschlaege_heim"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP vorschlag_gast_erlauben"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE vorgeschlagen eingetragen datetime"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_begegnung_verlegen, #__tsleague_begegnung" - . "\n SET verantwortlich_team_id = IF(team_id = heim_team_id, gast_team_id, heim_team_id)" - . "\n WHERE #__tsleague_begegnung_verlegen.begegnung_id = #__tsleague_begegnung.begegnung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '27'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 28) { - $query = "ALTER TABLE #__tsleague_spieler DROP ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD ausgetreten bool default '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_spieler" - . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler DROP austritt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein ADD ausgetreten bool default '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_verein" - . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_verein DROP austritt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_verein ADD ausgetreten bool default '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_mitglied_von_verein" - . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_verein DROP austritt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_team ADD ausgetreten bool default '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_mitglied_von_team" - . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_mitglied_von_team DROP austritt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '28'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 29) { - $query = "ALTER TABLE #__tsleague_rangliste ADD streichergebnisse tinyint AFTER system_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_rangliste, #__tsleague_rangliste_system" - . "\n SET #__tsleague_rangliste.streichergebnisse = #__tsleague_rangliste_system.streichergebnisse WHERE system_id = rangliste_system_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_system DROP streichergebnisse"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD system_id int(11) AFTER turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD KEY (system_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '29'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 30) { - $query = "ALTER TABLE #__tsleague_turniermeldung_spieler CHANGE spieler_id spieler_id int(11)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_turniermeldung_spieler_name` (" - . "\n `turniermeldung_spieler_name_id` int(11) NOT NULL auto_increment," - . "\n `turniermeldung_spieler_id` int(11) NOT NULL," - . "\n `nachname` varchar(30)," - . "\n `vorname` varchar(30) NOT NULL," - . "\n PRIMARY KEY (`turniermeldung_spieler_name_id`)," - . "\n KEY (`turniermeldung_spieler_id`)" - . "\n ) TYPE=MyISAM COLLATE=latin1_german1_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD reihenfolge tinyint default '1' AFTER voranmeldung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD kategorie tinyint default '1' AFTER reihenfolge"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '30'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 31) { - $query = "ALTER TABLE #__tsleague_spieler ADD elo_einzel smallint AFTER pseudonym"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD elo_einzel_spiele smallint AFTER elo_einzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD elo_doppel smallint AFTER elo_einzel_spiele"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD elo_doppel_spiele smallint AFTER elo_doppel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_spieler" - . "\n INNER JOIN #__tsleague_spieler_elo USING (spieler_id)" - . "\n SET #__tsleague_spieler.elo_einzel = #__tsleague_spieler_elo.elo_einzel," - . "\n #__tsleague_spieler.elo_einzel_spiele = #__tsleague_spieler_elo.spiele_doppel," - . "\n #__tsleague_spieler.elo_doppel = #__tsleague_spieler_elo.elo_doppel," - . "\n #__tsleague_spieler.elo_doppel_spiele = #__tsleague_spieler_elo.spiele_einzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DROP TABLE #__tsleague_spieler_elo;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '31'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 32) { - $query = "ALTER TABLE #__tsleague_spieler ADD INDEX (nachname, vorname)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_spieler ADD INDEX (vorname, nachname)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '32'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 33) { - $query = "ALTER TABLE #__tsleague_turniermeldung DROP name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '33'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 34) { - $query = "ALTER TABLE #__tsleague_turnier ADD turnierort varchar(50) AFTER turnierbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '34'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 35) { - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_spieler_import` ( " - . "\n `spieler_import_id` int(11) NOT NULL auto_increment, " - . "\n `session_id` varchar(200) NOT NULL," - . "\n `nachname` varchar(30)," - . "\n `vorname` varchar(30)," - . "\n `geschlecht` char(1)," - . "\n `geburtsdatum` date," - . "\n `strasse` varchar(30)," - . "\n `plz` varchar(6)," - . "\n `ort` varchar(30)," - . "\n `landeskennung` varchar(10)," - . "\n `telefon` varchar(25)," - . "\n `mobil` varchar(25)," - . "\n `email` varchar(40)," - . "\n `spielernr` varchar(20)," - . "\n `lizenznr` varchar(20)," - . "\n `ausgetreten` bool default '0'," - . "\n `pseudonym` varchar(30)," - . "\n `vereinsname` varchar(50)," - . "\n `vereinssitz` varchar(30)," - . "\n `veranstalterbezeichnung` varchar(50)," - . "\n PRIMARY KEY (`spieler_import_id`)," - . "\n KEY (`session_id`)" - . "\n ) TYPE=MyISAM COLLATE=latin1_german1_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '35'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 36) { - $query = "ALTER TABLE #__tsleague_turniermeldung_spieler_name ADD vereinsname varchar(50) AFTER vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '36'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 37) { - $query = "ALTER TABLE #__tsleague_spieler ADD geburtsjahr smallint unsigned AFTER geburtsdatum"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_spieler" - . "\n SET geburtsjahr = YEAR(geburtsdatum)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '37'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 38) { - $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_kategorie` (" - . "\n `kategorie_id` int(11) NOT NULL auto_increment," - . "\n `typ` tinyint," - . "\n `nummer` tinyint," - . "\n `bezeichnung` varchar(50)," - . "\n PRIMARY KEY (`kategorie_id`)" - . "\n ) TYPE=MyISAM COLLATE=latin1_german1_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '38'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 39) { - $query = "ALTER TABLE #__tsleague_turnierdisziplin DROP kuerzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '39'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 40) { - $query = "DELETE FROM #__tsleague_mitglied_von_verein WHERE spieler_id = 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '40'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 41) { - $query = "ALTER TABLE #__tsleague_spieler_import ADD geburtsjahr smallint unsigned AFTER geburtsdatum"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__tsleague_team CHANGE teamname teamname varchar(50) NOT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '41'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 42) { - $query = "ALTER TABLE #__tsleague_team ADD zusatzpunkte smallint AFTER tischtyp"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '42'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 43) { - $query = "ALTER TABLE #__tsleague_turnierspiel ADD rundenstufe tinyint AFTER runde"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_turnierspiel" - . "\n SET rundenstufe = IF(runde > 0, 1, -1), runde = ABS(runde)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '43'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 44) { - $query = "UPDATE #__tsleague_begegnung" - . "\n SET spieltag = spieltag + 99 - (2 * (spieltag % 100))" - . "\n WHERE spieltag >= 20000"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__tsleague_einstellungen" - . "\n SET wert = '44'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "DROP TABLE IF EXISTS `#__sportsmanager_begegnung`" - . ", `#__sportsmanager_begegnung_verlegen`" - . ", `#__sportsmanager_berechtigt_fuer_team`" - . ", `#__sportsmanager_berechtigt_fuer_turnier`" - . ", `#__sportsmanager_berechtigt_fuer_verein`" - . ", `#__sportsmanager_berechtigt_fuer_veranstalter`" - . ", `#__sportsmanager_berechtigt_fuer_veranstaltung`" - . ", `#__sportsmanager_einstellungen`" - . ", `#__sportsmanager_berechnung`" - . ", `#__sportsmanager_einstufung`" - . ", `#__sportsmanager_einstufung_rangliste`" - . ", `#__sportsmanager_elo_cache`" - . ", `#__sportsmanager_kategorie`" - . ", `#__sportsmanager_mitglied_von_team`" - . ", `#__sportsmanager_mitglied_von_verein`" - . ", `#__sportsmanager_moderator`" - . ", `#__sportsmanager_moderator_zugriff`" - . ", `#__sportsmanager_rangliste`" - . ", `#__sportsmanager_rangliste_punkte`" - . ", `#__sportsmanager_rangliste_system`" - . ", `#__sportsmanager_rangliste_system_punkte`" - . ", `#__sportsmanager_rangliste_turnierdisziplin`" - . ", `#__sportsmanager_spieler`" - . ", `#__sportsmanager_spieler_import`" - . ", `#__sportsmanager_team`" - . ", `#__sportsmanager_teamansprechpartner`" - . ", `#__sportsmanager_teamspiel`" - . ", `#__sportsmanager_teamspiel_modus`" - . ", `#__sportsmanager_termin`" - . ", `#__sportsmanager_termin_symbol`" - . ", `#__sportsmanager_termin_symbolanzeige`" - . ", `#__sportsmanager_termin_aktion`" - . ", `#__sportsmanager_termin_zusatz`" - . ", `#__sportsmanager_termin_bezeichnungszusatz`" - . ", `#__sportsmanager_termin_bezeichnung`" - . ", `#__sportsmanager_termin_bundesland`" - . ", `#__sportsmanager_termin_land`" - . ", `#__sportsmanager_turnier`" - . ", `#__sportsmanager_turnierdisziplin`" - . ", `#__sportsmanager_turniermeldung`" - . ", `#__sportsmanager_turniermeldung_spieler`" - . ", `#__sportsmanager_turniermeldung_spieler_name`" - . ", `#__sportsmanager_turnierspiel`" - . ", `#__sportsmanager_turniervoranmeldung`" - . ", `#__sportsmanager_unbestaetigtes_ergebnis`" - . ", `#__sportsmanager_veranstalter`" - . ", `#__sportsmanager_veranstaltung`" - . ", `#__sportsmanager_verein`" - . ", `#__sportsmanager_vereinsansprechpartner`;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "\n RENAME TABLE #__tsleague_begegnung TO #__sportsmanager_begegnung" - . ", #__tsleague_begegnung_verlegen TO #__sportsmanager_begegnung_verlegen" - . ", #__tsleague_berechtigt_fuer_team TO #__sportsmanager_berechtigt_fuer_team" - . ", #__tsleague_berechtigt_fuer_verein TO #__sportsmanager_berechtigt_fuer_verein" - . ", #__tsleague_einstellungen TO #__sportsmanager_einstellungen" - . ", #__tsleague_kategorie TO #__sportsmanager_kategorie" - . ", #__tsleague_mitglied_von_team TO #__sportsmanager_mitglied_von_team" - . ", #__tsleague_mitglied_von_verein TO #__sportsmanager_mitglied_von_verein" - . ", #__tsleague_moderator TO #__sportsmanager_moderator" - . ", #__tsleague_rangliste TO #__sportsmanager_rangliste" - . ", #__tsleague_rangliste_punkte TO #__sportsmanager_rangliste_punkte" - . ", #__tsleague_rangliste_system TO #__sportsmanager_rangliste_system" - . ", #__tsleague_rangliste_system_punkte TO #__sportsmanager_rangliste_system_punkte" - . ", #__tsleague_rangliste_turnierdisziplin TO #__sportsmanager_rangliste_turnierdisziplin" - . ", #__tsleague_spieler TO #__sportsmanager_spieler" - . ", #__tsleague_spieler_import TO #__sportsmanager_spieler_import" - . ", #__tsleague_team TO #__sportsmanager_team" - . ", #__tsleague_teamansprechpartner TO #__sportsmanager_teamansprechpartner" - . ", #__tsleague_teamspiel TO #__sportsmanager_teamspiel" - . ", #__tsleague_teamspiel_modus TO #__sportsmanager_teamspiel_modus" - . ", #__tsleague_turnier TO #__sportsmanager_turnier" - . ", #__tsleague_turnierdisziplin TO #__sportsmanager_turnierdisziplin" - . ", #__tsleague_turniermeldung TO #__sportsmanager_turniermeldung" - . ", #__tsleague_turniermeldung_spieler TO #__sportsmanager_turniermeldung_spieler" - . ", #__tsleague_turniermeldung_spieler_name TO #__sportsmanager_turniermeldung_spieler_name" - . ", #__tsleague_turnierspiel TO #__sportsmanager_turnierspiel" - . ", #__tsleague_turniervoranmeldung TO #__sportsmanager_turniervoranmeldung" - . ", #__tsleague_unbestaetigtes_ergebnis TO #__sportsmanager_unbestaetigtes_ergebnis" - . ", #__tsleague_veranstalter TO #__sportsmanager_veranstalter" - . ", #__tsleague_veranstaltung TO #__sportsmanager_veranstaltung" - . ", #__tsleague_verein TO #__sportsmanager_verein" - . ", #__tsleague_vereinsansprechpartner TO #__sportsmanager_vereinsansprechpartner;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '1'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - if (!JFolder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager') && JFolder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague')) { - if (!JFolder::move(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager')) - die(JText::_( 'COM_SPORTSMANAGER_RENAME_PLAYER_FAILED' )); - } - - } - - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die(JText::_( 'COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY' )); - - $datenbank_version = intval($rows[0]->wert); - - if ($datenbank_version < 2) { - $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(60)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '2'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 3) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_wertung tinyint(4) DEFAULT '1' AFTER pseudonym"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '3'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 4) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste` (" - . "\n `bestenliste_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` varchar(50) COLLATE latin1_german1_ci DEFAULT NULL," - . "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `typ` tinyint(4) DEFAULT NULL," - . "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00'," - . "\n `letzter_tag` date NOT NULL DEFAULT '0000-00-00'," - . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `reihenfolge` tinyint(4) DEFAULT '1'," - . "\n `kategorie` tinyint(4) DEFAULT '1'," - . "\n PRIMARY KEY (`bestenliste_id`)" - . "\n ) ENGINE=MyISAM ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_punkte` (" - . "\n `bestenliste_punkte_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," - . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," - . "\n `siege` smallint(6) DEFAULT NULL," - . "\n `unentschieden` smallint(6) DEFAULT NULL," - . "\n `niederlagen` smallint(6) DEFAULT NULL," - . "\n `spielpunkte_gewonnen` smallint(6) DEFAULT NULL," - . "\n `spielpunkte_verloren` smallint(6) DEFAULT NULL," - . "\n `punkte_gewonnen` smallint(6) DEFAULT NULL," - . "\n `punkte_verloren` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`bestenliste_punkte_id`)," - . "\n KEY `bestenliste_id` (`bestenliste_id`)," - . "\n KEY `spieler_id` (`spieler_id`)" - . "\n) ENGINE=MyISAM ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_veranstaltung` (" - . "\n `bestenliste_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," - . "\n `veranstaltung_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`bestenliste_veranstaltung_id`)," - . "\n KEY `bestenliste_id` (`bestenliste_id`)," - . "\n KEY `veranstaltung_id` (`veranstaltung_id`)" - . "\n) ENGINE=MyISAM ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '4'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 5) { - $query = "ALTER TABLE #__sportsmanager_rangliste_punkte ADD platz smallint(6) DEFAULT NULL AFTER spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '5'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $rangliste_aktualisieren = true; - } - - if ($datenbank_version < 6) { - $query = "ALTER TABLE #__sportsmanager_team ADD platz smallint(6) DEFAULT NULL AFTER heimspielort_anschrift_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD gesamtpunkte smallint(6) DEFAULT NULL AFTER platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD begegnungspunkte smallint(6) DEFAULT NULL AFTER gesamtpunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD siege smallint(6) DEFAULT NULL AFTER begegnungspunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD unentschieden smallint(6) DEFAULT NULL AFTER siege"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD niederlagen smallint(6) DEFAULT NULL AFTER unentschieden"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_gewonnen smallint(6) DEFAULT NULL AFTER niederlagen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_verloren smallint(6) DEFAULT NULL AFTER spielpunkte_gewonnen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_differenz smallint(6) DEFAULT NULL AFTER spielpunkte_verloren"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_quotient float(8,2) DEFAULT NULL AFTER spielpunkte_differenz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD punkte_gewonnen smallint(6) DEFAULT NULL AFTER spielpunkte_quotient"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD punkte_verloren smallint(6) DEFAULT NULL AFTER punkte_gewonnen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD punkte_differenz smallint(6) DEFAULT NULL AFTER punkte_verloren"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD punkte_quotient float(8,2) DEFAULT NULL AFTER punkte_differenz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '6'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $teamstatistik_aktualisieren = true; - } - - if ($datenbank_version < 7) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstalter` (" - . "\n `berechtigt_fuer_veranstalter_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," - . "\n `berechtigt_veranstalter_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`berechtigt_fuer_veranstalter_id`)," - . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," - . "\n KEY `berechtigt_veranstalter_id` (`berechtigt_veranstalter_id`)" - . "\n) ENGINE=MyISAM ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '7'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 8) { - $query = "ALTER TABLE #__sportsmanager_moderator ADD zugriff smallint(6) DEFAULT 1 AFTER moderator_user_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '8'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 9) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD wertungskategorie tinyint(4) DEFAULT 0 AFTER streichergebnisse"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '9'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 10) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD aktueller_verein_id int(11) DEFAULT NULL AFTER pseudonym"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '10'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $aktueller_verein_aktualisieren = true; - } - - if ($datenbank_version < 11) { - $query = "ALTER TABLE #__sportsmanager_spieler DROP ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '11'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 12) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD status tinyint(4) NOT NULL DEFAULT 0 AFTER modus"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel_modus" - . "\n SET status = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_system ADD status tinyint(4) NOT NULL DEFAULT 0 AFTER systembezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste_system" - . "\n SET status = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '12'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 13) { - $query = "ALTER TABLE #__sportsmanager_spieler_import ADD spielernr_alt varchar(20) COLLATE latin1_german1_ci DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '13'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $aktueller_verein_aktualisieren = true; - } - - if ($datenbank_version < 14) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD punkte_sieg tinyint(4) NOT NULL DEFAULT 0 AFTER punktetyp"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '14'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $aktueller_verein_aktualisieren = true; - } - - if ($datenbank_version < 15) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_saison` (" - . "\n `saison_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `saisonbezeichnung` varchar(30) COLLATE latin1_german1_ci DEFAULT NULL," - . "\n PRIMARY KEY (`saison_id`)" - . "\n) ENGINE=MyISAM ;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste ADD KEY (saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER bestenliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste ADD KEY (saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnier ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER turnier_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnier ADD KEY (saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD KEY (saison_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - //// Saisons ergänzen - $query = "SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_veranstaltung WHERE NOT ISNULL(erster_tag)" - . "\n UNION" - . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_turnier WHERE NOT ISNULL(erster_tag)" - . "\n UNION" - . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_rangliste WHERE NOT ISNULL(erster_tag)" - . "\n UNION" - . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_bestenliste WHERE NOT ISNULL(erster_tag)" - . "\n GROUP BY jahr" - . "\n ORDER BY jahr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $jahre = $db->loadObjectList(); - - if (count($jahre) > 0) { - foreach ($jahre as $jahr) { - $query = "INSERT #__sportsmanager_saison" - . "\n SET saisonbezeichnung = '$jahr->jahr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } else { - $query = "INSERT #__sportsmanager_saison" - . "\n SET saisonbezeichnung = 'Keine'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC LIMIT 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - $aktuelle_saison_id = $saisons[0]->saison_id; - // Saisons den Veranstaltungen zuordnen - $query = "UPDATE #__sportsmanager_veranstaltung" - . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" - . "\n SET #__sportsmanager_veranstaltung.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_turnier" - . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" - . "\n SET #__sportsmanager_turnier.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" - . "\n SET #__sportsmanager_rangliste.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_bestenliste" - . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" - . "\n SET #__sportsmanager_bestenliste.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '15'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 16) { - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder', 0777)) - die(JText::_('COM_SPORTSMANAGER_CREATE_TEAM_MEMBERS_DIRECTORY_FAILED')); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '16'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $aktueller_verein_aktualisieren = true; - } - - if ($datenbank_version < 17) { - $query = "ALTER TABLE #__sportsmanager_unbestaetigtes_ergebnis ADD zwischenergebnis bool default '0' AFTER vorschlagendes_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '17'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 18) { - $query = "ALTER TABLE #__sportsmanager_einstellungen CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_saison CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_begegnung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_begegnung_verlegen CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_veranstalter CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_kategorie CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_mitglied_von_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_mitglied_von_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_moderator CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_system CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_system_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_veranstaltung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler_import CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamansprechpartner CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamspiel CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnier CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniermeldung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniermeldung_spieler CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniermeldung_spieler_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnierspiel CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniervoranmeldung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_unbestaetigtes_ergebnis CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstalter CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstaltung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_vereinsansprechpartner CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '18'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 19) { - $query = "ALTER TABLE #__sportsmanager_verein ADD vereinssitz_ortsteil varchar(30) DEFAULT NULL AFTER vereinssitz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein ADD url varchar(150) DEFAULT NULL AFTER vereinssitz_ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein ADD beschreibung varchar(500) DEFAULT NULL AFTER url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_spielort` (" - . "\n `spielort_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `name` varchar(40) DEFAULT NULL," - . "\n `strasse` varchar(30) DEFAULT NULL," - . "\n `plz` varchar(10) DEFAULT NULL," - . "\n `ortsname` varchar(30) DEFAULT NULL," - . "\n `ortsteil` varchar(30) DEFAULT NULL," - . "\n `url` varchar(150) DEFAULT NULL," - . "\n `beschreibung` varchar(500) DEFAULT NULL," - . "\n `status` tinyint(1) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`spielort_id`)" - . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD heimspielort_id int(11) DEFAULT NULL AFTER heimspiel_uhrzeit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD KEY (heimspielort_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '19'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $rangliste_aktualisieren = true; - } - - if ($datenbank_version < 20) { - $query = "INSERT #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_ausblenden', wert = '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '20'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 21) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD bild_ausblenden tinyint(1) DEFAULT '0' AFTER pseudonym"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_spielerdaten', wert = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '21'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 22) { - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD voranmeldungen_rangliste_id int(11) DEFAULT NULL AFTER voranmeldung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD voranmeldungen_reihenfolge tinyint(4) DEFAULT '0' AFTER voranmeldungen_rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD KEY (voranmeldungen_rangliste_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '22'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 23) { - $query = "SELECT #__sportsmanager_team.*" - . "\n FROM #__sportsmanager_team" - . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" - . "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)" - . "\n ORDER BY heimspielort_name, heimspielort_anschrift"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $heimspielort_name = ""; - $heimspielort_strasse = ""; - $heimspielort_plz = ""; - $heimspielort_ortsname = ""; - $heimspielort_beschreibung = ""; - $heimspielort_url = ""; - $spielort_id = 0; - foreach ($teams as $team) { - $name = $team->heimspielort_name; - $strasse = $team->heimspielort_anschrift; - if (empty($name) && empty($strasse)) - continue; - $plz_pos = false; - for ($i = 0; $i < strlen($strasse) - 5; $i++) { - if ($strasse[$i + 5] != " " || !ctype_digit(substr($strasse, $i, 5))) - continue; - $plz_pos = $i; - break; - } - if ($plz_pos === false) { - $plz = $ortsname = $beschreibung = ""; - } else { - $plz = substr($strasse, $plz_pos, 5); - $ortsname = trim(substr($strasse, $plz_pos + 6)); - $beschreibung_pos = strpos($ortsname, ","); - if ($beschreibung_pos === false) { - $beschreibung = ""; - } else { - $beschreibung = trim(substr($ortsname, $beschreibung_pos + 1)); - $ortsname = trim(substr($ortsname, 0, $beschreibung_pos)); - } - $strasse = trim(substr($strasse, 0, $plz_pos)); - $strasse_len = strlen($strasse); - if ($strasse_len > 0 && $strasse[$strasse_len - 1] == ",") - $strasse = trim(substr($strasse, 0, $strasse_len - 1)); - } - - if ($heimspielort_name != $name || $heimspielort_strasse != $strasse || $heimspielort_plz != $plz || $heimspielort_ortsname != $ortsname) { - $heimspielort_name = $name; - $heimspielort_strasse = $strasse; - $heimspielort_plz = $plz; - $heimspielort_ortsname = $ortsname; - $heimspielort_beschreibung = $beschreibung; - $heimspielort_url = $team->heimspielort_url; - $query = "INSERT INTO #__sportsmanager_spielort (name, strasse, plz, ortsname, ortsteil, url, beschreibung, status)" - . "\n VALUES ('" . $db->getEscaped($heimspielort_name) . "', '" . $db->getEscaped($heimspielort_strasse) . "', '" . $db->getEscaped($heimspielort_plz) . "', '" . $db->getEscaped($heimspielort_ortsname) . "', '', '" . $db->getEscaped($heimspielort_url) . "', '" . $db->getEscaped($heimspielort_beschreibung) . "', 1);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielort_id = $db->insertid(); - } - $query = "UPDATE #__sportsmanager_team" - . "\n SET heimspielort_id = '$spielort_id'" - . "\n WHERE team_id = '$team->team_id'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_anschrift"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_anschrift_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_anschrift"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_anschrift_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '23'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 24) { - $query = "ALTER TABLE #__sportsmanager_begegnung ADD spielort_id int(11) DEFAULT NULL AFTER gast_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '24'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 25) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD system_wertung tinyint(4) DEFAULT '0' AFTER system_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin ADD system_wertung tinyint(4) DEFAULT '0' AFTER system_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '25'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 26) { - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '26'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $rangliste_aktualisieren = true; - $spielerstatistik_aktualisieren = true; - } - - if ($datenbank_version < 27) { - $query = "ALTER TABLE #__sportsmanager_team ADD teamgruppe_id int(11) DEFAULT NULL AFTER team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '27'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 28) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verteiler` (" - . "\n `verteiler_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` TINYTEXT NOT NULL," - . "\n `verteiler` TEXT NOT NULL," - . "\n PRIMARY KEY (`verteiler_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '28'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 29) { - $query = "ALTER TABLE #__sportsmanager_team ADD KEY (teamgruppe_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_begegnung ADD KEY (spielort_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD verschieberegel_id int(11) DEFAULT NULL AFTER modus_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD KEY (verschieberegel_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verschieberegel` (" - . "\n `verschieberegel_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` varchar(50) NOT NULL DEFAULT ''," - . "\n `initial_ohne_termin` tinyint(1) NOT NULL DEFAULT '0'," - . "\n `keine_gegenvorschlaege` tinyint(1) NOT NULL DEFAULT '0'," - . "\n `vorlaufzeit_tage` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `termine_minimal` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `termine_maximal` tinyint(4) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`verschieberegel_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal)" - . "\n VALUES ('Beliebig', '0', '0', '0', '1', '3');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verschieberegel_id = $db->insertid(); - - $query = "UPDATE #__sportsmanager_veranstaltung" - . "\n SET verschieberegel_id = $verschieberegel_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '29'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 30) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung` (" - . "\n `rechnung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` TINYTEXT NOT NULL," - . "\n `notiz` TEXT NOT NULL," - . "\n `saison_id` int(11) NOT NULL DEFAULT '0'," - . "\n `verein_id` int(11) DEFAULT NULL," - . "\n `veranstalter_id` int(11) DEFAULT NULL," - . "\n PRIMARY KEY (`rechnung_id`)," - . "\n KEY `saison_id` (`saison_id`)," - . "\n KEY `verein_id` (`verein_id`)," - . "\n KEY `veranstalter_id` (`veranstalter_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung_spieler` (" - . "\n `rechnung_spieler_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `rechnung_id` int(11) NOT NULL," - . "\n `spieler_id` int(11) NOT NULL," - . "\n PRIMARY KEY (`rechnung_spieler_id`)," - . "\n KEY `rechnung_id` (`rechnung_id`)," - . "\n KEY `spieler_id` (`spieler_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '30'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 31) { - $query = "RENAME TABLE #__sportsmanager_begegnung_verlegen TO #__sportsmanager_begegnung_historie;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_begegnung_historie CHANGE begegnung_verlegen_id begegnung_historie_id int(11) NOT NULL AUTO_INCREMENT"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '31'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 32) { - $query = "ALTER TABLE #__sportsmanager_verschieberegel ADD ablehnen tinyint(1) NOT NULL DEFAULT '0' AFTER termine_maximal"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '32'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 33) { - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET rundenstufe = '10'" - . "\n WHERE rundenstufe = '-1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD rundenstufe tinyint(4) DEFAULT NULL AFTER turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET rundenstufe = '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_turniervoranmeldung" - . "\n ORDER BY turnierdisziplin_id"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$row->turnierdisziplin_id', '20', NULL);"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $id = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$id', '$row->spieler_1_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - if ($row->spieler_2_id != NULL) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$id', '$row->spieler_2_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - } - - $query = "DROP TABLE #__sportsmanager_turniervoranmeldung;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '33'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 34) { - $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD meldungsgruppe_id int(11) DEFAULT NULL AFTER turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD KEY (meldungsgruppe_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '34'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 35) { - $query = "ALTER TABLE #__sportsmanager_turnierspiel ADD ergebnis_detailliert tinytext DEFAULT NULL AFTER ergebnis"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '35'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 36) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnier_rundenstufe` (" - . "\n `turnier_rundenstufe_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `turnierdisziplin_id` int(11) NOT NULL DEFAULT '0'," - . "\n `rundenstufe` tinyint(4) DEFAULT NULL," - . "\n `bezeichnung` tinytext DEFAULT NULL," - . "\n `typ` tinyint(4) DEFAULT NULL," - . "\n `runden` tinyint(4) DEFAULT NULL," - . "\n `saetze` tinyint(4) DEFAULT NULL," - . "\n `tore` tinyint(4) DEFAULT NULL," - . "\n `tabellenwertung` tinyint(4) DEFAULT NULL," - . "\n `spielfelder` text DEFAULT NULL," - . "\n PRIMARY KEY (`turnier_rundenstufe_id`)," - . "\n KEY `turnierdisziplin_id` (`turnierdisziplin_id`)," - . "\n KEY `rundenstufe` (`rundenstufe`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '36'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 37) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (spielernr)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler DROP INDEX vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler DROP INDEX nachname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (nachname)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (vorname)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler_import ADD INDEX (spielernr)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '37'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 38) { - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin CHANGE wertung wertung float(4,2) DEFAULT '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '38'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 39) { - $query = "ALTER TABLE #__sportsmanager_team ADD pin varchar(20) DEFAULT NULL AFTER zusatzpunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '39'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 40) { - $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer, kategorie_id DESC"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - $typ = -1; - $nummer = -1; - foreach ($rows as $row) { - if ($typ != $row->typ || $nummer != $row->nummer) { - $typ = $row->typ; - $nummer = $row->nummer; - continue; - } - $query = "DELETE FROM #__sportsmanager_kategorie WHERE kategorie_id = $row->kategorie_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '40'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 41) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielpunkte_bedingung tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '41'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 42) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielernamen tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_bedingung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '42'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 43) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung` (" - . "\n `einstufung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` TINYTEXT NOT NULL," - . "\n `prioritaet` tinyint(4) DEFAULT NULL," - . "\n PRIMARY KEY (`einstufung_id`)," - . "\n KEY `prioritaet` (`prioritaet`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung_rangliste` (" - . "\n `einstufung_rangliste_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `einstufung_id` int(11) NOT NULL," - . "\n `rangliste_id` int(11) NOT NULL," - . "\n `platz_min` smallint(6) DEFAULT NULL," - . "\n `platz_max` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`einstufung_rangliste_id`)," - . "\n KEY `einstufung_id` (`einstufung_id`)," - . "\n KEY `rangliste_id` (`rangliste_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_id int(11) DEFAULT NULL AFTER bild_ausblenden"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '43'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 44) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD heimtausch tinyint(4) NOT NULL DEFAULT '0' AFTER spielernamen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '44'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 45) { - $query = "ALTER TABLE #__sportsmanager_einstufung ADD elo_min smallint(6) DEFAULT NULL AFTER prioritaet"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_einstufung ADD elo_max smallint(6) DEFAULT NULL AFTER elo_min"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '45'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 46) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_elo_cache` (" - . "\n `cache_datum` date NOT NULL," - . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," - . "\n `elo_einzel` smallint(6) DEFAULT NULL," - . "\n `elo_einzel_spiele` smallint(6) DEFAULT NULL," - . "\n `elo_doppel` smallint(6) DEFAULT NULL," - . "\n `elo_doppel_spiele` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`spieler_id`, `cache_datum`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '46'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $elo_aktualisieren = TRUE; - } - - if ($datenbank_version < 47) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD erstmals_gespielt date AFTER lizenznr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '47'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $wann_gespielt_aktualisieren = TRUE; - } - - if ($datenbank_version < 48) { - $query = "INSERT #__sportsmanager_einstellungen" - . "\n SET name = 'spielerliste_elo', wert = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '48'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 49) { - $query = "ALTER TABLE #__sportsmanager_einstufung ADD typ smallint(4) DEFAULT NULL AFTER bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstufung" - . "\n SET typ = '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "ALTER TABLE #__sportsmanager_spieler CHANGE einstufung_id einstufung_allgemein_id int(11) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_einzel_id int(11) DEFAULT NULL AFTER einstufung_allgemein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_doppel_id int(11) DEFAULT NULL AFTER einstufung_einzel_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '49'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 50) { - $query = "ALTER TABLE #__sportsmanager_rangliste_system ADD funktion TEXT DEFAULT NULL AFTER systembezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__sportsmanager_rangliste_system" - . "\n SET systembezeichnung = 'Klostermann/Wahle (1 Punkt für Letzten)'," - . "\n status = '1'," - //. "\n funktion = 'MAX(ROUND(m * ROUND((((POW(n * 10, 0.7) - 1) * (-LOG(p / n) * (1 - (p / n)))) / (-LOG(1 / n) * (1 - (1 / n)))) + 1)), 1)'"; - . "\n funktion = 'VERTEILUNG(POW(n * 10, 0.7), p, n, m)'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $system_id = $db->insertid(); - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '3'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '3'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__sportsmanager_rangliste_system" - . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 129)'," - . "\n status = '1'," - . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-20.45) * LN(p))))), 1)'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $system_id = $db->insertid(); - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '2'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '2'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "INSERT #__sportsmanager_rangliste_system" - . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 50)'," - . "\n status = '1'," - . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-25.3) * LN(p))))), 1)'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $system_id = $db->insertid(); - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" - . "\n SET system_id = '$system_id'" - . "\n WHERE system_wertung = '1'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste DROP system_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin DROP system_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '50'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $rangliste_aktualisieren = true; - } - - if ($datenbank_version < 51) { - $query = "ALTER TABLE #__sportsmanager_mitglied_von_verein ADD mitgliedsstatus tinyint(4) NOT NULL DEFAULT '0' AFTER verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET mitgliedsstatus = IF(ausgetreten, 0, 1)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '51'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 52) { - $query = "ALTER TABLE #__sportsmanager_spieler_import ADD mitgliedsstatus tinyint(4) NOT NULL AFTER veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_spieler_import" - . "\n SET mitgliedsstatus = 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $query = "ALTER TABLE #__sportsmanager_spieler_import DROP ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '52'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 53) { - $query = "ALTER TABLE #__sportsmanager_rechnung ADD mitgliedsstatus tinyint(4) NOT NULL AFTER veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rechnung" - . "\n SET mitgliedsstatus = 1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '53'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 54) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin` (" - . "\n `termin_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `termin_bezug_id` int(11) NOT NULL," - . "\n `erster_tag` date NOT NULL," - . "\n `letzter_tag` date NOT NULL," - . "\n `bezeichnung` text NOT NULL," - . "\n `beschreibung` text NOT NULL," - . "\n `ort` text NOT NULL," - . "\n `land` text NOT NULL," - . "\n `url` text NOT NULL," - . "\n `email` text NOT NULL," - . "\n `bestaetigt` tinyint(1) NOT NULL," - . "\n PRIMARY KEY (`termin_id`)," - . "\n KEY `termin_bezug_id` (`termin_bezug_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_aktion` (" - . "\n `termin_aktion_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `termin_id` int(11) NOT NULL," - . "\n `typ` tinyint(4) NOT NULL," - . "\n `kommentar` text NOT NULL," - . "\n `aktion_user_id` int(11) NOT NULL DEFAULT '0'," - . "\n `aktion_zeitpunkt` datetime NOT NULL," - . "\n `moderation_user_id` int(11) DEFAULT '0'," - . "\n `moderation_zeitpunkt` datetime," - . "\n `status` tinyint(4) NOT NULL," - . "\n PRIMARY KEY (`termin_aktion_id`)," - . "\n KEY `termin_id` (`termin_id`)," - . "\n KEY `typ` (`typ`)," - . "\n KEY `status` (`status`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnung` (" - . "\n `termin_bezeichnung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnung` text NOT NULL," - . "\n PRIMARY KEY (`termin_bezeichnung_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bundesland` (" - . "\n `termin_bundesland_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bundesland` text NOT NULL," - . "\n PRIMARY KEY (`termin_bundesland_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_land` (" - . "\n `termin_land_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `land` text NOT NULL," - . "\n PRIMARY KEY (`termin_land_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_zusatz` (" - . "\n `termin_zusatz_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `termin_id` int(11) NOT NULL," - . "\n `zusatz` text NOT NULL," - . "\n PRIMARY KEY (`termin_zusatz_id`)," - . "\n KEY `termin_id` (`termin_id`)," - . "\n KEY `ix_length_zusatz` (`zusatz`(16))" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnungszusatz` (" - . "\n `termin_bezeichnungszusatz_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bezeichnungszusatz` text NOT NULL," - . "\n `titel` text NOT NULL," - . "\n PRIMARY KEY (`termin_bezeichnungszusatz_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Challenger'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Meeting'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'ITSF Master'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'ITSF Pro'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'ITSF WCS'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '2. Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Frauen-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '2. Frauen-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Junioren-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '2. Junioren-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Senioren-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = '2. Senioren-Bundesliga'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Sonstiges'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnung" - . "\n SET bezeichnung = 'Deutsche Meisterschaft'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'OD'," - . "\n titel = 'Offenes Doppel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'OE'," - . "\n titel = 'Offenes Einzel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'HD'," - . "\n titel = 'Herren Doppel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'HE'," - . "\n titel = 'Herren Einzel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'DD'," - . "\n titel = 'Damen Doppel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'DE'," - . "\n titel = 'Damen Einzel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'JD'," - . "\n titel = 'Junioren Doppel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'JE'," - . "\n titel = 'Junioren Einzel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'SD'," - . "\n titel = 'Senioren Doppel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" - . "\n SET bezeichnungszusatz = 'SE'," - . "\n titel = 'Senioren Einzel'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Baden-Württemberg'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Bayern'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Berlin'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Bremen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Hamburg'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Hessen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Niedersachsen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Nordrhein-Westfalen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Rheinland-Pfalz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Saarland'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Sachsen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Sachsen-Anhalt'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Schleswig-Holstein'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Schweiz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "INSERT #__sportsmanager_termin_bundesland" - . "\n SET bundesland = 'Thüringen'"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '54'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 55) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_moderator_zugriff` (" - . "\n `moderator_zugriff_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `moderator_id` int(11) NOT NULL," - . "\n `zugriff` varchar(64) NOT NULL," - . "\n `zusatz` text," - . "\n PRIMARY KEY (`moderator_zugriff_id`)," - . "\n KEY `moderator_id` (`moderator_id`)," - . "\n KEY `zugriff` (`zugriff`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "SELECT * FROM #__sportsmanager_moderator"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $moderator_id = $row->moderator_id; - $moderator_zugriff = $row->zugriff; - $zugriffe_admin = array( - "moderatoren_aendern", - "basiseinstellungen_aendern", - "kategorien_aendern", - "organisationen_aendern", - "saisons_aendern", - "spieler_aendern", - "spieler_lesen_erweiterte_daten", - "termine_aendern", - "termine_benachrichtigung" - ); - $zugriffe_vereine = array( - "vereine_aendern" - ); - $zugriffe_wettbewerbe = array( - "mannschaftsspielplaene_aendern", - "verschieberegeln_aendern", - "spielorte_aendern", - "einstufungen_aendern", - "mannschaftswettbewerb_aendern", - "spielerstatistiken_aendern", - "turniere_aendern", - "ranglistenwertungen_aendern", - "ranglisten_aendern", - ); - $zugriffe_verteiler = array( - "verteiler_aendern" - ); - $zugriffe_mitgliederrechnungen = array( - "rechnungen_aendern" - ); - $zugriffe_sonstige = array( - "verteiler_lesen" - ); - - if ($moderator_zugriff == 1) - $zugriffe = array_merge($zugriffe_admin, $zugriffe_vereine, $zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); - else if ($moderator_zugriff == 2) - $zugriffe = array_merge($zugriffe_vereine, $zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); - else if ($moderator_zugriff == 3) - $zugriffe = array_merge($zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); - else if ($moderator_zugriff == 4) - $zugriffe = array_merge($zugriffe_verteiler, $zugriffe_sonstige); - else if ($moderator_zugriff == 5) - $zugriffe = array_merge($zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); - else if ($moderator_zugriff == 6) - $zugriffe = array_merge($zugriffe_mitgliederrechnungen, $zugriffe_sonstige); - else - $zugriffe = $zugriffe_sonstige; - - foreach ($zugriffe as $zugriff) { - $query = "INSERT #__sportsmanager_moderator_zugriff" - . "\n SET moderator_id = '$moderator_id'," - . "\n zugriff = '$zugriff'," - . "\n zusatz = ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - } - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '55'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 56) { - $query = "ALTER TABLE #__sportsmanager_moderator DROP zugriff"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '56'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 57) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_turnier` (" - . "\n `berechtigt_fuer_turnier_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," - . "\n `berechtigt_turnier_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`berechtigt_fuer_turnier_id`)," - . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," - . "\n KEY `berechtigt_turnier_id` (`berechtigt_turnier_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstaltung` (" - . "\n `berechtigt_fuer_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," - . "\n `berechtigt_veranstaltung_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`berechtigt_fuer_veranstaltung_id`)," - . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," - . "\n KEY `berechtigt_veranstaltung_id` (`berechtigt_veranstaltung_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '57'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 58) { - $query = "ALTER TABLE #__sportsmanager_spieler CHANGE email email varchar(64) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler_import CHANGE email email varchar(64) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamansprechpartner CHANGE email email varchar(64) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_vereinsansprechpartner CHANGE email email varchar(64) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '58'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 59) { - $query = "ALTER TABLE #__sportsmanager_einstellungen CHANGE name name char(64) NOT NULL DEFAULT ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '59'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 60) { - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine', 0777)) - die(JText::_( 'COM_SPORTSMANAGER_CREATE_DATES_FAILED' )); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '60'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 61) { - $query = "ALTER TABLE #__sportsmanager_termin_aktion DROP kommentar"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD aktion_kommentar text NOT NULL AFTER aktion_zeitpunkt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD moderation_kommentar text NOT NULL AFTER moderation_zeitpunkt"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '61'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 62) { - $pfad = JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'termine'.DIRECTORY_SEPARATOR.'.htaccess'; - $inhalt = "# Dokumente der Terminverwaltung\n" - . "Deny from all\n"; - if (file_put_contents($pfad, $inhalt) === FALSE) - die(JText::_( 'COM_SPORTSMANAGER_FILE_FAILED' )); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '62'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 63) { - // Fix für ausgebliebene Aktualisierung des Ausgetretenwertes beim manuellen Ändern des Mitgliedsstatus - $query = "UPDATE #__sportsmanager_mitglied_von_verein" - . "\n SET ausgetreten = IF(mitgliedsstatus = 0, TRUE, FALSE)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '63'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 64) { - $query = "ALTER TABLE #__sportsmanager_termin ADD ergebnisse_url text NOT NULL AFTER email"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '64'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 65) { - $query = "ALTER TABLE #__sportsmanager_spieler DROP elo_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '65'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 66) { - $query = "ALTER TABLE #__sportsmanager_termin ADD ergebnisse_live bool default '0' AFTER ergebnisse_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '66'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 67) { - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD kuerzel varchar(20) DEFAULT NULL AFTER disziplin"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '67'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 68) { - $query = "ALTER TABLE #__sportsmanager_turnier ADD kategorie tinyint(4) DEFAULT '1' AFTER letzter_tag"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_turnierdisziplin" - . "\n INNER JOIN #__sportsmanager_turnier" - . "\n SET #__sportsmanager_turnier.kategorie = #__sportsmanager_turnierdisziplin.kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_turnierdisziplin DROP kategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '68'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 69) { - $query = "ALTER TABLE #__sportsmanager_teamspiel ADD ergebnis_detailliert tinytext DEFAULT NULL AFTER teamspiel_gast_spielpunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '69'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 70) { - $query = "ALTER TABLE #__sportsmanager_turnier CHANGE turnierbezeichnung turnierbezeichnung varchar(64) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '70'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 71) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD doppel_teilwertung float(4,2) DEFAULT '1' AFTER wertungskategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '71'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 72) { - $query = "ALTER TABLE #__sportsmanager_rangliste DROP doppel_teilwertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin ADD doppel_teilwertung float(4,2) DEFAULT '1' AFTER wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '72'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 73) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb` (" - . "\n `individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `saison_id` int(11) NOT NULL DEFAULT '0'," - . "\n `veranstalter_id` int(11) NOT NULL DEFAULT '0'," - . "\n `bezeichnung` varchar(50) DEFAULT NULL," - . "\n `saetze` tinyint(4) DEFAULT NULL," - . "\n `tore` tinyint(4) DEFAULT NULL," - . "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `elo_wertung` tinyint(4) DEFAULT NULL," - . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," - . "\n `reihenfolge` tinyint(4) DEFAULT '1'," - . "\n `kategorie` tinyint(4) DEFAULT '1'," - . "\n PRIMARY KEY (`individualwettbewerb_id`)," - . "\n KEY `saison_id` (`saison_id`)," - . "\n KEY `veranstalter_id` (`veranstalter_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_spiel` (" - . "\n `individualwettbewerb_spiel_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," - . "\n `zeitpunkt` datetime DEFAULT NULL," - . "\n `heim_spieler_1_id` int(11) NOT NULL DEFAULT '0'," - . "\n `heim_spieler_2_id` int(11) DEFAULT NULL," - . "\n `gast_spieler_1_id` int(11) NOT NULL DEFAULT '0'," - . "\n `gast_spieler_2_id` int(11) DEFAULT NULL," - . "\n `ergebnis` tinyint(4) DEFAULT NULL," - . "\n `ergebnis_detailliert` tinytext DEFAULT NULL," - . "\n PRIMARY KEY (`individualwettbewerb_spiel_id`)," - . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," - . "\n KEY `zeitpunkt` (`zeitpunkt`)," - . "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`)," - . "\n KEY `heim_spieler_2_id` (`heim_spieler_2_id`)," - . "\n KEY `gast_spieler_1_id` (`gast_spieler_1_id`)," - . "\n KEY `gast_spieler_2_id` (`gast_spieler_2_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '73'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 74) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_individualwettbewerb` (" - . "\n `berechtigt_fuer_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," - . "\n `berechtigt_individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`berechtigt_fuer_individualwettbewerb_id`)," - . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," - . "\n KEY `berechtigt_individualwettbewerb_id` (`berechtigt_individualwettbewerb_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '74'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 75) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_platzierung` (" - . "\n `individualwettbewerb_platzierung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," - . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," - . "\n `platz` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`individualwettbewerb_platzierung_id`)," - . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," - . "\n KEY `platz` (`platz`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '75'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 76) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_ausgangsplatzierung` (" - . "\n `individualwettbewerb_ausgangsplatzierung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," - . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," - . "\n `platz` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`individualwettbewerb_ausgangsplatzierung_id`)," - . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," - . "\n KEY `platz` (`platz`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '76'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 77) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_individualwettbewerb` (" - . "\n `bestenliste_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," - . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`bestenliste_individualwettbewerb_id`)," - . "\n KEY `bestenliste_id` (`bestenliste_id`)," - . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD spieler_2_id int(11) DEFAULT NULL AFTER spieler_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD KEY (spieler_2_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_gewonnen smallint(6) DEFAULT NULL AFTER spielpunkte_verloren"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_unentschieden smallint(6) DEFAULT NULL AFTER saetze_gewonnen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_verloren smallint(6) DEFAULT NULL AFTER saetze_unentschieden"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '77'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 78) { - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CHANGE punkte_sieg punkte_sieg_einzel tinyint(4) NOT NULL DEFAULT '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD punkte_sieg_doppel tinyint(4) NOT NULL DEFAULT '0' AFTER punkte_sieg_einzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CHANGE spielpunkte_wertung spielpunkte_wertung_einzel tinyint(4) NOT NULL DEFAULT '0'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielpunkte_wertung_doppel tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_wertung_einzel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_teamspiel_modus" - . "\n SET punkte_sieg_doppel = punkte_sieg_einzel," - . "\n spielpunkte_wertung_doppel = spielpunkte_wertung_einzel;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '78'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $teamstatistik_aktualisieren = true; - } - - if ($datenbank_version < 79) { - $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD benachrichtigung_email text NOT NULL AFTER typ"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n SET benachrichtigung_email = '';"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '79'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $termin_aktionen_email_setzen = true; - } - - if ($datenbank_version < 80) { - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe', 0777)) - die(JText::_( 'COM_SPORTSMANAGER_CREATE_TEAM_COMPETITION_FAILED' )); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '80'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 81) { - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD logo_url tinytext DEFAULT NULL AFTER elo_wertung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '81'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 82) { - $query = "ALTER TABLE #__sportsmanager_team CHANGE zusatzpunkte zusatzpunkte float(6,2) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team CHANGE gesamtpunkte gesamtpunkte float(6,2) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '82'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 83) { - $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD ticker_logo_url tinytext DEFAULT NULL AFTER logo_url"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '83'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 84) { - $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_einzel_startwert smallint(6) DEFAULT NULL AFTER aktueller_verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_doppel_startwert smallint(6) DEFAULT NULL AFTER elo_einzel_spiele"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '84'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 85) { - $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(100) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '85'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 86) { - $query = "ALTER TABLE #__sportsmanager_team ADD buchholz1 smallint(6) DEFAULT NULL AFTER punkte_quotient"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD buchholz2 smallint(6) DEFAULT NULL AFTER buchholz1"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '86'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 87) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbolanzeige` (" - . "\n `termin_symbolanzeige_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `termin_symbol_id` int(11) NOT NULL," - . "\n `termin_id` int(11) NOT NULL," - . "\n PRIMARY KEY (`termin_symbolanzeige_id`)," - . "\n KEY `termin_symbol_id` (`termin_symbol_id`)," - . "\n KEY `termin_id` (`termin_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbol` (" - . "\n `termin_symbol_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `symboltitel` text NOT NULL," - . "\n `status` tinyint(1) NOT NULL DEFAULT '0'," - . "\n PRIMARY KEY (`termin_symbol_id`)," - . "\n KEY `status` (`status`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if (!JFolder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole', 0777)) - die(JText::_( 'COM_SPORTSMANAGER_CREATE_DATES_SYMBOLS_FAILED' )); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '87'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 88) { - $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD KEY turnierdisziplin_rundenstufe_platz (turnierdisziplin_id, rundenstufe, platz)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste_punkte ADD KEY rangliste_platz (rangliste_id, platz)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '88'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 89) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_turnierdisziplin_punkte` (" - . "\n `rangliste_id` int(11) NOT NULL," - . "\n `spieler_id` int(11) NOT NULL," - . "\n `turnierdisziplin_id` int(11) NOT NULL," - . "\n `punkte` smallint(6) DEFAULT NULL," - . "\n PRIMARY KEY (`rangliste_id`, `spieler_id`, `turnierdisziplin_id`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "ALTER TABLE #__sportsmanager_rangliste_punkte DROP PRIMARY KEY, DROP rangliste_punkte_id, DROP KEY rangliste_id, DROP KEY spieler_id, ADD PRIMARY KEY(rangliste_id, spieler_id)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '89'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rangliste_aktualisieren = true; - } - - if ($datenbank_version < 90) { - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechnung` (" - . "\n `berechnung_id` int(11) NOT NULL AUTO_INCREMENT," - . "\n `session_id` varchar(200) NOT NULL," - . "\n `typ` char(64) NOT NULL DEFAULT ''," - . "\n `parameter` char(255) DEFAULT NULL," - . "\n `id` int(11) DEFAULT NULL," - . "\n PRIMARY KEY (`berechnung_id`)," - . "\n KEY `session_id` (`session_id`)," - . "\n KEY `typ` (`typ`)," - . "\n KEY `id` (`typ`)" - . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '90'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 91) { - $query = "ALTER TABLE #__sportsmanager_berechnung CHANGE session_id session_id datetime DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler_import CHANGE session_id session_id datetime DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '91'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 92) { - $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin_punkte ADD platz smallint(6) DEFAULT NULL AFTER turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '92'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $rangliste_aktualisieren = true; - } - - if ($datenbank_version < 93) { - if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-m.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'m.png', 180, 240, 1)) - die('Das Bild konnte nicht an die Zielposition kopiert werden.'); - - if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-w.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'w.png', 180, 240, 1)) - die('Das Bild konnte nicht an die Zielposition kopiert werden.'); - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '93'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 94) { - $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(200) DEFAULT NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '94'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 95) { - $query = "ALTER TABLE #__sportsmanager_rechnung ADD wertungskategorie tinyint(4) NOT NULL AFTER mitgliedsstatus"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rechnung" - . "\n SET wertungskategorie = 15"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '95'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 96) { - $query = "UPDATE #__sportsmanager_teamspiel" - . "\n SET ergebnis_detailliert = IF((ISNULL(teamspiel_heim_punkte) OR (teamspiel_heim_punkte = 0)) AND (ISNULL(teamspiel_gast_punkte) OR (teamspiel_gast_punkte = 0)), null, CONCAT_WS(':', teamspiel_heim_punkte, teamspiel_gast_punkte))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '96'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 97) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD geschlecht tinyint(4) DEFAULT NULL AFTER wertungskategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste ADD minalter tinyint(4) DEFAULT NULL AFTER geschlecht"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste ADD maxalter tinyint(4) DEFAULT NULL AFTER minalter"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET geschlecht = IF(wertungskategorie = 1 OR wertungskategorie = 5, 1, IF(wertungskategorie = 2 OR wertungskategorie = 6, 2, null))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET minalter = IF(wertungskategorie = 1 OR wertungskategorie = 2, 18, IF(wertungskategorie = 4, 50, null))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET maxalter = IF(wertungskategorie = 1 OR wertungskategorie = 2, 49, IF(wertungskategorie = 3, 17, null))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_rangliste DROP wertungskategorie"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '97'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 98) { - $query = "ALTER TABLE #__sportsmanager_begegnung ADD tisch tinytext DEFAULT NULL AFTER spielort_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '98'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 99) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD ohnealter bool DEFAULT '0' AFTER maxalter"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rangliste" - . "\n SET ohnealter = '1'" - . "\n WHERE ISNULL(minalter) AND ISNULL(maxalter)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '99'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 100) { - $query = "ALTER TABLE #__sportsmanager_team ADD tischeigenschaften varchar(200) DEFAULT NULL AFTER tischtyp"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '100'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($datenbank_version < 101) { - $query = "ALTER TABLE #__sportsmanager_begegnung ADD nichtraucherschutz tinyint(4) DEFAULT '0' AFTER gast_spielpunkte"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_team ADD nichtraucherschutz tinyint(4) DEFAULT '0' AFTER heimspielort_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '101'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - - if ($datenbank_version < 102) { - $query = "ALTER TABLE #__sportsmanager_rangliste ADD lizenzen varchar(30) DEFAULT NULL AFTER streichergebnisse"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "ALTER TABLE #__sportsmanager_spieler ADD lizenz varchar(30) DEFAULT NULL AFTER lizenznr"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '102'" - . "\n WHERE name = 'datenbank_version'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($termin_aktionen_email_setzen) { - $query = "SELECT aktion_user_id, termin_aktion_id" - . "\n FROM #__sportsmanager_termin_aktion"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - - foreach ($rows as $row) { - $aktion_user =& JFactory::getUser($row->aktion_user_id); - if (empty($aktion_user->id) || empty($aktion_user->email)) - continue; - $query = "UPDATE #__sportsmanager_termin_aktion" - . "\n SET benachrichtigung_email = '" . $db->getEscaped($aktion_user->email) . "'" - . "\n WHERE termin_aktion_id = " . $row->termin_aktion_id . ";"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - if ($wann_gespielt_aktualisieren) - wannGespieltAktualisieren(); - - if ($teamstatistik_aktualisieren) - teamstatistikAktualisieren(); - - if ($aktueller_verein_aktualisieren) - aktuellerVereinAktualisieren(); - - if ($spielerstatistik_aktualisieren) - spielerstatistikAktualisieren(); - - if ($elo_aktualisieren) - eloAktualisieren(); - - if ($rangliste_aktualisieren) - ranglisteAktualisieren(); - - if (!redirectSessionIdEmpty()) { - // Neu laden, um etwaige offene Berechnungen auszuführen und genügend Rechenzeit für eigentlichen Seitenaufruf zu haben - // Dass Posts verloren gehen, ist unwahrscheinlich, aber wird akzeptiert // TODO: Session-Id in URL ergänzen - redirectCurrentURL(); - jexit(); - } -} - -?> +getPrefix() . "tsleague_basis' || name = '" . $db->getPrefix() . "tsleague_einstellungen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) { + $query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "tsleague_basis'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + if (count($rows) > 0) { + $query = "SELECT * FROM #__tsleague_basis"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY')); + + $datenbank_version = $rows[0]->datenbank_version; + + if ($datenbank_version < 1) { + $query = "ALTER TABLE #__tsleague_spieler DROP verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 2) { + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_system` (" + . "\n `rangliste_system_id` int(11) NOT NULL auto_increment," + . "\n `systembezeichnung` varchar(50)," + . "\n PRIMARY KEY (`rangliste_system_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_system_punkte` (" + . "\n `rangliste_system_punkte_id` int(11) NOT NULL auto_increment," + . "\n `system_id` int(11) NOT NULL," + . "\n `platz_min` smallint," + . "\n `platz_max` smallint," + . "\n `teilnehmer_min` smallint," + . "\n `teilnehmer_max` smallint," + . "\n `punkte` smallint," + . "\n PRIMARY KEY (`rangliste_system_punkte_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste` (" + . "\n `rangliste_id` int(11) NOT NULL auto_increment," + . "\n `system_id` int(11) NOT NULL," + . "\n `bezeichnung` varchar(50)," + . "\n `erster_tag` date NOT NULL," + . "\n `letzter_tag` date NOT NULL," + . "\n `status` tinyint NOT NULL default '0'," + . "\n PRIMARY KEY (`rangliste_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_rangliste_turnierdisziplin` (" + . "\n `rangliste_turnierdisziplin_id` int(11) NOT NULL auto_increment," + . "\n `rangliste_id` int(11) NOT NULL," + . "\n `turnierdisziplin_id` int(11) NOT NULL," + . "\n PRIMARY KEY (`rangliste_turnierdisziplin_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS #__tsleague_rangliste_punkte (" + . "\n `rangliste_punkte_id` int(11) NOT NULL auto_increment," + . "\n `spieler_id` int(11) NOT NULL," + . "\n `punkte` smallint," + . "\n `teilnahmen` smallint," + . "\n PRIMARY KEY (`rangliste_punkte_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 2"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 3) { + $query = "ALTER TABLE #__tsleague_teamspiel_modus ADD spielpunkte_wertung tinyint NOT NULL default '0' AFTER punktetyp"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamspiel_modus ADD begegnungspunkte_wertung tinyint NOT NULL default '0' AFTER spielpunkte_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 3"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 4) { + $query = "ALTER TABLE #__tsleague_rangliste_system ADD streichergebnisse tinyint AFTER rangliste_system_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_punkte ADD rangliste_id int(11) NOT NULL AFTER rangliste_punkte_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 4"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 5) { + $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE einzel_liga_elo elo_einzel smallint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE doppel_liga_elo elo_doppel smallint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE einzel_liga_spiele spiele_einzel smallint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo CHANGE doppel_liga_spiele spiele_doppel smallint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo DROP einzel_turnier_elo"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo DROP doppel_turnier_elo"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo DROP einzel_turnier_spiele"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler_elo DROP doppel_turnier_spiele"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierdisziplin CHANGE gewichtung elo_wertung tinyint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung ADD elo_wertung tinyint AFTER letzter_tag"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_veranstaltung" + . "\n SET elo_wertung = 1" + . "\n WHERE status = 2 OR status = 3"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_turnierdisziplin" + . "\n SET elo_wertung = 1" + . "\n WHERE elo_wertung != 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 5"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $elo_aktualisieren = true; + } + + if ($datenbank_version < 6) { + + $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD kommentar varchar(512) AFTER vorschlagendes_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD kommentar varchar(512) AFTER vorschlagendes_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 6"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 7) { + + $query = "ALTER TABLE #__tsleague_team CHANGE verein_id verein_id int(11)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_team" + . "\n SET verein_id = NULL" + . "\n WHERE verein_id = 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein DROP veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 7"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 8) { + $query = "ALTER TABLE #__tsleague_veranstalter ADD veranstalterkuerzel varchar(20) AFTER veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein ADD veranstalter_id int(11) AFTER verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 8"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 9) { + $query = "SELECT spieler_id, geschlecht" + . "\n FROM #__tsleague_spieler"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + $query = "ALTER TABLE #__tsleague_spieler CHANGE geschlecht geschlecht char(1)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + foreach ($spieler as $s) { + $query = "UPDATE #__tsleague_spieler" + . "\n SET geschlecht = " . ($s->geschlecht == 0 ? "'M'" : "'W'") + . "\n WHERE spieler_id = $s->spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 9"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 10) { + $query = "ALTER TABLE #__tsleague_spieler ADD zuletzt_gespielt date AFTER spielernr"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 10"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $wann_gespielt_aktualisieren = true; + $elo_aktualisieren = true; + } + + if ($datenbank_version < 11) { + $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD voranmeldung datetime AFTER elo_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS #__tsleague_turniervoranmeldung (" + . "\n `turniervoranmeldung_id` int(11) NOT NULL auto_increment," + . "\n `turnierdisziplin_id` int(11) NOT NULL," + . "\n `spieler_1_id` int(11) NOT NULL," + . "\n `spieler_2_id` int(11)," + . "\n PRIMARY KEY (`turniervoranmeldung_id`)" + . "\n ) ENGINE=MyISAM;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 11"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 12) { + $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE kommentar kommentar varchar(255)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis CHANGE kommentar kommentar varchar(255)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 12"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 13) { + $query = "ALTER TABLE #__tsleague_verein ADD vereinssitz varchar(30) AFTER vereinsname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD landeskennung varchar(10) AFTER ort"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstalter ADD kennzahl varchar(10) AFTER veranstalterkuerzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 13"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 14) { + $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD vorgeschlagen datetime AFTER kommentar"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorgeschlagen datetime AFTER kommentar"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorschlaege_heim smallint default 0 AFTER vorgeschlagen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD vorschlag_gast_erlauben smallint default 1 AFTER vorschlaege_heim"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung ADD reihenfolge tinyint default 1 AFTER status"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 14"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 15) { + $query = "ALTER TABLE #__tsleague_spieler ADD ausgetreten tinyint AFTER zuletzt_gespielt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 15"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $elo_aktualisieren = true; + } + + if ($datenbank_version < 16) { + + $query = "ALTER TABLE #__tsleague_spieler CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_vereinsansprechpartner CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstalter CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamspiel_modus CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_team CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamansprechpartner CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnier CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierdisziplin CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turniermeldung CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_system CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 16"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 17) { + $query = "ALTER TABLE #__tsleague_veranstalter DROP kennzahl"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler DROP url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 17"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 18) { + $query = "ALTER TABLE #__tsleague_spieler_elo ADD UNIQUE (spieler_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein ADD KEY (veranstalter_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_verein ADD KEY (spieler_id), ADD KEY (verein_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_vereinsansprechpartner ADD KEY (verein_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_berechtigt_fuer_verein ADD KEY (berechtigt_user_id), ADD KEY (berechtigt_verein_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung ADD KEY (veranstalter_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_team ADD KEY (verein_id), ADD KEY (veranstaltung_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamansprechpartner ADD KEY (team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_team ADD KEY (spieler_id), ADD KEY (team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung ADD KEY (heim_team_id), ADD KEY (gast_team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (begegnung_id), ADD KEY (vorschlagendes_team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamspiel ADD KEY (begegnung_id), ADD KEY (heim_spieler_1_id), ADD KEY (heim_spieler_2_id), ADD KEY (gast_spieler_1_id), ADD KEY (gast_spieler_2_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_unbestaetigtes_ergebnis ADD KEY (begegnung_id), ADD KEY (vorschlagendes_team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_berechtigt_fuer_team ADD KEY (berechtigt_user_id), ADD KEY (berechtigt_team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_moderator ADD KEY (moderator_user_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnier ADD KEY (veranstalter_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD KEY (turnier_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turniervoranmeldung ADD KEY (turnierdisziplin_id), ADD KEY (spieler_1_id), ADD KEY (spieler_2_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turniermeldung ADD KEY (turnierdisziplin_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turniermeldung_spieler ADD KEY (turniermeldung_id), ADD KEY (spieler_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierspiel ADD KEY (turnierdisziplin_id), ADD KEY (heim_meldung_id), ADD KEY (gast_meldung_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_system_punkte ADD KEY (system_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste ADD KEY (system_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD KEY (rangliste_id), ADD KEY (turnierdisziplin_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_punkte ADD KEY (rangliste_id), ADD KEY (spieler_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 18"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 19) { + $query = "ALTER TABLE #__tsleague_verein CHANGE vereinsname vereinsname varchar(50) NOT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_basis" + . "\n SET datenbank_version = 19"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "DROP TABLE IF EXISTS `#__tsleague_einstellungen`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_einstellungen` (" + . "\n `name` char(30)," + . "\n `wert` char(255)," + . "\n PRIMARY KEY (`name`)" + . "\n ) ENGINE=MyISAM COLLATE=latin1_german1_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD lizenznr varchar(20) AFTER spielernr"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__tsleague_einstellungen" + . "\n SET name = 'datenbank_version', wert = '20'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__tsleague_einstellungen" + . "\n SET name = 'basis_spielernr', wert = ''"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DROP TABLE #__tsleague_basis"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__tsleague_einstellungen WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY')); + + $datenbank_version = intval($rows[0]->wert); + + if ($datenbank_version < 21) { + $query = "ALTER TABLE #__tsleague_veranstalter ADD kategorie tinyint default '1' AFTER veranstalterkuerzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung ADD kategorie tinyint default '1' AFTER reihenfolge"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '21'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 22) { + $query = "ALTER TABLE #__tsleague_veranstaltung ADD tabellenwertung tinyint NOT NULL default '0' AFTER modus_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_veranstaltung ADD unterteilung tinyint NOT NULL default '0' AFTER tabellenwertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_veranstaltung" + . "\n LEFT JOIN #__tsleague_teamspiel_modus ON teamspiel_modus_id = modus_id" + . "\n SET tabellenwertung = IF(begegnungspunkte_wertung = 0, 1, 2)" + . "\n WHERE status = 2"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_veranstaltung" + . "\n SET unterteilung = IF(status = 3, 1, 2)" + . "\n WHERE status = 3 OR status = 1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_veranstaltung" + . "\n SET status = 1" + . "\n WHERE status > 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamspiel_modus DROP begegnungspunkte_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_teamspiel_modus DROP ergebnistyp"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung DROP heim_begegnungspunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung DROP gast_begegnungspunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '22'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 23) { + if (!Folder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'spieler')) { + if (!Folder::move(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'players', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'spieler')) + die(Text::_('COM_SPORTSMANAGER_RENAME_PLAYER_DIRECTORY_FAILED')); + } + + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'mannschaften', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_TEAM_DIRECTORY_FAILED')); + + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague' . DIRECTORY_SEPARATOR . 'vereine', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_CLUB_DIRECTORY_FAILED')); + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '23'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 24) { + $query = "ALTER TABLE #__tsleague_rangliste ADD reihenfolge tinyint default '1' AFTER status"; + + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste ADD kategorie tinyint default '1' AFTER reihenfolge"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD wertung tinyint default '1' AFTER turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '24'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 25) { + $query = "ALTER TABLE #__tsleague_turnierspiel CHANGE runde runde smallint"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '25'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 26) { + $query = "UPDATE #__tsleague_veranstaltung" + . "\n SET tabellenwertung = IF(tabellenwertung = 1, 2, 5)" + . "\n WHERE tabellenwertung > 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '26'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 27) { + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD aktion tinyint default '0' AFTER begegnung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE neuer_zeitpunkt zeitpunkt datetime"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD user_id int(11) AFTER zeitpunkt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP INDEX vorschlagendes_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE vorschlagendes_team_id team_id int(11)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD verantwortlich_team_id int(11) AFTER team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (user_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen ADD KEY (verantwortlich_team_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP vorschlaege_heim"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen DROP vorschlag_gast_erlauben"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_begegnung_verlegen CHANGE vorgeschlagen eingetragen datetime"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_begegnung_verlegen, #__tsleague_begegnung" + . "\n SET verantwortlich_team_id = IF(team_id = heim_team_id, gast_team_id, heim_team_id)" + . "\n WHERE #__tsleague_begegnung_verlegen.begegnung_id = #__tsleague_begegnung.begegnung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '27'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 28) { + $query = "ALTER TABLE #__tsleague_spieler DROP ausgetreten"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD ausgetreten bool default '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_spieler" + . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler DROP austritt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein ADD ausgetreten bool default '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_verein" + . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_verein DROP austritt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_verein ADD ausgetreten bool default '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_mitglied_von_verein" + . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_verein DROP austritt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_team ADD ausgetreten bool default '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_mitglied_von_team" + . "\n SET ausgetreten = IF(ISNULL(austritt), FALSE, TRUE)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_mitglied_von_team DROP austritt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '28'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 29) { + $query = "ALTER TABLE #__tsleague_rangliste ADD streichergebnisse tinyint AFTER system_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_rangliste, #__tsleague_rangliste_system" + . "\n SET #__tsleague_rangliste.streichergebnisse = #__tsleague_rangliste_system.streichergebnisse WHERE system_id = rangliste_system_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_system DROP streichergebnisse"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD system_id int(11) AFTER turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_rangliste_turnierdisziplin ADD KEY (system_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '29'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 30) { + $query = "ALTER TABLE #__tsleague_turniermeldung_spieler CHANGE spieler_id spieler_id int(11)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_turniermeldung_spieler_name` (" + . "\n `turniermeldung_spieler_name_id` int(11) NOT NULL auto_increment," + . "\n `turniermeldung_spieler_id` int(11) NOT NULL," + . "\n `nachname` varchar(30)," + . "\n `vorname` varchar(30) NOT NULL," + . "\n PRIMARY KEY (`turniermeldung_spieler_name_id`)," + . "\n KEY (`turniermeldung_spieler_id`)" + . "\n ) ENGINE=MyISAM COLLATE=latin1_german1_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD reihenfolge tinyint default '1' AFTER voranmeldung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_turnierdisziplin ADD kategorie tinyint default '1' AFTER reihenfolge"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '30'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 31) { + $query = "ALTER TABLE #__tsleague_spieler ADD elo_einzel smallint AFTER pseudonym"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD elo_einzel_spiele smallint AFTER elo_einzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD elo_doppel smallint AFTER elo_einzel_spiele"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD elo_doppel_spiele smallint AFTER elo_doppel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_spieler" + . "\n INNER JOIN #__tsleague_spieler_elo USING (spieler_id)" + . "\n SET #__tsleague_spieler.elo_einzel = #__tsleague_spieler_elo.elo_einzel," + . "\n #__tsleague_spieler.elo_einzel_spiele = #__tsleague_spieler_elo.spiele_doppel," + . "\n #__tsleague_spieler.elo_doppel = #__tsleague_spieler_elo.elo_doppel," + . "\n #__tsleague_spieler.elo_doppel_spiele = #__tsleague_spieler_elo.spiele_einzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DROP TABLE #__tsleague_spieler_elo;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '31'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 32) { + $query = "ALTER TABLE #__tsleague_spieler ADD INDEX (nachname, vorname)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_spieler ADD INDEX (vorname, nachname)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '32'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 33) { + $query = "ALTER TABLE #__tsleague_turniermeldung DROP name"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '33'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 34) { + $query = "ALTER TABLE #__tsleague_turnier ADD turnierort varchar(50) AFTER turnierbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '34'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 35) { + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_spieler_import` ( " + . "\n `spieler_import_id` int(11) NOT NULL auto_increment, " + . "\n `session_id` varchar(200) NOT NULL," + . "\n `nachname` varchar(30)," + . "\n `vorname` varchar(30)," + . "\n `geschlecht` char(1)," + . "\n `geburtsdatum` date," + . "\n `strasse` varchar(30)," + . "\n `plz` varchar(6)," + . "\n `ort` varchar(30)," + . "\n `landeskennung` varchar(10)," + . "\n `telefon` varchar(25)," + . "\n `mobil` varchar(25)," + . "\n `email` varchar(40)," + . "\n `spielernr` varchar(20)," + . "\n `lizenznr` varchar(20)," + . "\n `ausgetreten` bool default '0'," + . "\n `pseudonym` varchar(30)," + . "\n `vereinsname` varchar(50)," + . "\n `vereinssitz` varchar(30)," + . "\n `veranstalterbezeichnung` varchar(50)," + . "\n PRIMARY KEY (`spieler_import_id`)," + . "\n KEY (`session_id`)" + . "\n ) ENGINE=MyISAM COLLATE=latin1_german1_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '35'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 36) { + $query = "ALTER TABLE #__tsleague_turniermeldung_spieler_name ADD vereinsname varchar(50) AFTER vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '36'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 37) { + $query = "ALTER TABLE #__tsleague_spieler ADD geburtsjahr smallint unsigned AFTER geburtsdatum"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_spieler" + . "\n SET geburtsjahr = YEAR(geburtsdatum)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '37'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 38) { + $query = "CREATE TABLE IF NOT EXISTS `#__tsleague_kategorie` (" + . "\n `kategorie_id` int(11) NOT NULL auto_increment," + . "\n `typ` tinyint," + . "\n `nummer` tinyint," + . "\n `bezeichnung` varchar(50)," + . "\n PRIMARY KEY (`kategorie_id`)" + . "\n ) ENGINE=MyISAM COLLATE=latin1_german1_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '38'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 39) { + $query = "ALTER TABLE #__tsleague_turnierdisziplin DROP kuerzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '39'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 40) { + $query = "DELETE FROM #__tsleague_mitglied_von_verein WHERE spieler_id = 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '40'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 41) { + $query = "ALTER TABLE #__tsleague_spieler_import ADD geburtsjahr smallint unsigned AFTER geburtsdatum"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__tsleague_team CHANGE teamname teamname varchar(50) NOT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '41'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 42) { + $query = "ALTER TABLE #__tsleague_team ADD zusatzpunkte smallint AFTER tischtyp"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '42'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 43) { + $query = "ALTER TABLE #__tsleague_turnierspiel ADD rundenstufe tinyint AFTER runde"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_turnierspiel" + . "\n SET rundenstufe = IF(runde > 0, 1, -1), runde = ABS(runde)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '43'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 44) { + $query = "UPDATE #__tsleague_begegnung" + . "\n SET spieltag = spieltag + 99 - (2 * (spieltag % 100))" + . "\n WHERE spieltag >= 20000"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__tsleague_einstellungen" + . "\n SET wert = '44'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "DROP TABLE IF EXISTS `#__sportsmanager_begegnung`" + . ", `#__sportsmanager_begegnung_verlegen`" + . ", `#__sportsmanager_berechtigt_fuer_team`" + . ", `#__sportsmanager_berechtigt_fuer_turnier`" + . ", `#__sportsmanager_berechtigt_fuer_verein`" + . ", `#__sportsmanager_berechtigt_fuer_veranstalter`" + . ", `#__sportsmanager_berechtigt_fuer_veranstaltung`" + . ", `#__sportsmanager_einstellungen`" + . ", `#__sportsmanager_berechnung`" + . ", `#__sportsmanager_einstufung`" + . ", `#__sportsmanager_einstufung_rangliste`" + . ", `#__sportsmanager_elo_cache`" + . ", `#__sportsmanager_kategorie`" + . ", `#__sportsmanager_mitglied_von_team`" + . ", `#__sportsmanager_mitglied_von_verein`" + . ", `#__sportsmanager_moderator`" + . ", `#__sportsmanager_moderator_zugriff`" + . ", `#__sportsmanager_rangliste`" + . ", `#__sportsmanager_rangliste_punkte`" + . ", `#__sportsmanager_rangliste_system`" + . ", `#__sportsmanager_rangliste_system_punkte`" + . ", `#__sportsmanager_rangliste_turnierdisziplin`" + . ", `#__sportsmanager_spieler`" + . ", `#__sportsmanager_spieler_import`" + . ", `#__sportsmanager_team`" + . ", `#__sportsmanager_teamansprechpartner`" + . ", `#__sportsmanager_teamspiel`" + . ", `#__sportsmanager_teamspiel_modus`" + . ", `#__sportsmanager_termin`" + . ", `#__sportsmanager_termin_symbol`" + . ", `#__sportsmanager_termin_symbolanzeige`" + . ", `#__sportsmanager_termin_aktion`" + . ", `#__sportsmanager_termin_zusatz`" + . ", `#__sportsmanager_termin_bezeichnungszusatz`" + . ", `#__sportsmanager_termin_bezeichnung`" + . ", `#__sportsmanager_termin_bundesland`" + . ", `#__sportsmanager_termin_land`" + . ", `#__sportsmanager_turnier`" + . ", `#__sportsmanager_turnierdisziplin`" + . ", `#__sportsmanager_turniermeldung`" + . ", `#__sportsmanager_turniermeldung_spieler`" + . ", `#__sportsmanager_turniermeldung_spieler_name`" + . ", `#__sportsmanager_turnierspiel`" + . ", `#__sportsmanager_turniervoranmeldung`" + . ", `#__sportsmanager_unbestaetigtes_ergebnis`" + . ", `#__sportsmanager_veranstalter`" + . ", `#__sportsmanager_veranstaltung`" + . ", `#__sportsmanager_verein`" + . ", `#__sportsmanager_vereinsansprechpartner`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "\n RENAME TABLE #__tsleague_begegnung TO #__sportsmanager_begegnung" + . ", #__tsleague_begegnung_verlegen TO #__sportsmanager_begegnung_verlegen" + . ", #__tsleague_berechtigt_fuer_team TO #__sportsmanager_berechtigt_fuer_team" + . ", #__tsleague_berechtigt_fuer_verein TO #__sportsmanager_berechtigt_fuer_verein" + . ", #__tsleague_einstellungen TO #__sportsmanager_einstellungen" + . ", #__tsleague_kategorie TO #__sportsmanager_kategorie" + . ", #__tsleague_mitglied_von_team TO #__sportsmanager_mitglied_von_team" + . ", #__tsleague_mitglied_von_verein TO #__sportsmanager_mitglied_von_verein" + . ", #__tsleague_moderator TO #__sportsmanager_moderator" + . ", #__tsleague_rangliste TO #__sportsmanager_rangliste" + . ", #__tsleague_rangliste_punkte TO #__sportsmanager_rangliste_punkte" + . ", #__tsleague_rangliste_system TO #__sportsmanager_rangliste_system" + . ", #__tsleague_rangliste_system_punkte TO #__sportsmanager_rangliste_system_punkte" + . ", #__tsleague_rangliste_turnierdisziplin TO #__sportsmanager_rangliste_turnierdisziplin" + . ", #__tsleague_spieler TO #__sportsmanager_spieler" + . ", #__tsleague_spieler_import TO #__sportsmanager_spieler_import" + . ", #__tsleague_team TO #__sportsmanager_team" + . ", #__tsleague_teamansprechpartner TO #__sportsmanager_teamansprechpartner" + . ", #__tsleague_teamspiel TO #__sportsmanager_teamspiel" + . ", #__tsleague_teamspiel_modus TO #__sportsmanager_teamspiel_modus" + . ", #__tsleague_turnier TO #__sportsmanager_turnier" + . ", #__tsleague_turnierdisziplin TO #__sportsmanager_turnierdisziplin" + . ", #__tsleague_turniermeldung TO #__sportsmanager_turniermeldung" + . ", #__tsleague_turniermeldung_spieler TO #__sportsmanager_turniermeldung_spieler" + . ", #__tsleague_turniermeldung_spieler_name TO #__sportsmanager_turniermeldung_spieler_name" + . ", #__tsleague_turnierspiel TO #__sportsmanager_turnierspiel" + . ", #__tsleague_turniervoranmeldung TO #__sportsmanager_turniervoranmeldung" + . ", #__tsleague_unbestaetigtes_ergebnis TO #__sportsmanager_unbestaetigtes_ergebnis" + . ", #__tsleague_veranstalter TO #__sportsmanager_veranstalter" + . ", #__tsleague_veranstaltung TO #__sportsmanager_veranstaltung" + . ", #__tsleague_verein TO #__sportsmanager_verein" + . ", #__tsleague_vereinsansprechpartner TO #__sportsmanager_vereinsansprechpartner;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '1'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + if (!Folder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager') && Folder::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague')) { + if (!Folder::move(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tsleague', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager')) + die(Text::_('COM_SPORTSMANAGER_RENAME_PLAYER_FAILED')); + } + + } + + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die(Text::_('COM_SPORTSMANAGER_EXTERNAL_DB_INCONSISTENCY')); + + $datenbank_version = intval($rows[0]->wert); + + if ($datenbank_version < 2) { + $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(60)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '2'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 3) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_wertung tinyint(4) DEFAULT '1' AFTER pseudonym"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '3'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 4) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste` (" + . "\n `bestenliste_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` varchar(50) COLLATE latin1_german1_ci DEFAULT NULL," + . "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `typ` tinyint(4) DEFAULT NULL," + . "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00'," + . "\n `letzter_tag` date NOT NULL DEFAULT '0000-00-00'," + . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `reihenfolge` tinyint(4) DEFAULT '1'," + . "\n `kategorie` tinyint(4) DEFAULT '1'," + . "\n PRIMARY KEY (`bestenliste_id`)" + . "\n ) ENGINE=MyISAM ;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_punkte` (" + . "\n `bestenliste_punkte_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," + . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," + . "\n `siege` smallint(6) DEFAULT NULL," + . "\n `unentschieden` smallint(6) DEFAULT NULL," + . "\n `niederlagen` smallint(6) DEFAULT NULL," + . "\n `spielpunkte_gewonnen` smallint(6) DEFAULT NULL," + . "\n `spielpunkte_verloren` smallint(6) DEFAULT NULL," + . "\n `punkte_gewonnen` smallint(6) DEFAULT NULL," + . "\n `punkte_verloren` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`bestenliste_punkte_id`)," + . "\n KEY `bestenliste_id` (`bestenliste_id`)," + . "\n KEY `spieler_id` (`spieler_id`)" + . "\n) ENGINE=MyISAM ;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_veranstaltung` (" + . "\n `bestenliste_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," + . "\n `veranstaltung_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`bestenliste_veranstaltung_id`)," + . "\n KEY `bestenliste_id` (`bestenliste_id`)," + . "\n KEY `veranstaltung_id` (`veranstaltung_id`)" + . "\n) ENGINE=MyISAM ;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '4'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 5) { + $query = "ALTER TABLE #__sportsmanager_rangliste_punkte ADD platz smallint(6) DEFAULT NULL AFTER spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '5'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $rangliste_aktualisieren = true; + } + + if ($datenbank_version < 6) { + $query = "ALTER TABLE #__sportsmanager_team ADD platz smallint(6) DEFAULT NULL AFTER heimspielort_anschrift_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD gesamtpunkte smallint(6) DEFAULT NULL AFTER platz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD begegnungspunkte smallint(6) DEFAULT NULL AFTER gesamtpunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD siege smallint(6) DEFAULT NULL AFTER begegnungspunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD unentschieden smallint(6) DEFAULT NULL AFTER siege"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD niederlagen smallint(6) DEFAULT NULL AFTER unentschieden"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_gewonnen smallint(6) DEFAULT NULL AFTER niederlagen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_verloren smallint(6) DEFAULT NULL AFTER spielpunkte_gewonnen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_differenz smallint(6) DEFAULT NULL AFTER spielpunkte_verloren"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD spielpunkte_quotient float(8,2) DEFAULT NULL AFTER spielpunkte_differenz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD punkte_gewonnen smallint(6) DEFAULT NULL AFTER spielpunkte_quotient"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD punkte_verloren smallint(6) DEFAULT NULL AFTER punkte_gewonnen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD punkte_differenz smallint(6) DEFAULT NULL AFTER punkte_verloren"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD punkte_quotient float(8,2) DEFAULT NULL AFTER punkte_differenz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '6'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $teamstatistik_aktualisieren = true; + } + + if ($datenbank_version < 7) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstalter` (" + . "\n `berechtigt_fuer_veranstalter_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," + . "\n `berechtigt_veranstalter_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`berechtigt_fuer_veranstalter_id`)," + . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," + . "\n KEY `berechtigt_veranstalter_id` (`berechtigt_veranstalter_id`)" + . "\n) ENGINE=MyISAM ;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '7'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 8) { + $query = "ALTER TABLE #__sportsmanager_moderator ADD zugriff smallint(6) DEFAULT 1 AFTER moderator_user_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '8'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 9) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD wertungskategorie tinyint(4) DEFAULT 0 AFTER streichergebnisse"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '9'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 10) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD aktueller_verein_id int(11) DEFAULT NULL AFTER pseudonym"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '10'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $aktueller_verein_aktualisieren = true; + } + + if ($datenbank_version < 11) { + $query = "ALTER TABLE #__sportsmanager_spieler DROP ausgetreten"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '11'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 12) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD status tinyint(4) NOT NULL DEFAULT 0 AFTER modus"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel_modus" + . "\n SET status = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_system ADD status tinyint(4) NOT NULL DEFAULT 0 AFTER systembezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste_system" + . "\n SET status = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '12'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 13) { + $query = "ALTER TABLE #__sportsmanager_spieler_import ADD spielernr_alt varchar(20) COLLATE latin1_german1_ci DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '13'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $aktueller_verein_aktualisieren = true; + } + + if ($datenbank_version < 14) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD punkte_sieg tinyint(4) NOT NULL DEFAULT 0 AFTER punktetyp"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '14'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $aktueller_verein_aktualisieren = true; + } + + if ($datenbank_version < 15) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_saison` (" + . "\n `saison_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `saisonbezeichnung` varchar(30) COLLATE latin1_german1_ci DEFAULT NULL," + . "\n PRIMARY KEY (`saison_id`)" + . "\n) ENGINE=MyISAM ;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER rangliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste ADD KEY (saison_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER bestenliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste ADD KEY (saison_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnier ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER turnier_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnier ADD KEY (saison_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD saison_id int(11) NOT NULL DEFAULT 0 AFTER veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD KEY (saison_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + +//// Saisons ergänzen + $query = "SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_veranstaltung WHERE NOT ISNULL(erster_tag)" + . "\n UNION" + . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_turnier WHERE NOT ISNULL(erster_tag)" + . "\n UNION" + . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_rangliste WHERE NOT ISNULL(erster_tag)" + . "\n UNION" + . "\n SELECT YEAR(erster_tag) AS jahr FROM #__sportsmanager_bestenliste WHERE NOT ISNULL(erster_tag)" + . "\n GROUP BY jahr" + . "\n ORDER BY jahr"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $jahre = $db->loadObjectList(); + + if (count($jahre) > 0) { + foreach ($jahre as $jahr) { + $query = "INSERT #__sportsmanager_saison" + . "\n SET saisonbezeichnung = '$jahr->jahr'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } else { + $query = "INSERT #__sportsmanager_saison" + . "\n SET saisonbezeichnung = 'Keine'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC LIMIT 1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + $aktuelle_saison_id = $saisons[0]->saison_id; +// Saisons den Veranstaltungen zuordnen + $query = "UPDATE #__sportsmanager_veranstaltung" + . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" + . "\n SET #__sportsmanager_veranstaltung.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_turnier" + . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" + . "\n SET #__sportsmanager_turnier.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" + . "\n SET #__sportsmanager_rangliste.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_bestenliste" + . "\n LEFT JOIN #__sportsmanager_saison ON YEAR(erster_tag) = saisonbezeichnung" + . "\n SET #__sportsmanager_bestenliste.saison_id = COALESCE(#__sportsmanager_saison.saison_id, '$aktuelle_saison_id')"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '15'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 16) { + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftsmitglieder', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_TEAM_MEMBERS_DIRECTORY_FAILED')); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '16'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $aktueller_verein_aktualisieren = true; + } + + if ($datenbank_version < 17) { + $query = "ALTER TABLE #__sportsmanager_unbestaetigtes_ergebnis ADD zwischenergebnis bool default '0' AFTER vorschlagendes_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '17'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 18) { + $query = "ALTER TABLE #__sportsmanager_einstellungen CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_saison CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_begegnung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_begegnung_verlegen CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_berechtigt_fuer_veranstalter CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_kategorie CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_mitglied_von_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_mitglied_von_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_moderator CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_system CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_system_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_veranstaltung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler_import CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamansprechpartner CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamspiel CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnier CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniermeldung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniermeldung_spieler CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniermeldung_spieler_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnierspiel CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniervoranmeldung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_unbestaetigtes_ergebnis CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstalter CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstaltung CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_vereinsansprechpartner CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '18'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 19) { + $query = "ALTER TABLE #__sportsmanager_verein ADD vereinssitz_ortsteil varchar(30) DEFAULT NULL AFTER vereinssitz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein ADD url varchar(150) DEFAULT NULL AFTER vereinssitz_ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein ADD beschreibung varchar(500) DEFAULT NULL AFTER url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_spielort` (" + . "\n `spielort_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `name` varchar(40) DEFAULT NULL," + . "\n `strasse` varchar(30) DEFAULT NULL," + . "\n `plz` varchar(10) DEFAULT NULL," + . "\n `ortsname` varchar(30) DEFAULT NULL," + . "\n `ortsteil` varchar(30) DEFAULT NULL," + . "\n `url` varchar(150) DEFAULT NULL," + . "\n `beschreibung` varchar(500) DEFAULT NULL," + . "\n `status` tinyint(1) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`spielort_id`)" + . "\n ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD heimspielort_id int(11) DEFAULT NULL AFTER heimspiel_uhrzeit"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD KEY (heimspielort_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '19'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $rangliste_aktualisieren = true; + } + + if ($datenbank_version < 20) { + $query = "INSERT #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_ausblenden', wert = '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '20'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 21) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD bild_ausblenden tinyint(1) DEFAULT '0' AFTER pseudonym"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_einstellungen" + . "\n SET name = 'ansprechpartner_spielerdaten', wert = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '21'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 22) { + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD voranmeldungen_rangliste_id int(11) DEFAULT NULL AFTER voranmeldung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD voranmeldungen_reihenfolge tinyint(4) DEFAULT '0' AFTER voranmeldungen_rangliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD KEY (voranmeldungen_rangliste_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '22'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 23) { + $query = "SELECT #__sportsmanager_team.*" + . "\n FROM #__sportsmanager_team" + . "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)" + . "\n LEFT JOIN #__sportsmanager_saison USING (saison_id)" + . "\n ORDER BY heimspielort_name, heimspielort_anschrift"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $heimspielort_name = ""; + $heimspielort_strasse = ""; + $heimspielort_plz = ""; + $heimspielort_ortsname = ""; + $spielort_id = 0; + foreach ($teams as $team) { + $name = $team->heimspielort_name; + $strasse = $team->heimspielort_anschrift; + if (empty($name) && empty($strasse)) + continue; + $plz_pos = false; + for ($i = 0; $i < strlen($strasse) - 5; $i++) { + if ($strasse[$i + 5] != " " || !ctype_digit(substr($strasse, $i, 5))) + continue; + $plz_pos = $i; + break; + } + if ($plz_pos === false) { + $plz = $ortsname = $beschreibung = ""; + } else { + $plz = substr($strasse, $plz_pos, 5); + $ortsname = trim(substr($strasse, $plz_pos + 6)); + $beschreibung_pos = strpos($ortsname, ","); + if ($beschreibung_pos === false) { + $beschreibung = ""; + } else { + $beschreibung = trim(substr($ortsname, $beschreibung_pos + 1)); + $ortsname = trim(substr($ortsname, 0, $beschreibung_pos)); + } + $strasse = trim(substr($strasse, 0, $plz_pos)); + $strasse_len = strlen($strasse); + if ($strasse_len > 0 && $strasse[$strasse_len - 1] == ",") + $strasse = trim(substr($strasse, 0, $strasse_len - 1)); + } + + if ($heimspielort_name != $name || $heimspielort_strasse != $strasse || $heimspielort_plz != $plz || $heimspielort_ortsname != $ortsname) { + $heimspielort_name = $name; + $heimspielort_strasse = $strasse; + $heimspielort_plz = $plz; + $heimspielort_ortsname = $ortsname; + $heimspielort_beschreibung = $beschreibung; + $heimspielort_url = $team->heimspielort_url; + $query = "INSERT INTO #__sportsmanager_spielort (name, strasse, plz, ortsname, ortsteil, url, beschreibung, status)" + . "\n VALUES ('" . $db->getEscaped($heimspielort_name) . "', '" . $db->getEscaped($heimspielort_strasse) . "', '" . $db->getEscaped($heimspielort_plz) . "', '" . $db->getEscaped($heimspielort_ortsname) . "', '', '" . $db->getEscaped($heimspielort_url) . "', '" . $db->getEscaped($heimspielort_beschreibung) . "', 1);"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielort_id = $db->insertid(); + } + $query = "UPDATE #__sportsmanager_team" + . "\n SET heimspielort_id = '$spielort_id'" + . "\n WHERE team_id = '$team->team_id'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_name"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_anschrift"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team DROP heimspielort_anschrift_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_name"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_anschrift"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_verein DROP heimspielort_anschrift_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '23'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 24) { + $query = "ALTER TABLE #__sportsmanager_begegnung ADD spielort_id int(11) DEFAULT NULL AFTER gast_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '24'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 25) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD system_wertung tinyint(4) DEFAULT '0' AFTER system_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin ADD system_wertung tinyint(4) DEFAULT '0' AFTER system_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '25'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 26) { + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '26'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $rangliste_aktualisieren = true; + $spielerstatistik_aktualisieren = true; + } + + if ($datenbank_version < 27) { + $query = "ALTER TABLE #__sportsmanager_team ADD teamgruppe_id int(11) DEFAULT NULL AFTER team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '27'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 28) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verteiler` (" + . "\n `verteiler_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` TINYTEXT NOT NULL," + . "\n `verteiler` TEXT NOT NULL," + . "\n PRIMARY KEY (`verteiler_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '28'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 29) { + $query = "ALTER TABLE #__sportsmanager_team ADD KEY (teamgruppe_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_begegnung ADD KEY (spielort_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD verschieberegel_id int(11) DEFAULT NULL AFTER modus_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD KEY (verschieberegel_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verschieberegel` (" + . "\n `verschieberegel_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` varchar(50) NOT NULL DEFAULT ''," + . "\n `initial_ohne_termin` tinyint(1) NOT NULL DEFAULT '0'," + . "\n `keine_gegenvorschlaege` tinyint(1) NOT NULL DEFAULT '0'," + . "\n `vorlaufzeit_tage` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `termine_minimal` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `termine_maximal` tinyint(4) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`verschieberegel_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal)" + . "\n VALUES ('Beliebig', '0', '0', '0', '1', '3');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $verschieberegel_id = $db->insertid(); + + $query = "UPDATE #__sportsmanager_veranstaltung" + . "\n SET verschieberegel_id = $verschieberegel_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '29'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 30) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung` (" + . "\n `rechnung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` TINYTEXT NOT NULL," + . "\n `notiz` TEXT NOT NULL," + . "\n `saison_id` int(11) NOT NULL DEFAULT '0'," + . "\n `verein_id` int(11) DEFAULT NULL," + . "\n `veranstalter_id` int(11) DEFAULT NULL," + . "\n PRIMARY KEY (`rechnung_id`)," + . "\n KEY `saison_id` (`saison_id`)," + . "\n KEY `verein_id` (`verein_id`)," + . "\n KEY `veranstalter_id` (`veranstalter_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung_spieler` (" + . "\n `rechnung_spieler_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `rechnung_id` int(11) NOT NULL," + . "\n `spieler_id` int(11) NOT NULL," + . "\n PRIMARY KEY (`rechnung_spieler_id`)," + . "\n KEY `rechnung_id` (`rechnung_id`)," + . "\n KEY `spieler_id` (`spieler_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '30'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 31) { + $query = "RENAME TABLE #__sportsmanager_begegnung_verlegen TO #__sportsmanager_begegnung_historie;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_begegnung_historie CHANGE begegnung_verlegen_id begegnung_historie_id int(11) NOT NULL AUTO_INCREMENT"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '31'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 32) { + $query = "ALTER TABLE #__sportsmanager_verschieberegel ADD ablehnen tinyint(1) NOT NULL DEFAULT '0' AFTER termine_maximal"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '32'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 33) { + $query = "UPDATE #__sportsmanager_turnierspiel" + . "\n SET rundenstufe = '10'" + . "\n WHERE rundenstufe = '-1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD rundenstufe tinyint(4) DEFAULT NULL AFTER turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_turniermeldung" + . "\n SET rundenstufe = '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_turniervoranmeldung" + . "\n ORDER BY turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$row->turnierdisziplin_id', '20', 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', '$row->spieler_1_id');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if ($row->spieler_2_id != NULL) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$id', '$row->spieler_2_id');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "DROP TABLE #__sportsmanager_turniervoranmeldung;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '33'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 34) { + $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD meldungsgruppe_id int(11) DEFAULT NULL AFTER turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD KEY (meldungsgruppe_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '34'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 35) { + $query = "ALTER TABLE #__sportsmanager_turnierspiel ADD ergebnis_detailliert tinytext DEFAULT NULL AFTER ergebnis"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '35'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 36) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnier_rundenstufe` (" + . "\n `turnier_rundenstufe_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `turnierdisziplin_id` int(11) NOT NULL DEFAULT '0'," + . "\n `rundenstufe` tinyint(4) DEFAULT NULL," + . "\n `bezeichnung` tinytext DEFAULT NULL," + . "\n `typ` tinyint(4) DEFAULT NULL," + . "\n `runden` tinyint(4) DEFAULT NULL," + . "\n `saetze` tinyint(4) DEFAULT NULL," + . "\n `tore` tinyint(4) DEFAULT NULL," + . "\n `tabellenwertung` tinyint(4) DEFAULT NULL," + . "\n `spielfelder` text DEFAULT NULL," + . "\n PRIMARY KEY (`turnier_rundenstufe_id`)," + . "\n KEY `turnierdisziplin_id` (`turnierdisziplin_id`)," + . "\n KEY `rundenstufe` (`rundenstufe`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '36'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 37) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (spielernr)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler DROP INDEX vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler DROP INDEX nachname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (nachname)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD INDEX (vorname)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler_import ADD INDEX (spielernr)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '37'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 38) { + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin CHANGE wertung wertung float(4,2) DEFAULT '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '38'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 39) { + $query = "ALTER TABLE #__sportsmanager_team ADD pin varchar(20) DEFAULT NULL AFTER zusatzpunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '39'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 40) { + $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer, kategorie_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $typ = -1; + $nummer = -1; + foreach ($rows as $row) { + if ($typ != $row->typ || $nummer != $row->nummer) { + $typ = $row->typ; + $nummer = $row->nummer; + continue; + } + $query = "DELETE FROM #__sportsmanager_kategorie WHERE kategorie_id = $row->kategorie_id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '40'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 41) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielpunkte_bedingung tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '41'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 42) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielernamen tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_bedingung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '42'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 43) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung` (" + . "\n `einstufung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` TINYTEXT NOT NULL," + . "\n `prioritaet` tinyint(4) DEFAULT NULL," + . "\n PRIMARY KEY (`einstufung_id`)," + . "\n KEY `prioritaet` (`prioritaet`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung_rangliste` (" + . "\n `einstufung_rangliste_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `einstufung_id` int(11) NOT NULL," + . "\n `rangliste_id` int(11) NOT NULL," + . "\n `platz_min` smallint(6) DEFAULT NULL," + . "\n `platz_max` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`einstufung_rangliste_id`)," + . "\n KEY `einstufung_id` (`einstufung_id`)," + . "\n KEY `rangliste_id` (`rangliste_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_id int(11) DEFAULT NULL AFTER bild_ausblenden"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '43'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 44) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD heimtausch tinyint(4) NOT NULL DEFAULT '0' AFTER spielernamen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '44'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 45) { + $query = "ALTER TABLE #__sportsmanager_einstufung ADD elo_min smallint(6) DEFAULT NULL AFTER prioritaet"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_einstufung ADD elo_max smallint(6) DEFAULT NULL AFTER elo_min"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '45'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 46) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_elo_cache` (" + . "\n `cache_datum` date NOT NULL," + . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," + . "\n `elo_einzel` smallint(6) DEFAULT NULL," + . "\n `elo_einzel_spiele` smallint(6) DEFAULT NULL," + . "\n `elo_doppel` smallint(6) DEFAULT NULL," + . "\n `elo_doppel_spiele` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`spieler_id`, `cache_datum`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '46'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $elo_aktualisieren = TRUE; + } + + if ($datenbank_version < 47) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD erstmals_gespielt date AFTER lizenznr"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '47'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $wann_gespielt_aktualisieren = TRUE; + } + + if ($datenbank_version < 48) { + $query = "INSERT #__sportsmanager_einstellungen" + . "\n SET name = 'spielerliste_elo', wert = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '48'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 49) { + $query = "ALTER TABLE #__sportsmanager_einstufung ADD typ smallint(4) DEFAULT NULL AFTER bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstufung" + . "\n SET typ = '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler CHANGE einstufung_id einstufung_allgemein_id int(11) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_einzel_id int(11) DEFAULT NULL AFTER einstufung_allgemein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD einstufung_doppel_id int(11) DEFAULT NULL AFTER einstufung_einzel_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '49'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 50) { + $query = "ALTER TABLE #__sportsmanager_rangliste_system ADD funktion TEXT DEFAULT NULL AFTER systembezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_rangliste_system" + . "\n SET systembezeichnung = 'Klostermann/Wahle (1 Punkt für Letzten)'," + . "\n status = '1'," +//. "\n funktion = 'MAX(ROUND(m * ROUND((((POW(n * 10, 0.7) - 1) * (-LOG(p / n) * (1 - (p / n)))) / (-LOG(1 / n) * (1 - (1 / n)))) + 1)), 1)'"; + . "\n funktion = 'VERTEILUNG(POW(n * 10, 0.7), p, n, m)'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $system_id = $db->insertid(); + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '3'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '3'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_rangliste_system" + . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 129)'," + . "\n status = '1'," + . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-20.45) * LN(p))))), 1)'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $system_id = $db->insertid(); + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '2'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '2'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_rangliste_system" + . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 50)'," + . "\n status = '1'," + . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-25.3) * LN(p))))), 1)'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $system_id = $db->insertid(); + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste_turnierdisziplin" + . "\n SET system_id = '$system_id'" + . "\n WHERE system_wertung = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste DROP system_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin DROP system_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '50'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $rangliste_aktualisieren = true; + } + + if ($datenbank_version < 51) { + $query = "ALTER TABLE #__sportsmanager_mitglied_von_verein ADD mitgliedsstatus tinyint(4) NOT NULL DEFAULT '0' AFTER verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET mitgliedsstatus = IF(ausgetreten, 0, 1)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '51'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 52) { + $query = "ALTER TABLE #__sportsmanager_spieler_import ADD mitgliedsstatus tinyint(4) NOT NULL AFTER veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_spieler_import" + . "\n SET mitgliedsstatus = 1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $query = "ALTER TABLE #__sportsmanager_spieler_import DROP ausgetreten"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '52'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 53) { + $query = "ALTER TABLE #__sportsmanager_rechnung ADD mitgliedsstatus tinyint(4) NOT NULL AFTER veranstalter_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rechnung" + . "\n SET mitgliedsstatus = 1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '53'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 54) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin` (" + . "\n `termin_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `termin_bezug_id` int(11) NOT NULL," + . "\n `erster_tag` date NOT NULL," + . "\n `letzter_tag` date NOT NULL," + . "\n `bezeichnung` text NOT NULL," + . "\n `beschreibung` text NOT NULL," + . "\n `ort` text NOT NULL," + . "\n `land` text NOT NULL," + . "\n `url` text NOT NULL," + . "\n `email` text NOT NULL," + . "\n `bestaetigt` tinyint(1) NOT NULL," + . "\n PRIMARY KEY (`termin_id`)," + . "\n KEY `termin_bezug_id` (`termin_bezug_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_aktion` (" + . "\n `termin_aktion_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `termin_id` int(11) NOT NULL," + . "\n `typ` tinyint(4) NOT NULL," + . "\n `kommentar` text NOT NULL," + . "\n `aktion_user_id` int(11) NOT NULL DEFAULT '0'," + . "\n `aktion_zeitpunkt` datetime NOT NULL," + . "\n `moderation_user_id` int(11) DEFAULT '0'," + . "\n `moderation_zeitpunkt` datetime," + . "\n `status` tinyint(4) NOT NULL," + . "\n PRIMARY KEY (`termin_aktion_id`)," + . "\n KEY `termin_id` (`termin_id`)," + . "\n KEY `typ` (`typ`)," + . "\n KEY `status` (`status`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnung` (" + . "\n `termin_bezeichnung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnung` text NOT NULL," + . "\n PRIMARY KEY (`termin_bezeichnung_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bundesland` (" + . "\n `termin_bundesland_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bundesland` text NOT NULL," + . "\n PRIMARY KEY (`termin_bundesland_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_land` (" + . "\n `termin_land_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `land` text NOT NULL," + . "\n PRIMARY KEY (`termin_land_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_zusatz` (" + . "\n `termin_zusatz_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `termin_id` int(11) NOT NULL," + . "\n `zusatz` text NOT NULL," + . "\n PRIMARY KEY (`termin_zusatz_id`)," + . "\n KEY `termin_id` (`termin_id`)," + . "\n KEY `ix_length_zusatz` (`zusatz`(16))" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnungszusatz` (" + . "\n `termin_bezeichnungszusatz_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bezeichnungszusatz` text NOT NULL," + . "\n `titel` text NOT NULL," + . "\n PRIMARY KEY (`termin_bezeichnungszusatz_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Challenger'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Meeting'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'ITSF Master'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'ITSF Pro'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'ITSF WCS'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '2. Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Frauen-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '2. Frauen-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Junioren-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '2. Junioren-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Senioren-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = '2. Senioren-Bundesliga'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Sonstiges'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnung" + . "\n SET bezeichnung = 'Deutsche Meisterschaft'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'OD'," + . "\n titel = 'Offenes Doppel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'OE'," + . "\n titel = 'Offenes Einzel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'HD'," + . "\n titel = 'Herren Doppel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'HE'," + . "\n titel = 'Herren Einzel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'DD'," + . "\n titel = 'Damen Doppel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'DE'," + . "\n titel = 'Damen Einzel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'JD'," + . "\n titel = 'Junioren Doppel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'JE'," + . "\n titel = 'Junioren Einzel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'SD'," + . "\n titel = 'Senioren Doppel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" + . "\n SET bezeichnungszusatz = 'SE'," + . "\n titel = 'Senioren Einzel'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Baden-Württemberg'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Bayern'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Berlin'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Bremen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Hamburg'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Hessen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Niedersachsen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Nordrhein-Westfalen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Rheinland-Pfalz'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Saarland'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Sachsen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Sachsen-Anhalt'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Schleswig-Holstein'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Schweiz'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "INSERT #__sportsmanager_termin_bundesland" + . "\n SET bundesland = 'Thüringen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '54'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 55) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_moderator_zugriff` (" + . "\n `moderator_zugriff_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `moderator_id` int(11) NOT NULL," + . "\n `zugriff` varchar(64) NOT NULL," + . "\n `zusatz` text," + . "\n PRIMARY KEY (`moderator_zugriff_id`)," + . "\n KEY `moderator_id` (`moderator_id`)," + . "\n KEY `zugriff` (`zugriff`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "SELECT * FROM #__sportsmanager_moderator"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $moderator_id = $row->moderator_id; + $moderator_zugriff = $row->zugriff; + $zugriffe_admin = array( + "moderatoren_aendern", + "basiseinstellungen_aendern", + "kategorien_aendern", + "organisationen_aendern", + "saisons_aendern", + "spieler_aendern", + "spieler_lesen_erweiterte_daten", + "termine_aendern", + "termine_benachrichtigung" + ); + $zugriffe_vereine = array( + "vereine_aendern" + ); + $zugriffe_wettbewerbe = array( + "mannschaftsspielplaene_aendern", + "verschieberegeln_aendern", + "spielorte_aendern", + "einstufungen_aendern", + "mannschaftswettbewerb_aendern", + "spielerstatistiken_aendern", + "turniere_aendern", + "ranglistenwertungen_aendern", + "ranglisten_aendern", + ); + $zugriffe_verteiler = array( + "verteiler_aendern" + ); + $zugriffe_mitgliederrechnungen = array( + "rechnungen_aendern" + ); + $zugriffe_sonstige = array( + "verteiler_lesen" + ); + + if ($moderator_zugriff == 1) + $zugriffe = array_merge($zugriffe_admin, $zugriffe_vereine, $zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); + else if ($moderator_zugriff == 2) + $zugriffe = array_merge($zugriffe_vereine, $zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); + else if ($moderator_zugriff == 3) + $zugriffe = array_merge($zugriffe_wettbewerbe, $zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); + else if ($moderator_zugriff == 4) + $zugriffe = array_merge($zugriffe_verteiler, $zugriffe_sonstige); + else if ($moderator_zugriff == 5) + $zugriffe = array_merge($zugriffe_verteiler, $zugriffe_mitgliederrechnungen, $zugriffe_sonstige); + else if ($moderator_zugriff == 6) + $zugriffe = array_merge($zugriffe_mitgliederrechnungen, $zugriffe_sonstige); + else + $zugriffe = $zugriffe_sonstige; + + foreach ($zugriffe as $zugriff) { + $query = "INSERT #__sportsmanager_moderator_zugriff" + . "\n SET moderator_id = '$moderator_id'," + . "\n zugriff = '$zugriff'," + . "\n zusatz = ''"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '55'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 56) { + $query = "ALTER TABLE #__sportsmanager_moderator DROP zugriff"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '56'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 57) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_turnier` (" + . "\n `berechtigt_fuer_turnier_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," + . "\n `berechtigt_turnier_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`berechtigt_fuer_turnier_id`)," + . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," + . "\n KEY `berechtigt_turnier_id` (`berechtigt_turnier_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstaltung` (" + . "\n `berechtigt_fuer_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," + . "\n `berechtigt_veranstaltung_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`berechtigt_fuer_veranstaltung_id`)," + . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," + . "\n KEY `berechtigt_veranstaltung_id` (`berechtigt_veranstaltung_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '57'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 58) { + $query = "ALTER TABLE #__sportsmanager_spieler CHANGE email email varchar(64) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler_import CHANGE email email varchar(64) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamansprechpartner CHANGE email email varchar(64) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_vereinsansprechpartner CHANGE email email varchar(64) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '58'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 59) { + $query = "ALTER TABLE #__sportsmanager_einstellungen CHANGE name name char(64) NOT NULL DEFAULT ''"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '59'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 60) { + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_DATES_FAILED')); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '60'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 61) { + $query = "ALTER TABLE #__sportsmanager_termin_aktion DROP kommentar"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD aktion_kommentar text NOT NULL AFTER aktion_zeitpunkt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD moderation_kommentar text NOT NULL AFTER moderation_zeitpunkt"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '61'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 62) { + $pfad = JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine' . DIRECTORY_SEPARATOR . '.htaccess'; + $inhalt = "# Dokumente der Terminverwaltung\n" + . "Deny from all\n"; + if (file_put_contents($pfad, $inhalt) === FALSE) + die(Text::_('COM_SPORTSMANAGER_FILE_FAILED')); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '62'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 63) { +// Fix für ausgebliebene Aktualisierung des Ausgetretenwertes beim manuellen Ändern des Mitgliedsstatus + $query = "UPDATE #__sportsmanager_mitglied_von_verein" + . "\n SET ausgetreten = IF(mitgliedsstatus = 0, TRUE, FALSE)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '63'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 64) { + $query = "ALTER TABLE #__sportsmanager_termin ADD ergebnisse_url text NOT NULL AFTER email"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '64'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 65) { + $query = "ALTER TABLE #__sportsmanager_spieler DROP elo_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '65'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 66) { + $query = "ALTER TABLE #__sportsmanager_termin ADD ergebnisse_live bool default '0' AFTER ergebnisse_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '66'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 67) { + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin ADD kuerzel varchar(20) DEFAULT NULL AFTER disziplin"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '67'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 68) { + $query = "ALTER TABLE #__sportsmanager_turnier ADD kategorie tinyint(4) DEFAULT '1' AFTER letzter_tag"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_turnierdisziplin" + . "\n INNER JOIN #__sportsmanager_turnier" + . "\n SET #__sportsmanager_turnier.kategorie = #__sportsmanager_turnierdisziplin.kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_turnierdisziplin DROP kategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '68'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 69) { + $query = "ALTER TABLE #__sportsmanager_teamspiel ADD ergebnis_detailliert tinytext DEFAULT NULL AFTER teamspiel_gast_spielpunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '69'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 70) { + $query = "ALTER TABLE #__sportsmanager_turnier CHANGE turnierbezeichnung turnierbezeichnung varchar(64) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '70'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 71) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD doppel_teilwertung float(4,2) DEFAULT '1' AFTER wertungskategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '71'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 72) { + $query = "ALTER TABLE #__sportsmanager_rangliste DROP doppel_teilwertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin ADD doppel_teilwertung float(4,2) DEFAULT '1' AFTER wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '72'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 73) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb` (" + . "\n `individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `saison_id` int(11) NOT NULL DEFAULT '0'," + . "\n `veranstalter_id` int(11) NOT NULL DEFAULT '0'," + . "\n `bezeichnung` varchar(50) DEFAULT NULL," + . "\n `saetze` tinyint(4) DEFAULT NULL," + . "\n `tore` tinyint(4) DEFAULT NULL," + . "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `elo_wertung` tinyint(4) DEFAULT NULL," + . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `reihenfolge` tinyint(4) DEFAULT '1'," + . "\n `kategorie` tinyint(4) DEFAULT '1'," + . "\n PRIMARY KEY (`individualwettbewerb_id`)," + . "\n KEY `saison_id` (`saison_id`)," + . "\n KEY `veranstalter_id` (`veranstalter_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_spiel` (" + . "\n `individualwettbewerb_spiel_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," + . "\n `zeitpunkt` datetime DEFAULT NULL," + . "\n `heim_spieler_1_id` int(11) NOT NULL DEFAULT '0'," + . "\n `heim_spieler_2_id` int(11) DEFAULT NULL," + . "\n `gast_spieler_1_id` int(11) NOT NULL DEFAULT '0'," + . "\n `gast_spieler_2_id` int(11) DEFAULT NULL," + . "\n `ergebnis` tinyint(4) DEFAULT NULL," + . "\n `ergebnis_detailliert` tinytext DEFAULT NULL," + . "\n PRIMARY KEY (`individualwettbewerb_spiel_id`)," + . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," + . "\n KEY `zeitpunkt` (`zeitpunkt`)," + . "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`)," + . "\n KEY `heim_spieler_2_id` (`heim_spieler_2_id`)," + . "\n KEY `gast_spieler_1_id` (`gast_spieler_1_id`)," + . "\n KEY `gast_spieler_2_id` (`gast_spieler_2_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '73'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 74) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_individualwettbewerb` (" + . "\n `berechtigt_fuer_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `berechtigt_user_id` int(11) NOT NULL DEFAULT '0'," + . "\n `berechtigt_individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`berechtigt_fuer_individualwettbewerb_id`)," + . "\n KEY `berechtigt_user_id` (`berechtigt_user_id`)," + . "\n KEY `berechtigt_individualwettbewerb_id` (`berechtigt_individualwettbewerb_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '74'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 75) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_platzierung` (" + . "\n `individualwettbewerb_platzierung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," + . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," + . "\n `platz` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`individualwettbewerb_platzierung_id`)," + . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," + . "\n KEY `platz` (`platz`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '75'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 76) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_ausgangsplatzierung` (" + . "\n `individualwettbewerb_ausgangsplatzierung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," + . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," + . "\n `platz` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`individualwettbewerb_ausgangsplatzierung_id`)," + . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)," + . "\n KEY `platz` (`platz`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '76'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 77) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_individualwettbewerb` (" + . "\n `bestenliste_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," + . "\n `individualwettbewerb_id` int(11) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`bestenliste_individualwettbewerb_id`)," + . "\n KEY `bestenliste_id` (`bestenliste_id`)," + . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD spieler_2_id int(11) DEFAULT NULL AFTER spieler_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD KEY (spieler_2_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_gewonnen smallint(6) DEFAULT NULL AFTER spielpunkte_verloren"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_unentschieden smallint(6) DEFAULT NULL AFTER saetze_gewonnen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_bestenliste_punkte ADD saetze_verloren smallint(6) DEFAULT NULL AFTER saetze_unentschieden"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '77'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 78) { + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CHANGE punkte_sieg punkte_sieg_einzel tinyint(4) NOT NULL DEFAULT '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD punkte_sieg_doppel tinyint(4) NOT NULL DEFAULT '0' AFTER punkte_sieg_einzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus CHANGE spielpunkte_wertung spielpunkte_wertung_einzel tinyint(4) NOT NULL DEFAULT '0'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_teamspiel_modus ADD spielpunkte_wertung_doppel tinyint(4) NOT NULL DEFAULT '0' AFTER spielpunkte_wertung_einzel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_teamspiel_modus" + . "\n SET punkte_sieg_doppel = punkte_sieg_einzel," + . "\n spielpunkte_wertung_doppel = spielpunkte_wertung_einzel;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '78'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $teamstatistik_aktualisieren = true; + } + + if ($datenbank_version < 79) { + $query = "ALTER TABLE #__sportsmanager_termin_aktion ADD benachrichtigung_email text NOT NULL AFTER typ"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n SET benachrichtigung_email = '';"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '79'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $termin_aktionen_email_setzen = true; + } + + if ($datenbank_version < 80) { + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_TEAM_COMPETITION_FAILED')); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '80'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 81) { + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD logo_url tinytext DEFAULT NULL AFTER elo_wertung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '81'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 82) { + $query = "ALTER TABLE #__sportsmanager_team CHANGE zusatzpunkte zusatzpunkte float(6,2) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team CHANGE gesamtpunkte gesamtpunkte float(6,2) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '82'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 83) { + $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD ticker_logo_url tinytext DEFAULT NULL AFTER logo_url"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '83'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 84) { + $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_einzel_startwert smallint(6) DEFAULT NULL AFTER aktueller_verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD elo_doppel_startwert smallint(6) DEFAULT NULL AFTER elo_einzel_spiele"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '84'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 85) { + $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(100) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '85'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 86) { + $query = "ALTER TABLE #__sportsmanager_team ADD buchholz1 smallint(6) DEFAULT NULL AFTER punkte_quotient"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD buchholz2 smallint(6) DEFAULT NULL AFTER buchholz1"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '86'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 87) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbolanzeige` (" + . "\n `termin_symbolanzeige_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `termin_symbol_id` int(11) NOT NULL," + . "\n `termin_id` int(11) NOT NULL," + . "\n PRIMARY KEY (`termin_symbolanzeige_id`)," + . "\n KEY `termin_symbol_id` (`termin_symbol_id`)," + . "\n KEY `termin_id` (`termin_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbol` (" + . "\n `termin_symbol_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `symboltitel` text NOT NULL," + . "\n `status` tinyint(1) NOT NULL DEFAULT '0'," + . "\n PRIMARY KEY (`termin_symbol_id`)," + . "\n KEY `status` (`status`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if (!Folder::create(JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole', 0777)) + die(Text::_('COM_SPORTSMANAGER_CREATE_DATES_SYMBOLS_FAILED')); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '87'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 88) { + $query = "ALTER TABLE #__sportsmanager_turniermeldung ADD KEY turnierdisziplin_rundenstufe_platz (turnierdisziplin_id, rundenstufe, platz)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_punkte ADD KEY rangliste_platz (rangliste_id, platz)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '88'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 89) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_turnierdisziplin_punkte` (" + . "\n `rangliste_id` int(11) NOT NULL," + . "\n `spieler_id` int(11) NOT NULL," + . "\n `turnierdisziplin_id` int(11) NOT NULL," + . "\n `punkte` smallint(6) DEFAULT NULL," + . "\n PRIMARY KEY (`rangliste_id`, `spieler_id`, `turnierdisziplin_id`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste_punkte DROP PRIMARY KEY, DROP rangliste_punkte_id, DROP KEY rangliste_id, DROP KEY spieler_id, ADD PRIMARY KEY(rangliste_id, spieler_id)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '89'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rangliste_aktualisieren = true; + } + + if ($datenbank_version < 90) { + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechnung` (" + . "\n `berechnung_id` int(11) NOT NULL AUTO_INCREMENT," + . "\n `session_id` varchar(200) NOT NULL," + . "\n `typ` char(64) NOT NULL DEFAULT ''," + . "\n `parameter` char(255) DEFAULT NULL," + . "\n `id` int(11) DEFAULT NULL," + . "\n PRIMARY KEY (`berechnung_id`)," + . "\n KEY `session_id` (`session_id`)," + . "\n KEY `typ` (`typ`)," + . "\n KEY `id` (`typ`)" + . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '90'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 91) { + $query = "ALTER TABLE #__sportsmanager_berechnung CHANGE session_id session_id datetime DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler_import CHANGE session_id session_id datetime DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '91'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 92) { + $query = "ALTER TABLE #__sportsmanager_rangliste_turnierdisziplin_punkte ADD platz smallint(6) DEFAULT NULL AFTER turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '92'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $rangliste_aktualisieren = true; + } + + if ($datenbank_version < 93) { + if (!bildKopierenAngepasst(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_sportsmanager' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'spieler-m.png', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . 'm.png', 180, 240, 1)) + die('Das Bild konnte nicht an die Zielposition kopiert werden.'); + + if (!bildKopierenAngepasst(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_sportsmanager' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'spieler-w.png', JPATH_ROOT . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . 'w.png', 180, 240, 1)) + die('Das Bild konnte nicht an die Zielposition kopiert werden.'); + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '93'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 94) { + $query = "ALTER TABLE #__sportsmanager_team CHANGE tischtyp tischtyp varchar(200) DEFAULT NULL"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '94'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 95) { + $query = "ALTER TABLE #__sportsmanager_rechnung ADD wertungskategorie tinyint(4) NOT NULL AFTER mitgliedsstatus"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rechnung" + . "\n SET wertungskategorie = 15"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '95'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 96) { + $query = "UPDATE #__sportsmanager_teamspiel" + . "\n SET ergebnis_detailliert = IF((ISNULL(teamspiel_heim_punkte) OR (teamspiel_heim_punkte = 0)) AND (ISNULL(teamspiel_gast_punkte) OR (teamspiel_gast_punkte = 0)), null, CONCAT_WS(':', teamspiel_heim_punkte, teamspiel_gast_punkte))"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '96'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 97) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD geschlecht tinyint(4) DEFAULT NULL AFTER wertungskategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste ADD minalter tinyint(4) DEFAULT NULL AFTER geschlecht"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste ADD maxalter tinyint(4) DEFAULT NULL AFTER minalter"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET geschlecht = IF(wertungskategorie = 1 OR wertungskategorie = 5, 1, IF(wertungskategorie = 2 OR wertungskategorie = 6, 2, null))"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET minalter = IF(wertungskategorie = 1 OR wertungskategorie = 2, 18, IF(wertungskategorie = 4, 50, null))"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET maxalter = IF(wertungskategorie = 1 OR wertungskategorie = 2, 49, IF(wertungskategorie = 3, 17, null))"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_rangliste DROP wertungskategorie"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '97'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 98) { + $query = "ALTER TABLE #__sportsmanager_begegnung ADD tisch tinytext DEFAULT NULL AFTER spielort_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '98'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 99) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD ohnealter bool DEFAULT '0' AFTER maxalter"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_rangliste" + . "\n SET ohnealter = '1'" + . "\n WHERE ISNULL(minalter) AND ISNULL(maxalter)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '99'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 100) { + $query = "ALTER TABLE #__sportsmanager_team ADD tischeigenschaften varchar(200) DEFAULT NULL AFTER tischtyp"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '100'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 101) { + $query = "ALTER TABLE #__sportsmanager_begegnung ADD nichtraucherschutz tinyint(4) DEFAULT '0' AFTER gast_spielpunkte"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_team ADD nichtraucherschutz tinyint(4) DEFAULT '0' AFTER heimspielort_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '101'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + + if ($datenbank_version < 102) { + $query = "ALTER TABLE #__sportsmanager_rangliste ADD lizenzen varchar(30) DEFAULT NULL AFTER streichergebnisse"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "ALTER TABLE #__sportsmanager_spieler ADD lizenz varchar(30) DEFAULT NULL AFTER lizenznr"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '102'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($termin_aktionen_email_setzen) { + $query = "SELECT aktion_user_id, termin_aktion_id" + . "\n FROM #__sportsmanager_termin_aktion"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + foreach ($rows as $row) { + $container = Factory::getContainer(); + $aktion_user = $container->get(UserFactory::class)->loadUserById($row->aktion_user_id); + + if (empty($aktion_user->id) || empty($aktion_user->email)) + continue; + $query = "UPDATE #__sportsmanager_termin_aktion" + . "\n SET benachrichtigung_email = '" . $db->getEscaped($aktion_user->email) . "'" + . "\n WHERE termin_aktion_id = " . $row->termin_aktion_id . ";"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + + if ($wann_gespielt_aktualisieren) + wannGespieltAktualisieren(); + + if ($teamstatistik_aktualisieren) + teamstatistikAktualisieren(); + + if ($aktueller_verein_aktualisieren) + aktuellerVereinAktualisieren(); + + if ($spielerstatistik_aktualisieren) + spielerstatistikAktualisieren(); + + if ($elo_aktualisieren) + eloAktualisieren(); + + if ($rangliste_aktualisieren) + ranglisteAktualisieren(); + + if (!redirectSessionIdEmpty()) { +// Neu laden, um etwaige offene Berechnungen auszuführen und genügend Rechenzeit für eigentlichen Seitenaufruf zu haben +// Dass Posts verloren gehen, ist unwahrscheinlich, aber wird akzeptiert // TODO: Session-Id in URL ergänzen + redirectCurrentURL(); + jexit(); + } +} From 1af673df17cdcc14f79d07a8247853109c5dd949 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 14:24:29 +0100 Subject: [PATCH 3/9] chore: update readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 633ad9d..afdea73 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,11 @@ Deployment can only be done manually right now (sad) To do this go to [Testserver Extension Installer Site](http://localhost:8080/administrator/index.php?option=com_installer&view=install) and upload the zip file found in `./package/packages` + + +### Development Tools +If you are using Intellij, there is a plugin named Joomla! which helps with resolving +joomla specific database prefixes like #__ +To set it up, insert into the configuration popup which follows after you enable the framework support: +Joomla install path: `./data/joomla_data` +JConfig: `./data/joomla_data/configuration.php` From 0f4a3242b103130c5ed12d6c46202ab3a0bbfe50 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 14:31:33 +0100 Subject: [PATCH 4/9] fix: add labels, init variables, replace deprecated joomla 3 classes, add return types, removed commented code, removed unused parameters --- .../components/com_sportsmanager/admin.php | 33122 ++++++++-------- .../components/com_sportsmanager/api.php | 393 +- .../com_sportsmanager/mathparser.php | 4875 ++- .../components/com_sportsmanager/tools.php | 659 +- .../views/sportsmanager/view.html.php | 13742 +++---- .../views/sportsmanager/view.json.php | 445 +- .../views/sportsmanager/view_admin.php | 24857 ++++++------ .../views/sportsmanager/view_ticker.php | 4287 +- .../views/sportsmanager/view_tools.php | 583 +- src/structure/script.php | 466 +- 10 files changed, 41115 insertions(+), 42314 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 9dd6e8d..08ff990 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -4,3347 +4,3248 @@ */ // 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\Mail; +use Joomla\CMS\User\User; +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 adminUebersicht() { - $db = getDatabase(); - global $params; - global $content; - $jinput = JFactory::getApplication()->input; +function adminUebersicht(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); + if (!benutzerModerator() && !benutzerVeranstaltungModerator() && !benutzerTurnierModerator() && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); - $unabhaengige_ansicht = empty($content) || $content == "administration"; + $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'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + 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 (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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); - $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); + $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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $turniere = $db->loadObjectList(); - $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniere = $db->loadObjectList(); + $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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); - $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); + $statistik = array(); - $statistik = array(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_saison), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["saisons"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_saison), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["saisons"] = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel_modus), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["teamspielmodi"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_teamspiel_modus), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["teamspielmodi"] = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstalter), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["veranstalter"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_veranstalter), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["veranstalter"] = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_system), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["ranglistensysteme"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_system), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["ranglistensysteme"] = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["turnierdisziplinen"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["turnierdisziplinen"] = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $statistik["individualwettbewerbe"] = $db->loadResult(); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["individualwettbewerbe"] = $db->loadResult(); - - HTML_sportsmanager_admin::adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $unabhaengige_ansicht, isExternalDatabase()); + HTML_sportsmanager_admin::adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, isExternalDatabase()); } -function adminVerteiler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminVerteiler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("verteiler_aendern") && !benutzerZugriff("verteiler_lesen")) - keinZugriff(true); + 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'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - 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 (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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verteiler = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_verteiler" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $verteiler = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $organisationen = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $organisationen = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $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 . ">"; - } - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $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 . ">"; - } - } + $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")); + HTML_sportsmanager_admin::adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, benutzerZugriff("verteiler_aendern")); } -function adminEditVerteiler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditVerteiler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } + $id = $jInput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_verteiler WHERE verteiler_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } - HTML_sportsmanager_admin::adminEditVerteiler($row); + HTML_sportsmanager_admin::adminEditVerteiler($row); } -function adminSaveVerteiler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveVerteiler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(); + if (!benutzerZugriff("verteiler_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_verteiler'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_verteiler'); + } - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - 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'); } -function adminRemoveVerteiler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveVerteiler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("verteiler_aendern")) - keinZugriff(true); + if (!benutzerZugriff("verteiler_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_verteiler WHERE verteiler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "DELETE FROM #__sportsmanager_verteiler WHERE verteiler_id = $id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - redirectSportsManagerURL('&task=admin_verteiler'); + redirectSportsManagerURL('&task=admin_verteiler'); } -function adminRechnungen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminRechnungen(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); + 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'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + $query = "SELECT saison_id, saisonbezeichnung" + . "\n FROM #__sportsmanager_saison" + . "\n ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - if (count($saisons) == 0) - die("Wrong id!"); + if (count($saisons) == 0) + die("Wrong id!"); - $gefunden = false; - 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; - $saison = $saisons[0]; - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rechnungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rechnungen = $db->loadObjectList(); - $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" -// . " (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 HAVING neuzugaenge > 0" - . "\n ORDER BY zuordnungbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $neuzugaenge = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $neuzugaenge = $db->loadObjectList(); - $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" -// . " (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 zuordnungbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aufsummierung = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aufsummierung = $db->loadObjectList(); - HTML_sportsmanager_admin::adminRechnungen($rechnungen, $neuzugaenge, $aufsummierung, $saisons, $filter_saison_id, $saison); + HTML_sportsmanager_admin::adminRechnungen($rechnungen, $neuzugaenge, $aufsummierung, $filter_saison); } -function adminEditRechnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditRechnung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); - HTML_sportsmanager_admin::adminEditRechnung($row, $veranstalter, $vereine); + HTML_sportsmanager_admin::adminEditRechnung($row, $veranstalter, $vereine); } -function adminSaveRechnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveRechnung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(); + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_rechnungen'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_rechnungen'); + } - return; - } + $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'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - $query = "SELECT saison_id, saisonbezeichnung" - . "\n FROM #__sportsmanager_saison" - . "\n ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + 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 (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"); - 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(); - $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) - array_push($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 (!$result = $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + 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(); - foreach ($veranstalter as $row) { - $verein_id = $row->verein_id; - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, verein_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$verein_id', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + 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(); - foreach ($veranstalter as $row) { - $veranstalterid = $row->veranstalter_id; - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $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)); + } + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - else { - $query = "INSERT INTO #__sportsmanager_rechnung (saison_id, bezeichnung, notiz, veranstalter_id, mitgliedsstatus) VALUES ('$filter_saison_id', '$bezeichnung', '$notiz', '$veranstalterid', '$mitgliedsstatus');"; - $db->setQuery($query); - if (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_rechnungen'); + redirectSportsManagerURL('&task=admin_rechnungen'); } -function adminRemoveRechnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveRechnung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("rechnungen_aendern")) - keinZugriff(true); + if (!benutzerZugriff("rechnungen_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_rechnung_spieler WHERE rechnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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'); + redirectSportsManagerURL('&task=admin_rechnungen'); } -function adminEinstellungen() { - $db = getDatabase(); +function adminEinstellungen(): void +{ + $db = getDatabase(); - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(true); + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(true); - $query = "SELECT * FROM #__sportsmanager_einstellungen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_einstellungen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $einstellungen = array(); - foreach ($rows as $row) - $einstellungen[$row->name] = $row->wert; + $einstellungen = array(); + foreach ($rows as $row) + $einstellungen[$row->name] = $row->wert; - HTML_sportsmanager_admin::adminEinstellungen($einstellungen); + HTML_sportsmanager_admin::adminEinstellungen($einstellungen); } -function adminSaveEinstellungen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveEinstellungen(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(); + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + } - return; - } + $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'); + $termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT'); + $spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); - $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'); - $termine_beantragen = $jinput->get('termine_beantragen', 0, 'INT'); - $spielerimport_persoenliche_daten_vorauswahl = $jinput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); + $api_push_key = $jInput->get('api_push_key', '', 'RAW'); - $api_push_key = $jinput->get('api_push_key', '', 'RAW'); - - /* - $twitter_benutzername = $db->escape(trim( $jinput->get('twitter_benutzername', '', 'RAW') )); - $twitter_kennwort = !empty($twitter_benutzername) ? $db->escape(trim( $jinput->get('twitter_kennwort', '', 'RAW') )) : ""; + /* + $twitter_benutzername = $db->escape(trim( $jInput->get('twitter_benutzername', '', 'RAW') )); + $twitter_kennwort = !empty($twitter_benutzername) ? $db->escape(trim( $jInput->get('twitter_kennwort', '', 'RAW') )) : ""; */ - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'basis_spielernr'" - . ", wert = '$basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { + if (!$db->execute()) { die($db->stderr(true)); } - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'ansprechpartner_ausblenden'" - . ", wert = '$ansprechpartner_ausblenden'"; - $db->setQuery($query); - if (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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" . "\n SET name = 'twitter_benutzername'" . ", wert = '$twitter_benutzername'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } if (empty($twitter_benutzername) || !empty($twitter_kennwort)) { $query = "REPLACE #__sportsmanager_einstellungen" . "\n SET name = 'twitter_kennwort'" . ", wert = '$twitter_kennwort'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } } */ - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminDatenbank() { - $db = getDatabase(true); +function adminDatenbank(): void +{ + $db = getDatabase(true); - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(true); + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(true); - $query = "SELECT * FROM #__sportsmanager_einstellungen"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_einstellungen"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $einstellungen = array(); - foreach ($rows as $row) - $einstellungen[$row->name] = $row->wert; + $einstellungen = array(); + foreach ($rows as $row) + $einstellungen[$row->name] = $row->wert; - HTML_sportsmanager_admin::adminDatenbank($einstellungen); + HTML_sportsmanager_admin::adminDatenbank($einstellungen); } -function adminSaveDatenbank() { - $db = getDatabase(true); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveDatenbank(): void +{ + $db = getDatabase(true); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("basiseinstellungen_aendern")) - keinZugriff(); + if (!benutzerZugriff("basiseinstellungen_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + } - return; - } + $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 .= "/"; - $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 && substr($joomla_url, strlen($joomla_url) - 1, 1) != "/") - $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_driver'" - . ", wert = '$database_driver'"; - $db->setQuery($query); - if (!$result = $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_host'" - . ", wert = '$database_host'"; - $db->setQuery($query); - if (!$result = $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_user'" - . ", wert = '$database_user'"; - $db->setQuery($query); - if (!$result = $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_password'" - . ", wert = '$database_password'"; - $db->setQuery($query); - if (!$result = $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_database'" - . ", wert = '$database_database'"; - $db->setQuery($query); - if (!$result = $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 = 'database_prefix'" - . ", wert = '$database_prefix'"; - $db->setQuery($query); - if (!$result = $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_path'" - . ", wert = '$joomla_path'"; - $db->setQuery($query); - if (!$result = $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)); + } - $query = "REPLACE #__sportsmanager_einstellungen" - . "\n SET name = 'joomla_url'" - . ", wert = '$joomla_url'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminSpieler($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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"; + $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); + 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'); + $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["aktiv"] = $db->loadResult(); - $jahr = date("Y"); - $db->setQuery($query . "\n WHERE " . ($jahr - 18) . " <= geburtsjahr"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["J aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE " . ($jahr - 50) . " > geburtsjahr"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["S aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE geschlecht = 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["H aktiv"] = $db->loadResult(); - $db->setQuery($query . "\n WHERE geschlecht <> 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["D aktiv"] = $db->loadResult(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["aktiv"] = $db->loadResult(); + $jahr = date("Y"); + $db->setQuery($query . "\n WHERE " . ($jahr - 18) . " <= geburtsjahr"); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["J aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE " . ($jahr - 50) . " > geburtsjahr"); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["S aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE geschlecht = 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["H aktiv"] = $db->loadResult(); + $db->setQuery($query . "\n WHERE geschlecht <> 'M' AND (ISNULL(geburtsjahr) OR (" . ($jahr - 18) . " > geburtsjahr AND " . ($jahr - 50) . " <= geburtsjahr))"); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["D aktiv"] = $db->loadResult(); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["eingeschraenkt"] = $db->loadResult(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["eingeschraenkt"] = $db->loadResult(); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahlSpieler["passiv"] = $db->loadResult(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahlSpieler["passiv"] = $db->loadResult(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - } - else if (isset($search) && $search != "" && ($beschraenkter_zugriff == 0 || $ansprechpartner_spielerdaten_bearbeiten)) { - $searchEscapedWildcards = strpos($search, "*") !== false ? ($db->escape(trim(mb_strtolower(str_replace("*", "%", $search), 'UTF-8')))) : ("%" . $db->escape(trim(mb_strtolower($search, 'UTF-8'))) . "%"); - $searchEscaped = $db->escape(trim($search)); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + } 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - if (count($rows) > 100) { - redirectSportsManagerURL('&task=admin_spieler', "Mehr als 100 Spieler gefunden, bitte genaueren Filter verwenden."); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - return; - } - } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + if (count($rows) > 100) + $rows = null; + } else + $rows = null; - if (count($rows) > 100) - $rows = null; - } - else - $rows = null; - - $statistik = array(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(spielernr) AND spielernr <> ''), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["spielernr_national"] = $db->loadResult(); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_spieler WHERE NOT ISNULL(lizenznr) AND lizenznr <> ''), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $statistik["spielernr_international"] = $db->loadResult(); - - HTML_sportsmanager_admin::adminSpieler($filter, $rows, $anzahlSpieler, $admin_uebersicht, $beschraenkter_zugriff, $ansprechpartner_importieren, $ansprechpartner_exportieren, $ansprechpartner_spielerdaten_bearbeiten, $ansprechpartner_bilder_bearbeiten, $statistik); + HTML_sportsmanager_admin::adminSpieler($filter, $rows, $anzahlSpieler, $admin_uebersicht, $beschraenkter_zugriff, $ansprechpartner_importieren, $ansprechpartner_exportieren, $ansprechpartner_spielerdaten_bearbeiten, $ansprechpartner_bilder_bearbeiten); } -function adminEditSpieler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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"; + $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); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $spieler = $rows[0]; - else - $spieler = null; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 * 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) - keinZugriff(true); - } + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsmitgliedschaften = $db->loadObjectList(); - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereinsmitgliedschaften = $db->loadObjectList(); + } - // Nächste Spieler-Nr. ermitteln - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); - $naechste_spielernr = $rows[0]->wert; - if (empty($naechste_spielernr)) - $naechste_spielernr = "1"; + // Nächste Spieler-Nr. ermitteln + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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); + HTML_sportsmanager_admin::adminEditSpieler($spieler, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten); } -function adminSaveSpieler() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[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"; + $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(); + 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'))); - $geburtsdatum = 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'))); - $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'); + $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'))); + $geburtsdatum = 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'))); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); + } - return; - } + $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'); + } - $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; - array_push($vereinsmitgliedschaften, $verein_id); - array_push($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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n == 0) + keinZugriff(); + } - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n == 0) - keinZugriff(); - } + if (strlen($spielernr) > 0) { + $query = "SELECT COUNT(*) FROM #__sportsmanager_spieler WHERE spielernr = '$spielernr' AND spieler_id != $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) { + redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_PLAYER_NO_USED')); + } + } - if (strlen($spielernr) > 0) { - $query = "SELECT COUNT(*) FROM #__sportsmanager_spieler WHERE spielernr = '$spielernr' AND spieler_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bestehende_vereinsmitgliedschaften = $db->loadObjectList(); - return; - } - } + 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)); + } + } + } - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_vereinsmitgliedschaften = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - //if ($id != 0) - // $rangliste_und_elo_aktualisieren = TRUE; - } - } + 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)); + } + } + } + } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); + if ($id == 0 && !$beschraenkter_zugriff) { + $query = "INSERT INTO #__sportsmanager_spieler " + . "(vorname, nachname, lizenz, pseudonym, geschlecht, geburtsdatum, geburtsjahr, strasse, plz, ort, landeskennung, telefon, mobil, email, spielernr, lizenznr, elo_einzel_startwert, elo_doppel_startwert, bild_ausblenden) " + . "VALUES ('$vorname', " + . "'$nachname', " + . "'$lizenz', " + . "'$pseudonym', " + . "'$geschlecht', " + . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . ", " + . ($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(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - // if ($id != 0) - // $rangliste_und_elo_aktualisieren = 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - // if ($id != 0) - // $rangliste_und_elo_aktualisieren = TRUE; - } - } - } + // Vereinsmitgliedschaften erzeugen + foreach ($vereinsmitgliedschaften as $index => $verein_id) { + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE verein_id = $verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); - if ($id == 0 && !$beschraenkter_zugriff) { - $query = "INSERT INTO #__sportsmanager_spieler " - . "(vorname, nachname, lizenz, pseudonym, geschlecht, geburtsdatum, geburtsjahr, strasse, plz, ort, landeskennung, telefon, mobil, email, spielernr, lizenznr, elo_einzel_startwert, elo_doppel_startwert, bild_ausblenden) " - . "VALUES ('$vorname', " - . "'$nachname', " - . "'$lizenz', " - . "'$pseudonym', " - . "'$geschlecht', " - . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . ", " - . ($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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); + 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")) { - // Vereinsmitgliedschaften erzeugen - foreach ($vereinsmitgliedschaften as $index => $verein_id) { - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE verein_id = $verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=admin_spieler', "Der Spieler existiert nicht mehr!"); + } + $spieler = $rows[0]; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - if ($id != 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "2")) { + if ($spieler->elo_einzel_startwert != $elo_startwert_einzel || $spieler->elo_doppel_startwert != $elo_startwert_doppel) + $elo_aktualisieren = true; - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_spieler', "Der Spieler existiert nicht mehr!"); + $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 geburtsdatum = " . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . "," + . "\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"; - return; - } - $spieler = $rows[0]; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - if ($spieler->elo_einzel_startwert != $elo_startwert_einzel || $spieler->elo_doppel_startwert != $elo_startwert_doppel) - $elo_aktualisieren = true; + if ($geburtsjahr != $spieler->geburtsjahr || $geschlecht != $spieler->geschlecht) + $rangliste_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 geburtsdatum = " . ($geburtsdatum == null ? "NULL" : "'$geburtsdatum'") . "," - . "\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"; + if ($elo_aktualisieren) + eloAktualisieren($spieler->erstmals_gespielt); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + if ($bildbeibehalten == 0 && (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3")) { + bildLoeschen('spieler', $id); - if ($geburtsjahr != $spieler->geburtsjahr || $geschlecht != $spieler->geschlecht) - $rangliste_aktualisieren = true; - } + 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')); + } + } + } + } - if ($elo_aktualisieren) - eloAktualisieren($spieler->erstmals_gespielt); + aktuellerVereinAktualisieren($id); + if ($rangliste_aktualisieren) { + ranglisteAktualisieren(0, 0, $id); + einstufungAktualisieren(); + } - 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 == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] < 60 || $size[1] < 60 || $size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); - - return; - } - $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', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); - - return; - } - } - } - } - - aktuellerVereinAktualisieren($id); - if ($rangliste_aktualisieren) { - ranglisteAktualisieren(0, 0, $id); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $id); } -function adminRemoveSpieler() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveSpieler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); - $filter = $jinput->get('filter', '', 'RAW'); - $id = $jinput->get('id', 0, 'INT'); + $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung_spieler WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_mitglied_von_team WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung WHERE spieler_id = $id), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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); + bildLoeschen("spieler", $id); - spielerstatistikAktualisieren(); + spielerstatistikAktualisieren(); - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); } -function adminGroomingMehrfacheMitgliedschaften() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminGroomingMehrfacheMitgliedschaften(): void +{ + $db = getDatabase(); - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitglieder = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $mitglieder = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } + $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'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminSpielerZusammenlegenForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminSpielerZusammenlegenForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); - $filter = $jinput->get('filter', '', 'RAW'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $query = "SELECT spieler_id, vorname, nachname, spielernr, aktueller_verein_id" + . "\n FROM #__sportsmanager_spieler" + . "\n ORDER BY nachname, vorname, spielernr, aktueller_verein_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - HTML_sportsmanager_admin::adminSpielerZusammenlegen($spieler, $filter); + HTML_sportsmanager_admin::adminSpielerZusammenlegen($spieler, $filter); } -function adminSpielerZusammenlegen() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSpielerZusammenlegen(): void +{ + $db = getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); + 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'); + $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 ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); + } - return; - } + 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 ($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); - return; - } + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_beizubehalten_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter), "Beizubehaltender Spieler existiert nicht."); + } - if (!ini_get('safe_mode')) - set_time_limit(300); + $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_beizubehalten_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter), "Beizubehaltender Spieler existiert nicht."); - } - $spieler_beizubehalten = $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 = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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_punkte" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 = "DELETE FROM #__sportsmanager_rangliste_punkte" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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_turniermeldung_spieler" - . "\n SET spieler_id = $spieler_beizubehalten_id" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 heim_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 heim_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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_teamspiel" - . "\n SET gast_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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_teamspiel" - . "\n SET gast_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE gast_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 heim_spieler_1_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_1_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 heim_spieler_2_id = $spieler_beizubehalten_id" - . "\n WHERE heim_spieler_2_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 = "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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "SELECT DISTINCT individualwettbewerb_id" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + foreach ($individualwettbewerbe as $individualwettbewerb) { + $individualwettbewerbId = $individualwettbewerb->individualwettbewerb_id; - $query = "SELECT DISTINCT individualwettbewerb_id" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE spieler_id = $spieler_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbId" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); - foreach ($individualwettbewerbe as $individualwettbewerb) { - $individualwettbewerbid = $individualwettbewerb->individualwettbewerb_id; + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + $platzierungen[] = $ausgangsplatzierung->spieler_id; - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); + $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 = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_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)); + } + } - $spieler_beizubehalten_platzierung = array_search($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); + $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)); + } + } + } - $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 (!$result = $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)); + } + } + } - $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 (!$result = $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)); + } - 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 (!$result = $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 = "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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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)); + } - $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 (!$result = $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)); + } - $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 (!$result = $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 . '.'; - $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + if (!File::exists($neues_bild_pfad . 'png') && !File::exists($neues_bild_pfad . 'jpg')) { + $altes_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_zu_entfernen_id . '.'; - $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($altes_bild_pfad . 'png')) + File::copy($altes_bild_pfad . 'png', $neues_bild_pfad . 'png'); + else if (File::exists($altes_bild_pfad . 'jpg')) + File::copy($altes_bild_pfad . 'jpg', $neues_bild_pfad . 'jpg'); + } - if (!JFile::exists($neues_bild_pfad . 'png') && !JFile::exists($neues_bild_pfad . 'jpg')) { - $altes_bild_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $spieler_zu_entfernen_id . '.'; + bildLoeschen("spieler", $spieler_zu_entfernen_id); - if (JFile::exists($altes_bild_pfad . 'png')) - JFile::copy($altes_bild_pfad . 'png', $neues_bild_pfad . 'png'); - else if (JFile::exists($altes_bild_pfad . 'jpg')) - JFile::copy($altes_bild_pfad . 'jpg', $neues_bild_pfad . 'jpg'); - } + if (!empty($spieler_zu_entfernen->erstmals_gespielt)) { + wannGespieltAktualisieren(); + individualwettbewerbTabelleAktualisieren(); + eloAktualisieren($spieler_zu_entfernen->erstmals_gespielt); + } + spielerstatistikAktualisieren(); + aktuellerVereinAktualisieren($spieler_beizubehalten_id); + ranglisteAktualisieren(); + einstufungAktualisieren(); - 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); + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); } -function adminRemoveInaktiveSpielerForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminRemoveInaktiveSpielerForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(true); - $filter = $jinput->get('filter', '', 'RAW'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - HTML_sportsmanager_admin::adminRemoveInaktiveSpieler($spieler, $filter); + HTML_sportsmanager_admin::adminRemoveInaktiveSpieler($spieler, $filter); } -function adminRemoveInaktiveSpieler() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveInaktiveSpieler(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); + if (!benutzerZugriff("spieler_aendern")) + keinZugriff(); - $spieler_beizubehalten_ids = $jinput->get('spielerids', array(), 'ARRAY'); - $filter = $jinput->get('filter', '', 'RAW'); + $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)); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); + } - return; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $bilder_spieler_ids = array(); - $bilder_spieler_ids = array(); + foreach ($spieler as $s) { + $id = $s->spieler_id; - foreach ($spieler AS $s) { - $id = $s->spieler_id; + if (in_array($id, $spieler_beizubehalten_ids)) + continue; - if (in_array($id, $spieler_beizubehalten_ids)) - continue; + $bilder_spieler_ids[] = $id; - array_push($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_mitglied_von_verein WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $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)); + } + } - $query = "DELETE FROM #__sportsmanager_spieler WHERE spieler_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + spielerstatistikAktualisieren(); - spielerstatistikAktualisieren(); + foreach ($bilder_spieler_ids as $id) + bildLoeschen("spieler", $id); - foreach ($bilder_spieler_ids AS $id) - bildLoeschen("spieler", $id); - - redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter) . '#id' . $spieler_beizubehalten_id); + redirectSportsManagerURL('&task=admin_spieler&filter=' . urlencode($filter)); } -function adminImportSpielerForm() { - $db = getDatabase(); +function adminImportSpielerForm(): void +{ + $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + if (!benutzerZugriff("spieler_aendern") && !(($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator())) + keinZugriff(true); - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (($ansprechpartner_importieren == 1 || $ansprechpartner_importieren == 2) && benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(true); - - HTML_sportsmanager_admin::adminImportSpieler(); + HTML_sportsmanager_admin::adminImportSpieler(); } -function adminImportSpielerDetailsForm() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; +function adminImportSpielerDetailsForm(): void +{ + $db = getDatabase(); + global $_FILES; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + $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 if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); + 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 ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + } - return; - } + $query = "SELECT DISTINCT session_id" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT DISTINCT session_id" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id < SUBTIME(NOW(), '00:05:00')"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + foreach ($rows as $row) { + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '$row->session_id'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } - foreach ($rows as $row) { - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '$row->session_id'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { + redirectSportsManagerURL('&task=admin_spieler', Text::_('COM_SPORTSMANAGER_NO_FILE_SPECIFIED')); + } - if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('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')); + } - return; - } + $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 = ","; - $handle = fopen($_FILES["daten"]["tmp_name"], "r"); - if (!$handle) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_COULD_NOT_OPEN_FILE')); + $spalte = array(); - return; - } - if (feof($handle)) { - redirectSportsManagerURL('&task=admin_spieler', JText::_('COM_SPORTSMANAGER_FILE_IS_EMPTY')); + 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)); - return; - } + 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))); - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - if (substr($titelzeile, 0, 4) == "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 (strpos($titelzeile, "\t") !== false) - $trennzeichen = "\t"; - else if (strpos($titelzeile, ";") !== false) - $trennzeichen = ";"; - else - $trennzeichen = ","; + 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; + } - $spalte = array(); + if (((!isset($spalte["nachname"]) || !isset($spalte["vorname"])) && !isset($spalte["name,vorname"])) || !isset($spalte["spielernr"])) { + redirectSportsManagerURL('&task=admin_spieler', "Die übergebene Datei ist keine Spielerdatei."); + } + } - if (substr($titelzeile, 0, 14) == ";All licensees" || substr($titelzeile, 0, 24) == ";All validated licensees") { - // ITSF-Export - $lizenz_import = true; - $buffer = $titelzeile; - while (!feof($handle) && strpos($buffer, "Profession") === false) - $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)); + $session_id = date('Y-m-d H:i:s'); - 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))); + while (!feof($handle)) { + $buffer = chop(utf8_encode(fgets($handle, 4096))); + $daten = explode($trennzeichen, $buffer); - 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 == "mannschaft" || $bezeichnung == "teamname") - $spalte["teamname"] = $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 (substr($bezeichnung, 0, 4) == "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 == "beruf") - $spalte["beruf"] = $index; - else if ($bezeichnung == "austritt" || $bezeichnung == "ausgetreten") - $spalte["ausgetreten"] = $index; - else if ($bezeichnung == "mitgliedsstatus") - $spalte["mitgliedsstatus"] = $index; - } + 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["nachname"]) || !isset($spalte["vorname"])) && !isset($spalte["name,vorname"])) || !isset($spalte["spielernr"])) { - redirectSportsManagerURL('&task=admin_spieler', "Die übergebene Datei ist keine Spielerdatei."); + 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; - return; - } - } + if ($vorname == "" || $nachname == "") + continue; - $session_id = date('Y-m-d H:i:s'); + $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; + } -// $veranstalter_import = array(); + if ($mitgliedsstatus == 0) + continue; - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - $daten = explode($trennzeichen, $buffer); + $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"]] : ""; - 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"]) && isset($daten[$spalte["mitgliedsstatus"]]) && !empty($daten[$spalte["mitgliedsstatus"]])) { - $s = strtolower($daten[$spalte["mitgliedsstatus"]]); - if ($s == "ausgetreten") - $mitgliedsstatus = 0; - else if ($s == "passiv") - $mitgliedsstatus = 3; - else if (substr($s, 0, 9) == "eingeschr") - $mitgliedsstatus = 2; - } - else if (isset($spalte["ausgetreten"]) && isset($daten[$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($spalte["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 == false) { - $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 = isset($daten[$spalte["plz"]]) ? $daten[$spalte["plz"]] : ""; - if (isset($spalte["ort"])) - $ort = isset($daten[$spalte["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"]] : ""; - $beruf = isset($spalte["beruf"]) && isset($daten[$spalte["beruf"]]) ? $daten[$spalte["beruf"]] : ""; - - $query = "INSERT #__sportsmanager_spieler_import" - . "\n SET session_id = '" . $db->escape($session_id) . "'," - . "\n vorname = '" . $db->escape($vorname) . "'," - . "\n nachname = '" . $db->escape($nachname) . "'"; - if (isset($spalte["spielernr"])) - $query .= ",\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["geburtsdatum"])) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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["geburtsdatum"])) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + 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); + } + 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 <> ''"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $lizenzen_aktualisiert = $db->loadResult(); + 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 <> ''"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $lizenzen_aktualisiert = $db->loadResult(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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)); + } - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); + HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); - return; - } + return; + } - $spalten = array(); - if (isset($spalte["pseudonym"])) - array_push($spalten, "pseudonym"); - if (isset($spalte["geschlecht"])) - array_push($spalten, "geschlecht"); - if (isset($spalte["spielernr"])) - array_push($spalten, "spielernr"); - if (isset($spalte["spielernr_alt"])) - array_push($spalten, "spielernr_alt"); - if (isset($spalte["lizenznr"])) - array_push($spalten, "lizenznr"); - if (isset($spalte["organisation"])) - array_push($spalten, "organisation"); - if (isset($spalte["vereinssitz"])) - array_push($spalten, "vereinssitz"); - if (isset($spalte["vereinsname"])) - array_push($spalten, "vereinsname"); - if (isset($spalte["geburtsdatum"])) - array_push($spalten, "geburtsdatum"); - if (isset($spalte["geburtsjahr"]) || isset($spalte["geburtsdatum"])) - array_push($spalten, "geburtsjahr"); - if (isset($spalte["email"])) - array_push($spalten, "email"); - if (isset($spalte["strasse"])) - array_push($spalten, "strasse"); - if (isset($spalte["strasse"])) - array_push($spalten, "strasse"); - if (isset($spalte["plz/ort"]) || isset($spalte["plz"])) - array_push($spalten, "plz"); - if (isset($spalte["plz/ort"]) || isset($spalte["ort"])) - array_push($spalten, "ort"); - if (isset($spalte["landeskennung"])) - array_push($spalten, "landeskennung"); - if (isset($spalte["telefon"])) - array_push($spalten, "telefon"); - if (isset($spalte["mobil"])) - array_push($spalten, "mobil"); - array_push($spalten, "mitgliedsstatus"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter"; + if ($beschraenkter_zugriff) + $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); + $query .= "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $query = "SELECT DISTINCT veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); + $query = "SELECT DISTINCT veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - if (count($rows) > 0) - $veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] = $rows[0]->veranstalter_id; - } + 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) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine_import = $db->loadObjectList(); - $vereine_import_anzahl = count($vereine_import); + $query = "SELECT DISTINCT vereinsname, veranstalterbezeichnung" + . "\n FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine_import = $db->loadObjectList(); - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_verein"; - if ($beschraenkter_zugriff) - $query .= "\n WHERE" . veranstalterFilter("veranstalter_id IN"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine_aktuell_anzahl = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + } else { + $verein_import = ""; + $vereine = array(); + } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - } - 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"), $vereine_import_anzahl, $vereine_aktuell_anzahl); + 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 adminImportSpielerVorschau() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; +function adminImportSpielerVorschau(): void +{ + $db = getDatabase(); + global $_FILES; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + $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 if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); + 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 ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + } - return; - } + if (!ini_get('safe_mode')) + set_time_limit(300); - if (!ini_get('safe_mode')) - set_time_limit(300); + $session_id = $jInput->get('session_id', '', 'RAW'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); - $query = "SELECT DISTINCT veranstalterbezeichnung" - . "\n FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); + $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++; + } - $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++; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielervergleich = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielervergleich = $db->loadObjectList(); + if (count($spielervergleich) > 0) { + $spielernr_aendern = true; + $s1 = $spielervergleich[0]; + $query = "SELECT nachname, vorname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE spielernr = '$s1->spielernr'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - if (count($spielervergleich) > 0) { - $spielernr_aendern = true; - $s1 = $spielervergleich[0]; - $query = "SELECT nachname, vorname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE spielernr = '$s1->spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + 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 (count($spieler) > 0) { - $s2 = $spieler[0]; - if ($s1->vorname == $s2->vorname && $s1->nachname == $s1->nachname) { - $query = "UPDATE #__sportsmanager_spieler_import" - . "\n SET spielernr_alt = NULL"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielernr_aendern = false; - } - } + if ($spielernr_aendern) { + $query = "SELECT nachname, vorname" + . "\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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $konflikte = $db->loadObjectList(); - if ($spielernr_aendern) { - $query = "SELECT nachname, vorname" - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $konflikte = $db->loadObjectList(); + if (count($konflikte) > 0) { + HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); - if (count($konflikte) > 0) { - HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); + return; + } + } + } + } - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler_import = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_import = $db->loadObjectList(); + $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) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler_zugeordnet = $db->loadObjectList(); - $import_verweigern = false; - if ($beschraenkter_zugriff) { - $eintraege_zugeordnet = 0; - $eintraege_nicht_zugeordnet = 0; - 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) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_zugeordnet = $db->loadObjectList(); + if (count($spieler_zugeordnet) > 0 && $spieler_zugeordnet[0]->nicht_zugeordnet > ($spieler_zugeordnet[0]->zugeordnet / 2)) + $import_verweigern = true; + } + } - if (count($spieler_zugeordnet) > 0 && $spieler_zugeordnet[0]->nicht_zugeordnet > ($spieler_zugeordnet[0]->zugeordnet / 2)) - $import_verweigern = true; - } - } + if ($import_verweigern) { + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } - if ($import_verweigern) { - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - 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')); + 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() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; +function adminImportSpieler(): void +{ + $db = getDatabase(); + global $_FILES; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $ansprechpartner_importieren = einstellungswert("ansprechpartner_importieren"); + $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 if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); + 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 ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + } - return; - } - - if (!ini_get('safe_mode')) - set_time_limit(300); + 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'); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter_import = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter_import = $db->loadObjectList(); - $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++; - } + $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. + /* + * 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" + . "\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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $konflikte = $db->loadObjectList(); - 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 (count($konflikte) > 0) { + HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); -*/ + return; + } - if (isset($spalten["spielernr_alt"])) { - $query = "SELECT nachname, vorname" - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $konflikte = $db->loadObjectList(); + $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)); + } + } - if (count($konflikte) > 0) { - HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $kategorie_potentiell_geaendert = $db->loadResult(); - 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 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler_import = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id!"); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $kategorie_potentiell_geaendert = $db->loadResult(); + // 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)); + } + } - $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" - // "namensgleich", "nachname_alt", "vorname_alt" 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 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(nachname_alt) OR NOT ISNULL(vorname_alt), 0, 1), nachname, vorname"; - . "\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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_import = $db->loadObjectList(); + // Nächste Spieler-Nr. ermitteln + $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 0) + die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); + $naechste_spielernr = $rows[0]->wert; + if (empty($naechste_spielernr)) + $naechste_spielernr = "1"; - if (empty($verein_explizit)) { - // Alle Vereinsmitgliedschaften des Verbandes vorsorglich beenden, damit diese beim Import ggf. wieder aktiviert werden können - foreach ($veranstalter as $v => $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else if ($verein_explizit != -1) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); + 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); - // 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" - . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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; + } - // Nächste Spieler-Nr. ermitteln - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'basis_spielernr'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - die("Fehler: Inkonsistenz in den MySQL-Tabellen!"); - $naechste_spielernr = $rows[0]->wert; - if (empty($naechste_spielernr)) - $naechste_spielernr = "1"; + $aktualisierungen = 0; + $spielerHinzugefuegt = array(); + $vereineHinzugefuegt = 0; + $vereineManuell = array(); + $spielerIdsHinzugefuegt = array(); - 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); + $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; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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; - } + if (empty($verein_explizit)) { + if ($organisation != $t->veranstalterbezeichnung) { + $organisation = $t->veranstalterbezeichnung; + $veranstalterId = $veranstalter[$organisation] ?? -1; + } + if ($veranstalterId == -1) + continue; + } - $aktualisierungen = 0; - $spielerHinzugefuegt = array(); - $vereineHinzugefuegt = 0; - $vereineManuell = array(); - $spielerIdsHinzugefuegt = array(); + $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; + $geburtsdatum = $t->geburtsdatum; + $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; - $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 ($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. - if (empty($verein_explizit)) { - if ($organisation != $t->veranstalterbezeichnung) { - $organisation = $t->veranstalterbezeichnung; - $veranstalterid = isset($veranstalter[$organisation]) ? $veranstalter[$organisation] : -1; - } - if ($veranstalterid == -1) - continue; - } + // 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_id = $t->spieler_id; - $nachname = $t->nachname; - $vorname = $t->vorname; - $name = $t->vorname . " " . $t->nachname; - $geschlecht = $t->geschlecht; - $spielernr = $t->spielernr; - $lizenznr = $t->lizenznr; - $pseudonym = $t->pseudonym; - $vereinsname = $t->vereinsname; - $geburtsdatum = $t->geburtsdatum; - $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; + // 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"])) + $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); + if (($persoenliche_daten == 1 || $persoenliche_daten == 2) && isset($spalten["geburtsdatum"])) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + 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)); + } + // $bearbeitungsVerlauf .= "-> Spielerdaten aktualisiert "; - 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. + $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 == 1 || $persoenliche_daten == 2) + $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); + 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(); - // 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; + $spielerHinzugefuegt[] = array($nachname, $vorname, !empty($spielernr) ? $spielernr : $naechste_spielernr); + $spielerIdsHinzugefuegt[!empty($spielernr) ? $spielernr : $naechste_spielernr] = $spieler_id; - // 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"])) - $query .= ",\n geburtsjahr = " . ($geburtsjahr == null ? "NULL" : ("'" . $db->escape($geburtsjahr) . "'")); - if (($persoenliche_daten == 1 || $persoenliche_daten == 2) && isset($spalten["geburtsdatum"])) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - // $bearbeitungsVerlauf .= "-> Spielerdaten aktualisiert "; + 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])); + } + } - $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 == 1 || $persoenliche_daten == 2) - $query .= ",\n geburtsdatum = " . ($geburtsdatum == null ? "NULL" : ("'" . $db->escape($geburtsdatum) . "'")); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler_id = $db->insertid(); + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - array_push($spielerHinzugefuegt, array($nachname, $vorname, !empty($spielernr) ? $spielernr : $naechste_spielernr)); - $spielerIdsHinzugefuegt[!empty($spielernr) ? $spielernr : $naechste_spielernr] = $spieler_id; + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - 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] == '9' - $naechste_spielernr[$i] = '0'; - } - if ($i < 0) - $naechste_spielernr = "1" . $naechste_spielernr; - } while (isset($spielerIdsHinzugefuegt[$naechste_spielernr])); - } - } + // 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"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + 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"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - 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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + // 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; + } - // 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 (!$result = $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"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + // 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)); + } + } + } + } - 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"); - $db->setQuery($query); - if (!$result = $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 vereinsname = '" . $db->escape($vereinsname) . "'" - . " AND " . ($veranstalterid == 0 ? "ISNULL(veranstalter_id)" : "veranstalter_id = $veranstalterid"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - // Wenn mehrere Vereine existieren, dann Aktualisierung auslassen - if (count($rows) > 1) { - array_push($vereineManuell, $name); - // $bearbeitungsVerlauf .= "-> Vereinsaktualiesierung übersprungen, da mehrere Vereine mit Namen existieren"; - // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verein_id = $db->insertid(); - $vereineHinzugefuegt++; - // $bearbeitungsVerlauf .= "-> Verein ergänzt "; - } - // Sonst Verein merken - else { - $verein_id = $rows[0]->verein_id; - // $bearbeitungsVerlauf .= "-> Verein gefunden "; - } - - // 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - // $bearbeitungsVerlauf .= "-> Vereinsmitgliedschaft ergänzt "; - } - } - } - // echo "(" . $name . ", " . $spielernr . ") " . $bearbeitungsVerlauf . "
"; - } - - $ausgetreteneVereineMitAktivenMitgliedern = array(); - /* + $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" @@ -3353,7313 +3254,7030 @@ function adminImportSpieler() { . " 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 (!$result = $db->execute()) { die($db->stderr(true)); } + 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) { + 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" + . "\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 (!$result = $db->execute()) { die($db->stderr(true)); } + 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 $v => $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 (!$result = $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"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - foreach ($rows as $row) - array_push($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"); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - - $query = "DELETE FROM #__sportsmanager_spieler_import" - . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - 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() { - $db = getDatabase(); - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(true); - - HTML_sportsmanager_admin::adminExportSpielerInternational(); -} - -function csvFilter($value, $decode = true) { - if ($value === null) - return ""; - if ($decode) - $value = utf8_decode($value); - $value = str_replace('"', '""', $value); - /* - $value = str_replace("\t", ' ', $value); - $value = str_replace("\r", '', $value); - $value = str_replace("\n", ' ', $value); - */ - - // escape tab characters - $value = preg_replace("/\t/", "\\t", $value); - - // escape new lines - $value = preg_replace("/\r?\n/", "\\n", $value); - - /* - // convert 't' and 'f' to boolean values - if($str == 't') $str = 'TRUE'; - if($str == 'f') $str = 'FALSE'; - */ - - // force certain number/date formats to be imported as strings - /* - if (preg_match("/^0/", $value) || preg_match("/^\+?\d{8,}$/", $value) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $value)) - $value = "'$value"; - */ - - /* - // escape fields that include double quotes - if(strstr($value, '"')) $value = '"' . str_replace('"', '""', $value) . '"'; - */ - $value = '="' . $value . '"'; - - return $value; -} - -function adminExportSpielerInternational() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spieler_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $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'))); - - $jahr = date("Y"); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL('&task=admin_spieler_export_international_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); - - return; - } - - $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() { - $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 if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - } - else { - $vereine = array(); - } - - HTML_sportsmanager_admin::adminExportSpieler($beschraenkter_zugriff, $ansprechpartner_exportieren, $veranstalter, $vereine); -} - -function adminExportSpieler() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - $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 if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spieler'); - - return; - } - - $verein_explizit = 0; - if ($beschraenkter_zugriff) { - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - 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 { - $veranstalterid = $jinput->get('veranstalterid', 0, 'INT'); - $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" - } - - if ($verein_explizit != 0) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $verein_explizit"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $verein = $rows[0]; - } - else if ($veranstalterid != 0) { - $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - if ($persoenliche_daten == 0) - $query .= ",\n geburtsjahr"; - if ($persoenliche_daten != 0) - $query .= ",\n geburtsjahr, geburtsdatum"; - 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 ($beschraenkter_zugriff == 2) - $query .= "\n WHERE " . vereinFilter("#__sportsmanager_verein.verein_id IN") . "AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"; - else 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL('&task=admin_spieler_export_form', "Zu dieser Auswahl sind keine Spielerdaten vorhanden!"); - - return; - } - - $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(); -} - -function adminExportSpielerSport() { - $db = getDatabase(); - - if (benutzerZugriff("spieler_aendern")) - $beschraenkter_zugriff = 0; - else if (benutzerVeranstalterModerator()) - $beschraenkter_zugriff = 1; -// else if (benutzerVereinModerator()) -// $beschraenkter_zugriff = 2; - else - 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" -// . " (SELECT veranstalterbezeichnung FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein, #__sportsmanager_veranstalter WHERE #__sportsmanager_spieler.spieler_id = #__sportsmanager_mitglied_von_verein.spieler_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id AND NOT #__sportsmanager_verein.ausgetreten AND #__sportsmanager_veranstalter.veranstalter_id = #__sportsmanager_verein.veranstalter_id ORDER BY #__sportsmanager_verein.verein_id DESC LIMIT 1) AS veranstalterbezeichnung" -// . "\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" - . "\n FROM #__sportsmanager_spieler"; - - if ($beschraenkter_zugriff == 2) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten AND" . vereinFilter("verein_id IN") . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - else - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $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; - /* - echo $row->nachname . "#" . $row->vorname . "#" . ($row->geschlecht == 'M' ? "M" : "F") . "#" - . ($row->vereinsname != NULL ? ($row->vereinsname . ($row->veranstalterbezeichnung != NULL ? (" (" . $row->veranstalterbezeichnung . ")") : "")) : "Keiner") . "#" . $row->strasse . "#" . trim($row->plz . " " . $row->ort) . "#" . $row->telefon . "#" - . "" . "#" . $row->mobil . "#" . $row->email . "#" . $kommentar . "#" . $spielernr . "#" . $row->geburtsdatum . "\r\n"; - */ - $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() { - $db = getDatabase(); - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $organisationAnzeigen = $db->loadResult() > 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereine($vereine, $organisationAnzeigen); -} - -function adminEditVerein() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - $berechtigt_fuer_verein = null; - $vereinsansprechpartner = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_verein = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id ORDER BY vereinsansprechpartner_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsansprechpartner = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVerein($row, $users, $veranstalter, $berechtigt_fuer_verein, $vereinsansprechpartner); -} - -function adminSaveVerein() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->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'); - $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); - - return; - } - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" - . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; - $db->setQuery($query); - if (!$result = $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 WHERE verein_id = $id"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE vereinsansprechpartner_id = $vereinsansprechpartner_id;"; - $db->setQuery($query); - if (!$result = $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 == false - || ($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."); - - return; - } - $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."); - - return; - } - } - } - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine#id' . $id); -} - -function adminRemoveVerein() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_rechnung SET verein_id = NULL WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_verein WHERE berechtigt_verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("vereine", $id); - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine'); -} - -function adminVereineZusammenlegenForm() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineZusammenlegen($vereine); -} - -function adminVereineZusammenlegen() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); - - return; - } - - $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"); - - return; - } - - $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_verein WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_verein WHERE verein_id = $verein_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("vereine", $verein_zu_entfernen_id); - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereine#id' . $verein_beizubehalten_id); -} - -function adminVereinsmitglieder() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinsmitglieder = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereinsmitglieder($verein, $vereinsmitglieder, $berechtigt_spieler_aendern); -} - -function adminEditVereinsmitglied() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - $vereinid = $jinput->get('vereinid', 0, 'INT'); - - if ($id == 0) - $row = null; - else { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVereinsmitglied($row, $verein, $spieler); -} - -function adminSaveVereinsmitglied() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - if (empty($id)) { - $query = "INSERT INTO #__sportsmanager_mitglied_von_verein (spieler_id, verein_id, mitgliedsstatus, ausgetreten) VALUES ('$spielerid', '$vereinid', '1', FALSE);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - aktuellerVereinAktualisieren($spielerid); - - redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); -} - -function adminRemoveVereinsmitglied() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - aktuellerVereinAktualisieren(); - - redirectSportsManagerURL('&task=admin_vereinsmitglieder&vereinid=' . $vereinid); -} - -function adminSpielorte() { - $db = getDatabase(); - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielorte($spielorte); -} - -function adminEditSpielort() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_spielort WHERE spielort_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditSpielort($row); -} - -function adminSaveSpielort() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->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); - - return; - } - - 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_spielorte#id' . $id); -} - -function adminRemoveSpielort() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "UPDATE #__sportsmanager_begegnung SET spielort_id = NULL WHERE spielort_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spielorte'); -} - -function adminSpielorteZusammenlegenForm() { - $db = getDatabase(); - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielorteZusammenlegen($spielorte); -} - -function adminSpielorteZusammenlegen() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielorte_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_spielorte'); - - return; - } - - $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"); - - return; - } - - $query = "UPDATE #__sportsmanager_team" - . "\n SET heimspielort_id = $spielort_beizubehalten_id" - . "\n WHERE heimspielort_id = $spielort_zu_entfernen_id"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_spielort WHERE spielort_id = $spielort_zu_entfernen_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_spielorte#id' . $spielort_beizubehalten_id); -} - -function adminEinstufungen() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $einstufungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEinstufungen($einstufungen); -} - -function adminEditEinstufung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("einstufungen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - if ($id == null) { - $row = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_einstufung WHERE einstufung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditEinstufung($row, $ranglisten); -} - -function adminSaveEinstufung() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->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); - - return; - } - - $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)) { - array_push($ranglisten_beruecksichtigt, $rangliste_id); - array_push($ranglisten_beruecksichtigt_platz_min, $rangliste_platz_min); - array_push($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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); - - $einstufungen_aktualisieren = false; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { - $ist_beruecksichtigt = false; - 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_min = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_einstufungen#id' . $id); -} - -function adminRemoveEinstufung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_einstufung WHERE einstufung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_einstufungen'); -} - -function einstufungAktualisieren($berechnungen_auswerten = false) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechnungen = $db->loadResult();; - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - return; - } - - $query = "SELECT einstufung_id, prioritaet, typ, elo_min, elo_max" - . "\n FROM #__sportsmanager_einstufung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $einstufung_ranglisten = $db->loadObjectList(); - - $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(); - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rangliste_punkte = $db->loadObjectList(); - - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - 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 (!$result = $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 = " . (isset($spieler_einstufung_allgemein[$spieler_id]) ? $spieler_einstufung_allgemein[$spieler_id] : "NULL") . "," - . "\n einstufung_einzel_id = " . (isset($spieler_einstufung_einzel[$spieler_id]) ? $spieler_einstufung_einzel[$spieler_id] : "NULL") . "," - . "\n einstufung_doppel_id = " . (isset($spieler_einstufung_doppel[$spieler_id]) ? $spieler_einstufung_doppel[$spieler_id] : "NULL"); - $query .= "\n WHERE spieler_id = $spieler_id"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } -} - -function adminTeamspielmodi() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminTeamspielmodi($rows); -} - -function adminEditTeamspielmodus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == null) - $row = null; - else { - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditTeamspielmodus($row); -} - -function adminSaveTeamspielmodus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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'); - - return; - } - - $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 (strpos($verknuepfungen, $verknuepfung_doppel) !== false || strpos($verknuepfungen, $verknuepfung_einzel1) !== false || strpos($verknuepfungen, $verknuepfung_einzel2) !== false || - $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - begegnungenAktualisieren(0, $id); - teamstatistikAktualisieren(0, $id); - spielerstatistikAktualisieren(0, 0, 0, $id); - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminRemoveTeamspielmodus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminKopierenTeamspielmodus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftsspielplaene_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - - redirectSportsManagerURL('&task=admin_teamspiel_modi'); -} - -function adminVerschiebenModi() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVerschiebenModi($rows); -} - -function adminEditVerschiebenModus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 1) - $row = $rows[0]; - } - - if(!empty($row)) { - HTML_sportsmanager_admin::adminEditVerschiebenModus($row); - } -} - -function adminSaveVerschiebenModus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("verschieberegeln_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_verschieben_modi'); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_verschieben_modi'); -} - -function adminRemoveVerschiebenModus() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_verschieberegel WHERE verschieberegel_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_verschieben_modi'); -} - -function adminKategorien() { - $db = getDatabase(); - - if (!benutzerZugriff("kategorien_aendern")) - keinZugriff(true); - - $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $kategorien = array(); - $kategorien[1] = array(); - $kategorien[2] = array(); - $kategorien[3] = array(); - $kategorien[4] = array(); - - foreach ($rows as $row) - $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; - - HTML_sportsmanager_admin::adminKategorien($kategorien); -} - -function adminSaveKategorien() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("kategorien_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $query = "SELECT * FROM #__sportsmanager_kategorie ORDER BY typ, nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $kategorien = array(); - $kategorien[1] = array(); - $kategorien[2] = array(); - $kategorien[3] = array(); - $kategorien[4] = array(); - $kategorien[5] = array(); - $kategorien[6] = array(); - - foreach ($rows as $row) - $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; - - for ($typ = 1; $typ <= 6; $typ++) { - for ($nummer = 1; $nummer <= 30; $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "INSERT INTO #__sportsmanager_kategorie (typ, nummer, bezeichnung) VALUES ('$typ', '$nummer', '$bezeichnung');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRanglistensysteme() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $error_level = error_reporting(E_ERROR); - $math = new MathParserSM; - $math->setVariable('n', 100); - $math->setVariable('m', 1); - $math->setVariable('p', 5); - $pruefung = array(); - foreach ($rows as $row) { - $korrekt = true; - $pruefung[$row->rangliste_system_id] = $korrekt; - if (!empty($row->funktion)) { - try { - $math->setExpression($row->funktion); - $n = $math->getValue(); - } - catch (Exception $e) { - $korrekt = false; - } - } - $pruefung[$row->rangliste_system_id] = $korrekt; - } - error_reporting($error_level); - - HTML_sportsmanager_admin::adminRanglistensysteme($rows, $pruefung); -} - -function adminEditRanglistensystem() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $punkte = $db->loadObjectList(); - } - - HTML_sportsmanager_admin::adminEditRanglistensystem($row, $punkte, $row != null ? ($row->funktion != null) : $typ); -} - -function adminSaveRanglistensystem() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - ranglisteAktualisieren(); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_ranglistensysteme'); -} - -function adminRanglistensystemAuswertung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systempunkte = $db->loadObjectList(); - - if ($system->funktion != NULL) { - $math = new MathParserSM; - try { - $math->setVariable('n', $teilnehmer); - $math->setVariable('m', $multiplikator); - $math->setExpression($system->funktion); - } catch (Exception $e) { - } - } - - $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) { - } - } - $teilnehmerpunkte[$platz] = $p; - } - - HTML_sportsmanager_admin::adminRanglistensystemAuswertung($system, $teilnehmer, $multiplikator, $teilnehmerpunkte); -} - -function adminRanglistensystemAuswertungOLd() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglistenwertungen_aendern")) - keinZugriff(true); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_ranglistensysteme'); - - return; - } - - $row = null; - $punkte = null; - - $id = $jinput->get('id', 0, 'INT'); - $teilnehmer = $jinput->get('teilnehmer', 100, 'INT'); - $multiplikator = $jinput->get('multiplikator', 1, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systempunkte = $db->loadObjectList(); - - $teilnehmerpunkte = array(); - $math = new MathParserSM; - for ($platz = 1; $platz <= $teilnehmer; $platz++) { - $p = 0; - if ($id != 0 && $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 * $wertung_multiplikator_normal); - break; - } - } - } else { - $math->setVariable('p', $turnierplatzierung->platz); - $math->setVariable('m', $wertung_multiplikator_normal); - $math->setExpression($system->funktion); - try { - $p = round($math->getValue()); - } catch (Exception $e) { - - } - } - $teilnehmerpunkte[$platz] = $p; - } - - HTML_sportsmanager_admin::adminRanglistensystemAuswertung($row, $teilnehmer, $multiplikator, $teilnehmerpunkte); -} - -function adminRemoveRanglistensystem() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE system_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_system WHERE rangliste_system_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_ranglistensysteme'); -} - -function adminEditRangliste() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 4 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - HTML_sportsmanager_admin::adminEditRangliste($rangliste, $systeme, $kategorien, $saisons); -} - -function adminSaveRangliste() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - if ($id == 0) - $id = $db->insertid(); - - ranglisteAktualisieren($id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveRangliste() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin_punkte WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_rangliste WHERE rangliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminKopierenRangliste() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("ranglisten_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $rangliste = $rows[0]; - - $query = "INSERT INTO #__sportsmanager_rangliste (saison_id, system_id, streichergebnisse, geschlecht, 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->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_rangliste_id = $db->insertid(); - - // Disziplinen kopieren - - $query = "SELECT * FROM #__sportsmanager_rangliste_turnierdisziplin WHERE rangliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRanglisteTurnierdisziplinen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turnierdisziplinen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminRanglisteTurnierdisziplinen($rangliste, $turnierdisziplinen); -} - -function adminEditRanglisteTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $ranglisteTurnierdisziplin = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turnierdisziplinen = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditRanglisteTurnierdisziplin($rangliste, $ranglisteTurnierdisziplin, $turnierdisziplinen, $systeme); -} - -function adminSaveRanglisteTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRemoveRanglisteTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRanglisteDisziplinenEntfernen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminRanglisteSystemZuruecksetzen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - ranglisteAktualisieren($rangliste_id); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_rangliste_turnierdisziplinen&rangliste_id=' . $rangliste_id); -} - -function adminEditSpielerstatistik() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistik = $rows[0]; - } - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 5 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistik($spielerstatistik, $kategorien, $saisons); -} - -function adminSaveSpielerstatistik() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $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'); - 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');"; - $spielerstatistik_aktualisieren = false; - } - else { - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - if ($id == 0) - $id = $db->insertid(); - - if ($spielerstatistik_aktualisieren) - spielerstatistikAktualisieren($id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveSpielerstatistik() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminKopierenSpielerstatistik() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("spielerstatistiken_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_spielerstatistik_id = $db->insertid(); - - $query = "SELECT * FROM #__sportsmanager_bestenliste_veranstaltung WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - spielerstatistikAktualisieren($ziel_spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminSpielerstatistikVeranstaltungen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerstatistikVeranstaltungen($spielerstatistik, $veranstaltungen, $individualwettbewerbe); -} - -function adminEditSpielerstatistikVeranstaltung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistikVeranstaltung = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistikVeranstaltung($spielerstatistik, $spielerstatistikVeranstaltung, $veranstaltungen); -} - -function adminSaveSpielerstatistikVeranstaltung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminRemoveSpielerstatistikVeranstaltung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminEditSpielerstatistikIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $spielerstatistikIndividualwettbewerb = $rows[0]; - } - - $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielerstatistiken = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditSpielerstatistikIndividualwettbewerb($spielerstatistik, $spielerstatistikIndividualwettbewerb, $individualwettbewerbe); -} - -function adminSaveSpielerstatistikIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminRemoveSpielerstatistikIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminSpielerstatistikVeranstaltungenEntfernen() { - $db = getDatabase(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_bestenliste_individualwettbewerb WHERE bestenliste_id = $spielerstatistik_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren($spielerstatistik_id); - - redirectSportsManagerURL('&task=admin_spielerstatistik_veranstaltungen&spielerstatistik_id=' . $spielerstatistik_id); -} - -function adminModeratoren() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminModeratoren($rows); -} - -function adminEditModerator() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zugriffe = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditModerator($row, $zugriffe, $users); -} - -function adminSaveModerator() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("moderatoren_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_moderatoren'); - - return; - } - - $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $alte_zugriffe = $db->loadObjectList(); - - 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_moderatoren'); -} - -function adminRemoveModerator() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_moderator_zugriff WHERE moderator_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_moderatoren'); -} - -function adminVeranstalter() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVeranstalter($rows); -} - -function adminEditVeranstalter() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(true); - - $id = $jinput->get('id', 0, 'INT'); - if ($id == 0) { - $row = null; - $berechtigt_fuer_veranstalter = array(); - } - else { - $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_veranstalter = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 1 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - HTML_sportsmanager_admin::adminEditVeranstalter($row, $berechtigt_fuer_veranstalter, $users, $kategorien); -} - -function adminSaveVeranstalter() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("organisationen_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_veranstalter'); - - return; - } - - $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - redirectSportsManagerURL('&task=admin_veranstalter'); -} - -function adminRemoveVeranstalter() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_verein WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnier WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_individualwettbewerb WHERE veranstalter_id = $id), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "UPDATE #__sportsmanager_rechnung SET veranstalter_id = NULL WHERE veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_veranstalter'); -} - -function adminSaisons() { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSaisons($rows); -} - -function adminEditSaison() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - - HTML_sportsmanager_admin::adminEditSaison($row); -} - -function adminSaveSaison() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("saisons_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_saisons'); - - return; - } - - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - redirectSportsManagerURL('&task=admin_saisons'); -} - -function adminRemoveSaison() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $row = $rows[0]; - if ($row->veranstaltungen != 0 || $row->turniere != 0 || $row->ranglisten != 0 || $row->bestenlisten != 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_saison WHERE saison_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - - redirectSportsManagerURL('&task=admin_saisons'); -} - -function adminEditVeranstaltung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - $vorlage = $jinput->get('vorlage', 0, 'INT'); - - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielmodi = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_verschieberegel ORDER BY bezeichnung"; // WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verschieberegeln = $db->loadObjectList(); - - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 2 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); - - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); - - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_veranstaltung = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditVeranstaltung($row, $veranstalter, $spielmodi, $verschieberegeln, $kategorien, $saisons, $users, $berechtigt_fuer_veranstaltung, $vorlage); -} - -function adminSaveVeranstaltung() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - if (!benutzerZugriff("mannschaftswettbewerb_aendern")) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); - - return; - } - - $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'); - $unterteilung = $jinput->get('unterteilung', 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_logo = $jinput->get('bildbeibehalten_logo', 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)) - array_push($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, unterteilung, 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', '$unterteilung', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_uebersicht', "Die Veranstaltung existiert nicht mehr!"); - return; - } - $row = $rows[0]; - - if (!empty($row->erster_tag) && $row->erster_tag < $erster_tag) - $aktualisieren_ab_datum = $erster_tag; - - $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 unterteilung = '$unterteilung'," - . "\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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - if ($elo_aktualisieren) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - teamstatistikAktualisieren($id); - - if ($spielerstatistik_aktualisieren) { - begegnungenAktualisieren($id, 0); - 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 == false - || ($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."); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaftswettbewerbe'; - if (!JFile::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."); - - return; - } - } - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminRemoveVeranstaltung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('COM_SPORTSMANAGER_UNABLE_REMOVE_EXISTING_LINKS')); - - $query = "DELETE FROM #__sportsmanager_bestenliste_veranstaltung WHERE veranstaltung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_berechtigt_fuer_veranstaltung WHERE berechtigt_veranstaltung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - spielerstatistikAktualisieren(0, $id); - - bildLoeschen("mannschaftswettbewerbe/logo", $id); - bildLoeschen("mannschaftswettbewerbe/ticker_logo", $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); -} - -function adminMannschaften() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminMannschaften($veranstaltung, $rows); -} - -function adminEditMannschaft() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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 ($id == 0) { - $row = null; - $berechtigt_fuer_team = null; - $teamansprechpartner = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_team = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teamansprechpartner = $db->loadObjectList(); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - $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"; - } - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditMannschaft($veranstaltung, $row, $veranstaltungen, $vereine, $users, $berechtigt_fuer_team, $teamansprechpartner, $spielorte, $beschraenkter_zugriff_veranstaltungen); -} - -function adminSaveMannschaft() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; - - $id = $jinput->get('id', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); - - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltung_id)) - keinZugriff(); - - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); - - return; - } - - $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'))); - $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)) - array_push($weitere_veranstaltungen_beruecksichtigt, $weitere_veranstaltung_id); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; - - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, 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', '$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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE kontaktperson_id = $teamansprechpartner_id;"; - $db->setQuery($query); - if (!$result = $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 == false - || ($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); - - $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)) - array_push($veranstaltungen_aktualisieren, $bestehende_weitere_veranstaltung_beruecksichtigt->veranstaltung_id); - } - - foreach ($weitere_veranstaltungen_beruecksichtigt as $index => $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)) - array_push($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."); - - return; - } - - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) - return false; - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_veranstaltung" - . "\n WHERE veranstaltung_id = $ziel_veranstaltung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - 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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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 (!$result = $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 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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_teamvertreter = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id ORDER BY berechtigt_fuer_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_teamvertreter = $db->loadObjectList(); - - $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Ansprechpartner kopieren - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $quelle_team_id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_ansprechpartner = $db->loadObjectList(); - - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_ansprechpartner = $db->loadObjectList(); - - $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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereinte_mitglieder = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_mitglieder = $db->loadObjectList(); - - 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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_mitglieder = $db->loadObjectList(); - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_mitglieder = $db->loadObjectList(); - - $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 (JFile::exists($pfad . 'png')) { - JFile::copy($pfad . 'png', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.png'); - $bild_kopiert = true; - } - else if (JFile::exists($pfad . 'jpg')) { - JFile::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 (JFile::exists($quelle_pfad . 'png')) - $ext = "png"; - else if (JFile::exists($quelle_pfad . 'jpg')) - $ext = "jpg"; - else - $ext = ""; - if (!empty($ext) && !JFile::copy($quelle_pfad . $ext, $ziel_pfad . $ext)) - return false; - } - - return true; -} - -function mannschaftsgruppe_entfernen($ziel_team_id) { - $db = getDatabase(); - global $sportsmanager_joomla_path; - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $ziel_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n > 0) - return false; - - $query = "SELECT *" - . "\n FROM #__sportsmanager_mitglied_von_team" - . "\n WHERE team_id = $ziel_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $ziel_team_id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "SELECT COUNT(*)" - . "\n FROM #__sportsmanager_team" - . "\n WHERE teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - - if ($n == 1) { - $query = "UPDATE #__sportsmanager_team" - . "\n SET teamgruppe_id = NULL" - . "\n WHERE teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - return true; -} - -function heimspieltag_aktualisieren($team_id) { - $db = getDatabase(); - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } -} - -function termin_aktualisieren($begegnung_id) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - if (count($begegnungen) < 1) - return; - $begegnung = $begegnungen[0]; - - $query = "SELECT * FROM #__sportsmanager_team" - . "\n WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } -} - -function adminRemoveMannschaft() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $teamgruppe_id = $rows[0]->teamgruppe_id != null ? $rows[0]->teamgruppe_id : $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); - if ($n > 0) die(JText::_('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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_mitglied_von_team WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_team WHERE team_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - bildLoeschen("mannschaften", $id); - } - - teamstatistikAktualisieren($veranstaltungid); - - redirectSportsManagerURL('&task=admin_teams&veranstaltungid=' . $veranstaltungid); -} - -function adminKopierenMannschaftForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminKopierenMannschaft($veranstaltung, $teams, $veranstaltungen); -} - -function adminKopierenMannschaft() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->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); - - return; - } - - $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)) - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $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 (JFile::exists($pfad . 'png')) - JFile::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 (JFile::exists($pfad . 'jpg')) - JFile::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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - // Ansprechpartner kopieren - $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $id . '.'; - if (JFile::exists($pfad . 'png')) - JFile::copy($pfad . "png", $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'mannschaften' . DIRECTORY_SEPARATOR . $ziel_teamid . '.png'); - else if (JFile::exists($pfad . 'jpg')) - JFile::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() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVerknuepfenMannschaft($veranstaltung, $teams, $veranstaltungen); -} - -function adminVerknuepfenMannschaft() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - $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)) - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitglieder = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminMitglieder($team, $veranstaltung, $mitglieder, $berechtigt_spieler_aendern); -} - -function adminEditMitglied() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - $veranstaltungen_begegnungen[$v->veranstaltung_id] = array(); - $begegnungen = array_reverse($begegnungen); - foreach ($begegnungen as $begegnung) - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $begegnungen = $db->loadObjectList(); - - foreach ($begegnungen as $begegnung) - array_push($veranstaltungen_begegnungen[$v->veranstaltung_id], array($begegnung->spieltag, $begegnung->zeitpunkt)); - } - - /* - $query = "SELECT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler"; - if ($team->verein_id != NULL) - $query .= "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" - . "\n LEFT JOIN #__sportsmanager_verein USING (verein_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $team->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT ISNULL(aktueller_verein_id)"; - else - $query .= "\n WHERE NOT ISNULL(aktueller_verein_id)"; - $query .= "\n ORDER BY nachname, vorname"; -*/ - if ($team->verein_id != null) { - $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $team->verein_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); - if (count($vereine) < 1) die ("Wrong id"); - $verein = $vereine[0]; - } - else - $verein = null; - - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $mitgliedschaften = $db->loadObjectList(); - - $spielberechtigungen = array(); - foreach ($mitgliedschaften as $mitgliedschaft) { - if (!isset($spielberechtigungen[$mitgliedschaft->spieler_id])) - $spielberechtigungen[$mitgliedschaft->spieler_id] = array(); - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $mannschaftsnamen = array(); - foreach ($rows as $m) - $veranstaltungsbezeichnungen[$m->team_id] = $m->teamname; - - } - else { - $spieler = array(); - $spielberechtigungen = null; - $veranstaltungsbezeichnungen = null; - $mannschaftsnamen = null; - } - - HTML_sportsmanager_admin::adminEditMitglied($row, $team, $verein, $veranstaltung, $spieler, $spielberechtigungen, $veranstaltungsbezeichnungen, $mannschaftsnamen, $veranstaltungen, $veranstaltungen_begegnungen, $alle_anzeigen, $entfernen); -} - -function adminSaveMitglied() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->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); - - return; - } - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $teamid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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); - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); - - foreach ($veranstaltungen as $v) { - $status = $jinput->get('status_' . $v->veranstaltung_id, -1, 'INT'); - if ($status == -1) - continue; - $erster_spieltag = $jinput->get('erster_spieltag_' . $v->veranstaltung_id, 0, 'INT'); - $letzter_spieltag = $jinput->get('letzter_spieltag_' . $v->veranstaltung_id, 0, 'INT'); - - $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) . "'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $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 (!$result = $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 == false - || ($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."); - - return; - } - $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."); - - return; - } - } - } - } - } - } - } - } - - $query = "SELECT team_id" - . "\n FROM #__sportsmanager_team" - . "\n WHERE team_id != $teamid AND teamgruppe_id = $teamgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); - - 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() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 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.zeitpunkt, heim_name"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows); -} - -function adminEditBegegnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - } - - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditBegegnung($veranstaltung, $row, $id == null, $teams, $spielorte); - HTML_sportsmanager_admin::adminVerlegenVerlauf($verlegen_aktionen); -} - -function adminSaveBegegnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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); - - return; - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - if (count($teams) < 1) die ("Wrong id!"); - $gast_team = $teams[0]; - - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_unbestaetigtes_ergebnis WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_begegnung WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $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); -} - -function adminHeimtauschBegegnung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termin_aktualisieren($id); - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid . '#id' . $id); -} - -function adminEditBegegnungSpielplan($bestaetigen) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->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."); - jexit(); - } - $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'); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) { - redirectSportsManagerURL(null, "Keine offene Begegnung zur PIN gefunden."); - jexit(); - } - - $id = $rows[0]->begegnung_id; - $veranstaltungid = $rows[0]->veranstaltung_id; - $aus_uebersicht = 0; - $aktion_team_id = $rows[0]->aktion_team_id; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $verlegen_aktionen = $db->loadObjectList(); - - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) == 0) - keinZugriff(true); - } - else if ($bestaetigen == 2) { - // - } - else { - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); - } - - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $gast_team = $rows[0]; - - $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $heim_spieler = $db->loadObjectList(); - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $gast_spieler = $db->loadObjectList(); - - $encrypted_pin = encrypt($pin, "a9cZ" . $veranstaltung->veranstaltung_id . "oDS7" . $id . "2eA"); - // Spielort ermitteln - $spielortQuery = "SELECT name FROM #__sportsmanager_spielort WHERE spielort_id = \"" - . (JFactory::getApplication()->input->getCmd('spielort_heim') == 1 - ? $heim_team->heimspielort_id - : $begegnung->spielort_id) . "\""; - $db->setQuery($spielortQuery); - $begegnung->spielort_name = $db->loadResult(); - - - if (isJson()) { - $response = JSON_sportsmanager::adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, count($verlegen_aktionen), $erneut_oeffnen, $aus_uebersicht); - 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); - } - -} - + 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"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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)); + } + } + } + } + } + + $query = "DELETE FROM #__sportsmanager_spieler_import" + . "\n WHERE session_id = '" . $db->escape($session_id) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + } 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $verein = $rows[0]; + } else if ($veranstalterId != 0) { + $query = "SELECT * FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalterId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + if ($persoenliche_daten == 0) + $query .= ",\n geburtsjahr"; + if ($persoenliche_daten != 0) + $query .= ",\n geburtsjahr, geburtsdatum"; + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $organisationAnzeigen = $db->loadResult() > 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_verein = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_vereinsansprechpartner WHERE verein_id = $id ORDER BY vereinsansprechpartner_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereinsansprechpartner = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + 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'); + $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)" + . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; + $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 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereinsmitglieder = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) == 1) + $row = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_verein WHERE verein_id = $vereinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $einstufungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechnungen = $db->loadResult(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $einstufung_ranglisten = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rangliste_punkte = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $kategorien = array(); + $kategorien[1] = array(); + $kategorien[2] = array(); + $kategorien[3] = array(); + $kategorien[4] = 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $kategorien = array(); + $kategorien[1] = array(); + $kategorien[2] = array(); + $kategorien[3] = array(); + $kategorien[4] = array(); + $kategorien[5] = array(); + $kategorien[6] = array(); + + foreach ($rows as $row) + $kategorien[$row->typ][$row->nummer] = $row->bezeichnung; + + for ($typ = 1; $typ <= 6; $typ++) { + for ($nummer = 1; $nummer <= 30; $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $error_level = error_reporting(E_ERROR); + $math = new MathParserSM; -function adminSaveBegegnungSpielplan() { - $app = &JFactory::getApplication(); - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; - $begegnung_input = isJson() ? $jinput->json : $jinput; - - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->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); - } - - return; - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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(); - - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - if ($zwischenergebnis) { - $query = "INSERT 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 (!$result = $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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - else if ($bestaetigen != 0) { - $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)" - . "\n VALUES ('$id', '$vorschlagendes_team_id', '$kommentar', now());"; - $db->setQuery($query); - if (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - } - - $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $spiele = $db->loadObjectList(); - - $spiele_nummern = array(); - foreach ($spiele as $spiel) { - $spiele_nummern[$spiel->teamspiel_nummer] = $spiel; - } - - $ergebnis_vereinen = $zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie; - - $total_heim_punkte = 0; - $total_gast_punkte = 0; - $total_heim_spielpunkte = 0; - $total_gast_spielpunkte = 0; - $spiel_nr = 1; - do { - $spieltyp = isset($spieltypen[$spiel_nr - 1]) ? $spieltypen[$spiel_nr - 1] : ''; - - $skip_spiel = $begegnung_input->get('spiel_' . $spiel_nr . '_typ', '', 'RAW') == '' && $jinput->getMethod() === 'PATCH'; - - if ($skip_spiel) { - if (isset($spiele_nummern[$spiel_nr])) { - $spiel_heim_punkte = $spiele_nummern[$spiel_nr]->$spiel_heim_punkte; - $spiel_gast_punkte = $spiele_nummern[$spiel_nr]->$spiel_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 != 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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - // Benachrichtigung schreiben - /* - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) - $twitter_benutzername = ""; - else { - $twitter_benutzername = $rows[0]->wert; - $twitter_kennwort = $rows[1]->wert; - } - */ - -// if (!empty($twitter_benutzername) || $bestaetigen) { - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - } - - /* - if (!empty($twitter_benutzername) - && ($begegnung_alt->zwischenergebnis != $begegnung->zwischenergebnis - || $begegnung_alt->heim_punkte != $begegnung->heim_punkte - || $begegnung_alt->gast_punkte != $begegnung->gast_punkte - || $begegnung_alt->heim_spielpunkte != $begegnung->heim_spielpunkte - || $begegnung_alt->gast_spielpunkte != $begegnung->gast_spielpunkte)) { try { - $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); - $status = $twitter->send(($zwischenergebnis ? "Live: " : "") . $veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $total_heim_spielpunkte . ":" . $total_gast_spielpunkte . " (" . $total_heim_punkte . ":" . $total_gast_punkte . ")"); - } - catch(TwitterException $e) { + $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); - 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); - } - } + HTML_sportsmanager_admin::adminRanglistensysteme($rows, $pruefung); } -function adminBegegnungSpielplanHeimtausch() { - $app = &JFactory::getApplication(); - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditRanglistensystem(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - $id = $jinput->get('id', 0, 'INT'); - $bestaetigen = $jinput->get('bestaetigen', 0, 'INT'); - $zwischenergebnis = $jinput->get('zwischenergebnis', 0, 'INT'); - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("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 (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(true); - $benutzer_ist_moderator = benutzerZugriff("mannschaftswettbewerb_aendern") || benutzerVeranstaltungModerator($veranstaltungid); // Abfrage muss vor LOCK erfolgen, da sonst die Abfrage mangels Lock auf Moderator-Tabelle scheitert + $row = null; + $punkte = null; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id!"); - $begegnung = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; - $mannschaften_vertauscht = $begegnung->heim_team_id == $gast_team_id || $begegnung->gast_team_id == $heim_team_id; + $query = "SELECT * FROM #__sportsmanager_rangliste_system_punkte WHERE system_id = $id ORDER BY rangliste_system_punkte_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $punkte = $db->loadObjectList(); + } - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - if (count($rows) == 0) - keinZugriff(); - - $vorschlagendes_team_id = $rows[0]->team_id; - } - else { - if (!$benutzer_ist_moderator) - keinZugriff(); - } - - if (!$benutzer_ist_moderator && !$modus->heimtausch) - keinZugriff(); - - if (!$mannschaften_vertauscht) { - /* - $query = "INSERT INTO #__sportsmanager_begegnung_historie (begegnung_id, aktion, zeitpunkt, user_id, team_id, verantwortlich_team_id, kommentar, eingetragen)" - . "\n VALUES ($id, 9, NULL, '$user_id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "NULL") . ", NULL, NULL, now());"; - $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } - */ - - $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 (!$result = $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 (!$result = $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' : '')); + HTML_sportsmanager_admin::adminEditRanglistensystem($row, $punkte, $row != null ? ($row->funktion != null) : $typ); } -function adminBegegnungSpielplanBestaetigen() { - $app = &JFactory::getApplication(); - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveRanglistensystem(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : JFactory::getUser()->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'); + if (!benutzerZugriff("ranglistenwertungen_aendern")) + keinZugriff(); - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - 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))"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - /* - // Benachrichtigung schreiben - $query = "SELECT * FROM #__sportsmanager_einstellungen WHERE name = 'twitter_benutzername' || name = 'twitter_kennwort' ORDER BY name"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); - if (count($rows) != 2 || empty($rows[0]->wert) || empty($rows[1]->wert)) - $twitter_benutzername = ""; - else { - $twitter_benutzername = $rows[0]->wert; - $twitter_kennwort = $rows[1]->wert; - } - */ - - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - - // Heimteam ermitteln - $query = "SELECT * FROM #__sportsmanager_team WHERE team_id = $begegnung->heim_team_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 . ")"; - $db->setQuery($query); - if (!$result = $db->execute()) { - abortWithError($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - JFactory::getMailer()->sendMail($mailfrom, $fromname, $row->email, $subject, $body); - } - - /* - if (!empty($twitter_benutzername)) { - try { - $twitter = new Twitter($twitter_benutzername, $twitter_kennwort); - $status = $twitter->send($veranstaltung->bezeichnung . " " . $heim_team->teamname . " vs. " . $gast_team->teamname . " " . $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte . " (" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")"); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_ranglistensysteme'); } - catch(TwitterException $e) { + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $systempunkte = $db->loadObjectList(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 4 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $rangliste = $rows[0]; + + $query = "INSERT INTO #__sportsmanager_rangliste (saison_id, system_id, streichergebnisse, geschlecht, 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->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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $turnierdisziplinen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $ranglisteTurnierdisziplin = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_rangliste WHERE rangliste_id = $rangliste_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $turnierdisziplinen = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistik = $rows[0]; + } + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 5 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistikVeranstaltung = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $spielerstatistikIndividualwettbewerb = $rows[0]; + } + + $query = "SELECT * FROM #__sportsmanager_bestenliste WHERE bestenliste_id = $spielerstatistik_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielerstatistiken = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $zugriffe = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $alte_zugriffe = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_veranstalter = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 1 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + $vorlage = $jInput->get('vorlage', 0, 'INT'); + + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielmodi = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_verschieberegel ORDER BY bezeichnung"; // WHERE status != 0 " . ($id != 0 ? "OR teamspiel_modus_id = $row->modus_id " : "") . "ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $verschieberegeln = $db->loadObjectList(); + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 2 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); + + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_veranstaltung = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + 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'); + $unterteilung = $jInput->get('unterteilung', 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, unterteilung, 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', '$unterteilung', '$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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 unterteilung = '$unterteilung'," + . "\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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_team = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teamansprechpartner = $db->loadObjectList(); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + $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"; + } + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + 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'))); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $veranstaltung = $rows[0]; + + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, 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', '$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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + if ($n > 0) + return false; + + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_veranstaltung" + . "\n WHERE veranstaltung_id = $ziel_veranstaltung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $quelle_teamvertreter = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_team WHERE berechtigt_team_id = $ziel_team_id ORDER BY berechtigt_fuer_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ziel_teamvertreter = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $quelle_ansprechpartner = $db->loadObjectList(); + + $query = "SELECT * FROM #__sportsmanager_teamansprechpartner WHERE team_id = $ziel_team_id ORDER BY kontaktperson_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ziel_ansprechpartner = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereinte_mitglieder = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ziel_mitglieder = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ziel_mitglieder = $db->loadObjectList(); + } + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $quelle_mitglieder = $db->loadObjectList(); + + $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')) { + File::copy($pfad . 'png', $bilder_pfad . DIRECTORY_SEPARATOR . $ziel_mitglied->mitglied_von_team_id . '.png'); + $bild_kopiert = true; + } else if (File::exists($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')) + $ext = "png"; + else if (File::exists($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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + if ($n > 0) + return false; + + $query = "SELECT *" + . "\n FROM #__sportsmanager_mitglied_von_team" + . "\n WHERE team_id = $ziel_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + if (count($begegnungen) < 1) + return; + $begegnung = $begegnungen[0]; + + $query = "SELECT * FROM #__sportsmanager_team" + . "\n WHERE team_id = $begegnung->heim_team_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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')) + 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')) + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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')) + 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')) + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + $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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $mitglieder = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $begegnungen = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); + + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $mitgliedschaften = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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); + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); + + 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) . "'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bestehende_weitere_veranstaltungen_beruecksichtigt = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $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 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.zeitpunkt, heim_name"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + if (count($teams) < 1) die ("Wrong id!"); + } + + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); + + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $verlegen_aktionen = $db->loadObjectList(); + + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $gast_team = $rows[0]; + + $query = "SELECT * FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id ORDER BY teamspiel_nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $heim_spieler = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $gast_spieler = $db->loadObjectList(); + + $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) . "\""; + $db->setQuery($spielortQuery); + $begegnung->spielort_name = $db->loadResult(); + + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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'"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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 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 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $spiele = $db->loadObjectList(); + + $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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 . ")"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $mailer = Factory::getContainer()->get(Mail::class); + foreach ($rows as $row) { + $mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } + } + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + 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))"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 . ")"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $mailer = Factory::getContainer()->get(Mail::class); + foreach ($rows as $row) { + $mailer->sendMail($mailfrom, $fromname, $row->email, $subject, $body); + } + + if (isJson()) { + begegnungSpielplan(); + } else { + if ($aus_uebersicht) { + redirectSportsManagerURL('#id' . $id); + } else { + redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungId . '#id' . $id); + } } - } - */ - if (isJson()) { -// adminEditBegegnungSpielplan(0); - begegnungSpielplan(false); - } else { - if ($aus_uebersicht) { - redirectSportsManagerURL('#id' . $id); - } - else { - redirectSportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltungid . '#id' . $id); - } - } } /* Generiert Gruppenspiele zu einer beliebigen geraden Anzahl Teams @@ -10673,1450 +10291,1409 @@ function adminBegegnungSpielplanBestaetigen() { * * (C) Sven Nickel 2006 */ -function Gruppenspiele($anzahlteams) { - if ($anzahlteams % 2 == 1) { - die ("Gruppenspiele(): Eine ungerade Anzahl an Teams ist nicht zulässig!"); - exit; - } +function Gruppenspiele($anzahlteams) +{ + if ($anzahlteams % 2 == 1) { + die ("Gruppenspiele(): Eine ungerade Anzahl an Teams ist nicht zulässig!"); + } - $b = 1; - for ($i = 1; $i < $anzahlteams; $i++) { - for ($j = $i + 1; $j <= $anzahlteams; $j++) { - $begegnungen[$b++] = array($i, $j); - } - } + $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; + } - $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) && !$nicht_zulaessig; $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; + return $spiele; } -function adminBegegnungenGenerierenForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminBegegnungenGenerierenForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) die("Missing id!"); - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) + keinZugriff(true); - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungId" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - HTML_sportsmanager_admin::adminBegegnungenGenerieren($veranstaltung, $rows); + HTML_sportsmanager_admin::adminBegegnungenGenerieren($veranstaltung, $rows); } -function adminBegegnungenGenerieren() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminBegegnungenGenerieren(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) die("Missing id!"); - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); + } - return; - } + $anzahlteams = $jInput->get('anzahlteams', 0, 'INT'); + if ($anzahlteams == 0) die("Wrong number of teams!"); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); - $query = "SELECT t1.*" - . "\n FROM #__sportsmanager_team AS t1" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY t1.teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); + $teamIds = null; + for ($i = 1; $i <= $anzahlteams; $i++) { + $teamIds[$i] = $jInput->get('team_id_' . $i, 0, 'INT'); + if ($teamIds[$i] == 0) die("Wrong id!"); + } - for ($i = 1; $i <= $anzahlteams; $i++) { - $teamids[$i] = $jinput->get('team_id_' . $i, 0, 'INT'); - if ($teamids[$i] == 0) die("Wrong id!"); - } + $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; + $spieltag_basis = array(); + for ($i = 1; $i <= ($spieltage * 2); $i++) { + $jahr = $jInput->get('datum_jahr_' . $i, 0, 'INT'); + $kw = $jInput->get('datum_kw_' . $i, 0, 'INT'); + if ($jahr == 0 || $kw == 0) die("Wrong date!"); + $spieltag_basis[$i] = array(); + $spieltag_basis[$i]["jahr"] = $jahr; + $spieltag_basis[$i]["kw"] = $kw; + } - $spieltage = $anzahlteams % 2 != 0 ? $anzahlteams : $anzahlteams - 1; - $spieltag_basis = array(); - for ($i = 1; $i <= ($spieltage * 2); $i++) { - $jahr = $jinput->get('datum_jahr_' . $i, 0, 'INT'); - $kw = $jinput->get('datum_kw_' . $i, 0, 'INT'); - if ($jahr == 0 || $kw == 0) die("Wrong date!"); - $spieltag_basis[$i] = array(); - $spieltag_basis[$i]["jahr"] = $jahr; - $spieltag_basis[$i]["kw"] = $kw; - } + $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); - $spiele = Gruppenspiele($anzahlteams % 2 != 0 ? $anzahlteams + 1 : $anzahlteams); + 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; - 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[$spiele[$spieltag][$spielnr][0]]; + $gast_team_id = $teamIds[$spiele[$spieltag][$spielnr][1]]; - $heim_team_id = $teamids[$spiele[$spieltag][$spielnr][0]]; - $gast_team_id = $teamids[$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) die("Team id not found!"); - $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!"); - $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 ($heim_team->heimspiel_wochentag == 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", $ts["year"], $ts["mon"], $ts["mday"], floor($heim_team->heimspiel_uhrzeit / 100), $heim_team->heimspiel_uhrzeit % 100); + } - if ($heim_team->heimspiel_wochentag == 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", $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)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$spieltag', '$heim_team_id', '$gast_team_id');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$spieltag', '$heim_team_id', '$gast_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $weiterer_spieltag = $spieltag + $spieltage; + if ($gast_team->heimspiel_wochentag == 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", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); + } - $weiterer_spieltag = $spieltag + $spieltage; - if ($gast_team->heimspiel_wochentag == 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", $ts["year"], $ts["mon"], $ts["mday"], floor($gast_team->heimspiel_uhrzeit / 100), $gast_team->heimspiel_uhrzeit % 100); - } + $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" + . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$weiterer_spieltag', '$gast_team_id', '$heim_team_id');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } - $query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, heim_team_id, gast_team_id)" - . "\n VALUES (" . ($zeitpunkt != null ? "'$zeitpunkt'" : "NULL") . ", '$weiterer_spieltag', '$gast_team_id', '$heim_team_id');"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); } -function adminBegegnungenRundeErzeugenForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminBegegnungenRundeErzeugenForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $veranstaltungid = $jinput->get('veranstaltungid', 0, 'INT'); - if ($veranstaltungid == 0) die("Missing id!"); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) die("Missing id!"); - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(true); + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) + keinZugriff(true); - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $row = count($rows) < 1 ? null : $row = $rows[0]; // Falls keine Begegnung als Vorlage verfügbar + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_team" + . "\n WHERE veranstaltung_id = $veranstaltungId" + . "\n ORDER BY teamname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_spielort" - . "\n ORDER BY ortsname, name, ortsteil"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spielorte = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_spielort" + . "\n ORDER BY ortsname, name, ortsteil"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spielorte = $db->loadObjectList(); - HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte); + HTML_sportsmanager_admin::adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte); } -function adminBegegnungenRundeErzeugen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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!"); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) die("Missing id!"); - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); + } - return; - } + $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); - $anzahlteams = $jinput->get('anzahlteams', 0, 'INT'); - if ($anzahlteams == 0) die("Wrong number of teams!"); - 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; - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $teams = $db->loadObjectList(); - $query = "SELECT t1.*" - . "\n FROM #__sportsmanager_team AS t1" - . "\n WHERE veranstaltung_id = $veranstaltungid" - . "\n ORDER BY t1.teamname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $teams = $db->loadObjectList(); + $teamIds = []; + for ($i = 1; $i <= $anzahlteams; $i++) + $teamIds[$i] = $jInput->get('team_id_' . $i, 0, 'INT'); - 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'); - $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]; - 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; - 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!"); - $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!"); - $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); + } - if ($datum_kw != null) { - if ($heim_team->heimspiel_wochentag == 0) - $zeitpunkt = null; - else { - $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)); + } + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); } -function adminBegegnungenAlleEntfernen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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!"); + $veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); + if ($veranstaltungId == 0) die("Missing id!"); - if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungid)) - keinZugriff(); + if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId)) + keinZugriff(); - // Veranstaltung ermitteln - $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $veranstaltung = $rows[0]; + // Veranstaltung ermitteln + $query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_begegnung" - . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" - . "\n WHERE veranstaltung_id = $veranstaltungid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_begegnung" + . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id" + . "\n WHERE veranstaltung_id = $veranstaltungId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - foreach ($rows as $row) { - $id = $row->begegnung_id; + foreach ($rows as $row) { + $id = $row->begegnung_id; - $query = "DELETE FROM #__sportsmanager_begegnung_historie WHERE begegnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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 ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } + if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } - redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungid); + redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); } -function adminEditTurnier() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnier(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } - $vorlage = $jinput->get('vorlage', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + $vorlage = $jInput->get('vorlage', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_turnier = $db->loadObjectList(); - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_turnier = $db->loadObjectList(); + } - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 3 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 3 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + $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); + HTML_sportsmanager_admin::adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien); } -function adminSaveTurnier() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnier(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(); + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_uebersicht'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_uebersicht'); + } - return; - } + $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'))); + $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'))); + $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; + } - $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'))); - $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'))); - $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)) - array_push($berechtigt_fuer_turnier_user_ids, $berechtigt_user_id); - } + if ($vorlage) { + $vorlage_id = $id; + $id = 0; + $query = "SELECT erster_tag FROM #__sportsmanager_turnier WHERE turnier_id = $vorlage_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $vorlage_erster_tag = $rows[0]->erster_tag; + } - if ($vorlage) { - $vorlage_id = $id; - $id = 0; - $query = "SELECT erster_tag FROM #__sportsmanager_turnier WHERE turnier_id = $vorlage_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $vorlage_erster_tag = $rows[0]->erster_tag; - } + if ($id == 0) { + $query = "INSERT INTO #__sportsmanager_turnier (veranstalter_id, turnierbezeichnung, saison_id, turnierort, erster_tag" . ($letzter_tag != null ? ", letzter_tag" : "") . ", kategorie) VALUES ('$veranstalterId', '$turnierbezeichnung', '$saison_id', '$turnierort', '$erster_tag'" . ($letzter_tag != null ? ", '$letzter_tag'" : "") . ", '$kategorie');"; + $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 WHERE turnier_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } - if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_turnier (veranstalter_id, turnierbezeichnung, saison_id, turnierort, erster_tag" . ($letzter_tag != null ? ", letzter_tag" : "") . ", kategorie) VALUES ('$veranstalterid', '$turnierbezeichnung', '$saison_id', '$turnierort', '$erster_tag'" . ($letzter_tag != null ? ", '$letzter_tag'" : "") . ", '$kategorie');"; - $db->setQuery($query); - if (!$result = $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 WHERE turnier_id = $id"; - $db->setQuery($query); - if (!$result = $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 = "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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_turnier_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + 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 ($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)); + } + } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + if ($vorlage) { + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n WHERE turnier_id = $vorlage_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $disziplinen = $db->loadObjectList(); - if ($vorlage) { - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE turnier_id = $vorlage_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplinen = $db->loadObjectList(); + 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"]); - 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 = "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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $disziplin_id = $db->insertid(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" + . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_rangliste_turnierdisziplin" - . "\n WHERE turnierdisziplin_id = $disziplin->turnierdisziplin_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); + 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)); + } + } + } + } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminRemoveTurnier() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTurnier(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id AND elo_wertung > 0), 1, 0)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $elo_aktualisieren = $db->loadResult(); + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnier_id = $id AND elo_wertung > 0), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $elo_aktualisieren = $db->loadResult(); - $query = "SELECT MIN(DATE(beginn))" - . "\n FROM #__sportsmanager_turnierdisziplin" - . "\n WHERE turnier_id = $id AND elo_wertung > 0"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); + $query = "SELECT MIN(DATE(beginn))" + . "\n FROM #__sportsmanager_turnierdisziplin" + . "\n WHERE turnier_id = $id AND elo_wertung > 0"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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) { + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); } - ranglisteAktualisieren(); - einstufungAktualisieren(); + ranglisteAktualisieren(); + einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminTurnierdisziplinen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminTurnierdisziplinen(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); + $turnierid = $jInput->get('turnierid', 0, 'INT'); + if ($turnierid == 0) die("Missing id!"); - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierid)) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierid)) + keinZugriff(true); - $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; + $beschraenkter_zugriff_turniere = benutzerZugriff("turniere_aendern") ? 0 : 1; - $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnier = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTurnierdisziplinen($turnier, $rows, $beschraenkter_zugriff_turniere); + HTML_sportsmanager_admin::adminTurnierdisziplinen($turnier, $rows, $beschraenkter_zugriff_turniere); } -function adminEditTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnierdisziplin(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); - $turnierid = $jinput->get('turnierid', 0, 'INT'); - if ($turnierid == 0) die("Missing id!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } + if ($id == null) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } - $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnier = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_turnier WHERE turnier_id = $turnierid"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); + // 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $systeme = $db->loadObjectList(); + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $systeme = $db->loadObjectList(); - HTML_sportsmanager_admin::adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme); + HTML_sportsmanager_admin::adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme); } -function adminSaveTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnierdisziplin(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(); + 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; + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId); + } - return; - } + $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'); - $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'); + } - $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)) { - array_push($ranglisten_beruecksichtigt, $rangliste_id); - array_push($ranglisten_beruecksichtigt_system_id, $rangliste_system_id); - array_push($ranglisten_beruecksichtigt_wertung, $rangliste_wertung); - array_push($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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $aktualisieren = true; - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; + $elo_aktualisieren = $row->elo_wertung || $elo_wertung; - $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)); + } - if ($row->typ != $typ) { - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $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_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 (!$result = $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 #__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 (!$result = $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_turniermeldung WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $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)); + } + } - $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 (!$result = $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bestehende_ranglisten_beruecksichtigt = $db->loadObjectList(); + 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 ($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 (!$result = $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); - foreach ($ranglisten_beruecksichtigt as $index => $rangliste_id) { - $ist_beruecksichtigt = false; - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); + 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 ($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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - if ($aktualisieren) { - if ($elo_aktualisieren) { + if ($aktualisieren) { + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); } - ranglisteAktualisieren(0, $id); - einstufungAktualisieren(); - } + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); + } - redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId); } -function adminRemoveTurnierdisziplin() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTurnierdisziplin(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern")) - keinZugriff(true); + 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!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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; + $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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) { + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); } - ranglisteAktualisieren(); - einstufungAktualisieren(); + ranglisteAktualisieren(); + einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierid); + redirectSportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $turnierId); } -function adminExportTurniervoranmeldungenForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminExportTurniervoranmeldungenForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - if ($turnierdisziplinid == 0) die ("Wrong id!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); - /* + /* $query = "SELECT *" . "\n FROM #__sportsmanager_rangliste" . "\n WHERE status > 0 AND erster_tag <= CURDATE() AND letzter_tag >= CURDATE()" . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, kategorie"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $ranglisten_aktuell = $db->loadObjectList(); */ - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ranglisten = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ranglisten = $db->loadObjectList(); - HTML_sportsmanager_admin::adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten); + HTML_sportsmanager_admin::adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten); } -function adminExportTurniervoranmeldungen() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminExportTurniervoranmeldungen(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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'); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); + } - return; - } + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, beginn, typ FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, beginn, typ FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); - 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $voranmeldungen = $db->loadObjectList(); - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $voranmeldungen = $db->loadObjectList(); + $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 ($turnierdisziplin->typ == 0) { - $query = "SELECT t1.nachname as Nachname, t1.vorname as Vorname, t1.spielernr as Spielernr" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_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), 'Keiner') AS Verein"; - if ($format != 0) - $query .= ", t1.geschlecht as Geschlecht"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte"; - } - else { - $query = "SELECT t1.nachname as Nachname1, t1.vorname as Vorname1, t1.spielernr as Spielernr1" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_1_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), 'Keiner') AS Verein1"; - if ($format != 0) - $query .= ", t1.geschlecht as Geschlecht1"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) AS Punkte1"; - $query .= ", t2.nachname as Nachname2, t2.vorname as Vorname2, t2.spielernr as Spielernr2" - . ", COALESCE((SELECT #__sportsmanager_verein.vereinsname FROM #__sportsmanager_verein, #__sportsmanager_mitglied_von_verein WHERE #__sportsmanager_mitglied_von_verein.spieler_id = spieler_2_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), 'Keiner') AS Verein2"; - if ($format != 0) - $query .= ", t2.geschlecht as Geschlecht2"; - if ($ranglisteid != 0) - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Punkte2"; - if ($ranglisteid != 0) { - $query .= ", GREATEST(COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0), COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0)) AS Maximum"; - $query .= ", COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_1_id), 0) + COALESCE((SELECT punkte FROM #__sportsmanager_rangliste_punkte WHERE rangliste_id = $ranglisteid AND #__sportsmanager_rangliste_punkte.spieler_id = spieler_2_id), 0) AS Summe"; - } - } - $query .= "\n FROM #__sportsmanager_turniervoranmeldung" - . "\n LEFT JOIN #__sportsmanager_spieler AS t1 ON t1.spieler_id = spieler_1_id" - . "\n LEFT JOIN #__sportsmanager_spieler AS t2 ON t2.spieler_id = spieler_2_id" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid" - . "\n ORDER BY " . ($ranglisteid != 0 ? ($turnierdisziplin->typ == 0 ? "Punkte DESC, " : ($sortierung == 0 ? "Summe DESC, " : "Maximum DESC, ")) : "") . "t1.nachname, t1.vorname"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $voranmeldungen = $db->loadObjectList(); -*/ - $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"; - if ($format == 0) { - $trennzeichen = "\t"; + $header = ""; + foreach ($voranmeldungen[0] as $field => $value) + $header .= $field . $trennzeichen; - $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); - $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"; + } - 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++; + } + } - $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(); + die(); } -function adminTurnierdisziplinMeldungenSpiele() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminTurnierdisziplinMeldungenSpiele(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); - if ($turnierdisziplinid == 0) die ("Wrong id!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); + 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $platzierung_anzeigen = $db->loadResult() > 0; + $query = "SELECT IF (EXISTS (SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierDisziplinId AND platz > 0), 1, 0)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $platzierung_anzeigen = $db->loadResult() > 0; - $meldungen = array(); - $meldungenSpielerNamen = array(); - foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { - /* Abfrage war erheblich zu langsam bei großem Bestand + $meldungen = array(); + $meldungenSpielerNamen = array(); + foreach (array(0, 1, 2, 3, 10, 20) as $rundenstufe) { + /* Abfrage war erheblich zu langsam bei großem Bestand $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'" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '$rundenstufe'" . "\n ORDER BY platz, name1, name2"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $meldungen[$rundenstufe] = $db->loadObjectList(); foreach ($meldungen[$rundenstufe] as $meldung) { @@ -12124,6261 +11701,5844 @@ function adminTurnierdisziplinMeldungenSpiele() { } */ - $query = "SELECT platz, turniermeldung_id" - . "\n FROM #__sportsmanager_turniermeldung" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = '$rundenstufe'" - . "\n ORDER BY platz, turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen[$rundenstufe] = $db->loadObjectList(); - } + $query = "SELECT platz, turniermeldung_id" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = '$rundenstufe'" + . "\n ORDER BY platz, turniermeldung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungen[$rundenstufe] = $db->loadObjectList(); + } - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungenSpieler = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungenSpieler = $db->loadObjectList(); - 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); - } + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $rundenstufen_details = array(); - foreach ($rows as $row) { - $rundenstufen_details[$row->rundenstufe] = $row; - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele[$rundenstufe] = $db->loadObjectList(); - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele[$rundenstufe] = $db->loadObjectList(); + } - HTML_sportsmanager_admin::adminTurnierdisziplinMeldungenSpiele($disziplin, $rundenstufen_details, $meldungen, $meldungenSpielerNamen, $spiele, $platzierung_anzeigen); + HTML_sportsmanager_admin::adminTurnierdisziplinMeldungenSpiele($disziplin, $rundenstufen_details, $meldungen, $meldungenSpielerNamen, $spiele, $platzierung_anzeigen); } -function adminTurnierdisziplinMeldungenSpieleAlleEntfernen() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminTurnierdisziplinMeldungenSpieleAlleEntfernen(): void +{ + $db = getDatabase(); + global $_FILES; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); - $id = $jinput->get('turnierdisziplinid', 0, 'INT'); - $veranstalter_id = $jinput->get('veranstalterid', 0, 'INT'); + $id = $jInput->get('turnierdisziplinid', 0, 'INT'); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + } - return; - } + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); - if (benutzerZugriff("turniere_aendern")) - $zugriffsebene = 2; - else if (benutzerTurnierModerator($turnierdisziplin->turnier_id)) - $zugriffsebene = 1; - else - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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; - $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 FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $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_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 (!$result = $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 #__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 (!$result = $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_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $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_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - if ($elo_aktualisieren) { + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); } - ranglisteAktualisieren(0, $id); - einstufungAktualisieren(); + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); } -function adminImportTurnierdisziplinMeldungenSpieleForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminImportTurnierdisziplinMeldungenSpieleForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; - if (benutzerZugriff("turniere_aendern")) - $zugriffsebene = 2; - else if (benutzerTurnierModerator($row->turnier_id)) - $zugriffsebene = 1; - else - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($row->turnier_id)) { + keinZugriff(true); + } - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter, $zugriffsebene); + HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter); } -function adminImportTurnierdisziplinMeldungenSpiele() { - $db = getDatabase(); - global $_FILES; - $jinput = JFactory::getApplication()->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); - - return; - } - - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$result = $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."); - - return; - } - if (feof($handle)) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer."); - - return; - } - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - if (substr($titelzeile, 0, 4) == "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))); - } - if (strpos($titelzeile, "\t") !== false) - $trennzeichen = "\t"; - else if (strpos($titelzeile, ";") !== false) - $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"])) { - $nichtGefundeneSpieler = ""; - $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)); - } - - if (isset($spalte["itsf"])) { - if (!isset($daten[$spalte["itsf"]])) - continue; - $itsf_daten = $daten[$spalte["itsf"]]; - if (empty($itsf_daten)) - continue; - - if (!$ist_doppel && strpos($itsf_daten, " - ") !== false) { - 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 != "-" && substr($feld, 0, 1) != "(") { - if (!empty($nachname1)) - $nachname1 .= " "; - $nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); - continue; - } - $position = 3; - } - if ($position == 3) { - if ($feld == "-") - continue; - if (substr($feld, 0, 1) == "(" && 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 != "-" && substr($feld, 0, 1) != "(") { - 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 (substr($feld, 0, 1) == "(" && 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - 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; - } - array_push($spielerMeldungen, $spielerMeldung); - } - fclose($handle); - - foreach ($spielerMeldungen as $spielerMeldung) { - $platz = $spielerMeldung["p"]; - $spieler1_id = isset($spielerMeldung["1"]) ? $spielerMeldung["1"] : null; - if ($ist_doppel) - $spieler2_id = isset($spielerMeldung["2"]) ? $spielerMeldung["2"] : null; - - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$id', '0', '$platz');"; - $db->setQuery($query); - if (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $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 DOMIT_Document(); - // $success = $disziplinVorrunde->loadXML($_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."); - - return; - } - } - } - - // Daten zu Zusatzrunde laden - $disziplinZusatzrunde = null; - if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) { - // $disziplinZusatzrunde = new DOMIT_Document(); - // $success = $disziplinZusatzrunde->loadXML($_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."); - - return; - } - } - } - - // 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 DOMIT_Document(); - // $success = $disziplinZusatzrunde2->loadXML($_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."); - - return; - } - } - } - - // Daten zu Hauptrunde laden - // $disziplin = new DOMIT_Document(); - // $success = $disziplin->loadXML($_FILES["daten"]["tmp_name"]); - $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."); - - return; - } - - if ($disziplinVorrunde != null) { - $matchingNodes = $disziplinVorrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - if ($disziplinZusatzrunde != null) { - $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - if ($disziplinZusatzrunde2 != null) { - $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - - return; - } - } - - $matchingNodes = $disziplin->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin."); - - return; - } - // if ($matchingNodes->getLength() != 1) { - if ($matchingNodes->length != 1) { - /* - $handle = fopen ($_FILES["daten"]["tmp_name"], "r"); - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - echo htmlentities_utf8($buffer) . "
"; - } - fclose($handle); - echo "...
"; - */ - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten."); - - return; - } - - // Spieler-Ids über Spielerliste ermitteln - $meldungenSpieler = array(); - $meldungenPlatz = array(); - foreach (array(0, 1, 2, 3, 10) as $rundenstufe) - $meldungenPlatz[$rundenstufe] = array(); - //$meldungenVerein = array(); - $meldungenIds = array(); - $matchingNodes = $disziplin->getElementsByTagName("meldung"); - if ($matchingNodes != null) { - // $totalHauptrunde = $matchingNodes->getLength(); - $totalHauptrunde = $matchingNodes->length; - for ($i = 0; $i < $totalHauptrunde; $i++) { - $currNode = $matchingNodes->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $meldungPlatz; - $meldungenPlatz[1][$meldungName] = $meldungPlatz; - -// $spieler = $currNode->firstChild; -// while ($spieler != NULL) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); -// $spieler = $spieler->nextSibling; - } - } - - $neueMeldungenZusatzrunde = 0; - if ($disziplinZusatzrunde != null) { - $matchingNodesZusatzrunde = $disziplinZusatzrunde->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde != null) { - //$totalZusatzrunde = $matchingNodesZusatzrunde->getLength(); - $totalZusatzrunde = $matchingNodesZusatzrunde->length; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode = $matchingNodesZusatzrunde->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenPlatz[2][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz; - - // $spieler = $currNode->firstChild; - // while ($spieler != NULL) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler = $spieler->nextSibling; - } - } - } - } - } - else - $totalZusatzrunde = 0; - - $neueMeldungenZusatzrunde2 = 0; - if ($disziplinZusatzrunde2 != null) { - $matchingNodesZusatzrunde2 = $disziplinZusatzrunde2->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde2 != null) { - // $totalZusatzrunde2 = $matchingNodesZusatzrunde2->getLength(); - $totalZusatzrunde2 = $matchingNodesZusatzrunde2->length; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode = $matchingNodesZusatzrunde2->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $currNode->getAttribute("platz"); - $meldungenPlatz[3][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde2++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz; - - // $spieler = $currNode->firstChild; - // while ($spieler != NULL) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler = $spieler->nextSibling; - } - } - } - } - } - else - $totalZusatzrunde2 = 0; - - $disziplinVorrundeErsterPlatz = 0; - if ($disziplinVorrunde != null) { - $matchingNodesVorrunde = $disziplinVorrunde->getElementsByTagName("meldung"); - if ($matchingNodesVorrunde != null) { - // $totalVorrunde = $matchingNodesVorrunde->getLength(); - $totalVorrunde = $matchingNodesVorrunde->length; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode = $matchingNodesVorrunde->item($i); - // $meldungName = utf8_encode($currNode->getAttribute("name")); - $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 = utf8_encode($currNode->getAttribute("name")); - $meldungName = $currNode->getAttribute("name"); - //if (!isset($meldungenVerein[$meldungName])) - // $meldungenVerein[$meldungName] = utf8_encode($currNode->getAttribute("verein")); - $meldungPlatz = $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; - - // $spieler = $currNode->firstChild; - // while ($spieler != NULL) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - else - $gefunden = null; - - if (!$gefunden) { - // $spielerVorname = $spieler->hasAttribute("vorname") ? utf8_encode(trim($spieler->getAttribute("vorname"))) : ""; - // $spielerNachname = utf8_encode(trim($spieler->getAttribute("nachname"))); - // $spielerVerein = utf8_encode(trim($spieler->getAttribute("verein"))); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $s = $db->loadObjectList(); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - array_push($meldungenSpieler[$meldungName], $gefunden); - else - array_push($meldungenSpieler[$meldungName], array($spielerNachname, $spielerVorname, $spielerVerein)); - // $spieler = $spieler->nextSibling; - } - } - } - } - } - - // 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 (!$result = $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 (!$result = $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 (!$result = $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])) { - array_push($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->getLength(); - $totalVorrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel = $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz = $spiel->firstChild; - // while ($satz != NULL) { - $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++; - } - // $satz = $satz->nextSibling; - } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel = $spiel->nextSibling; - } - } - 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 != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '10'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - $totalZusatzrunde = 0; - if ($disziplinZusatzrunde != null) { - $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $totalZusatzrunde = $matchingNodes->getLength(); - $totalZusatzrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel = $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz = $spiel->firstChild; - // while ($satz != NULL) { - $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++; - } - // $satz = $satz->nextSibling; - } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel = $spiel->nextSibling; - } - } - 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 != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '2'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - $totalZusatzrunde2 = 0; - if ($disziplinZusatzrunde2 != null) { - $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $totalZusatzrunde2 = $matchingNodes->getLength(); - $totalZusatzrunde2 = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel = $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz = $spiel->firstChild; - // while ($satz != NULL) { - $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++; - } - // $satz = $satz->nextSibling; - } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel = $spiel->nextSibling; - } - } - 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 != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '3'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - - $matchingNodes = $disziplin->getElementsByTagName("runde"); - if ($matchingNodes != null) { - // $total = $matchingNodes->getLength(); - $total = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $total; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - // $spiel = $currNode->firstChild; - // while ($spiel != NULL) { - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - // $heim = utf8_encode($spiel->getAttribute("heim")); - // $gast = utf8_encode($spiel->getAttribute("gast")); - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - // $satz = $spiel->firstChild; - // while ($satz != NULL) { - $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++; - } - // $satz = $satz->nextSibling; - } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - // $spiel = $spiel->nextSibling; - } - } - 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 != 0 ? "'$ergebnis_saetze_maximum'" : "null") . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '1'"; - $db->setQuery($query); - if (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $runden = $db->loadObjectList(); - - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - - $query = "UPDATE #__sportsmanager_turnierspiel" - . "\n SET runde = '19999'" - . "\n WHERE turnierspiel_id = '" . $rows[0]->turnierspiel_id . "'"; - $db->setQuery($query); - if (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - if ($elo_aktualisieren) { +#[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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $s = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $runden = $db->loadObjectList(); + + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + + $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(); + ranglisteAktualisieren(0, $id); + einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); } -function adminEditTurnierdisziplinSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnierdisziplinSpiel(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + 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!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } + if (empty($id)) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_turnierspiel WHERE turnierspiel_id = $id AND turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungen = $db->loadObjectList(); - /* - $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 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" - . "\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"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $meldungenSpieler = $db->loadObjectList(); - - $meldungenSpielerNamen = array(); - foreach ($meldungenSpieler as $s) { - if (!isset($meldungenSpielerNamen[$s->turniermeldung_id])) - $meldungenSpielerNamen[$s->turniermeldung_id] = $s->nachname . ", " . $s->vorname; - else - $meldungenSpielerNamen[$s->turniermeldung_id] .= " / " . $s->nachname . ", " . $s->vorname; - } - - asort($meldungenSpielerNamen); -*/ - HTML_sportsmanager_admin::adminEditTurnierdisziplinSpiel($row, $disziplin, $rundenstufen_details, $meldungen, $rundenstufe); + HTML_sportsmanager_admin::adminEditTurnierdisziplinSpiel($row, $disziplin, $rundenstufen_details, $meldungen, $rundenstufe); } -function adminSaveTurnierdisziplinSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnierdisziplinSpiel(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id); + } - return; - } + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); - 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); - $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); - if ($rundentyp >= 10000) - $runde = $rundentyp; - else if ($rundentyp == -2) - $runde = 20000 + ((99 - abs($platzierung_ende - $runde)) * 100) + 99 - min($runde, $platzierung_ende); - else if ($hauptrunde && $rundentyp == 0) - $runde = 0; + $gewinner_meldung_id = $jInput->get('gewinner_meldung_id', 0, 'INT'); + $verlierer_meldung_id = $jInput->get('verlierer_meldung_id', 0, 'INT'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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; - $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 ($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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + if ($elo_aktualisieren) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } - if ($elo_aktualisieren) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id); } -function adminRemoveTurnierdisziplinSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTurnierdisziplinSpiel(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $turnierdisziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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; + $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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(); - } + if ($elo_aktualisieren) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); } -function adminEditTurnierdisziplinRunde() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnierdisziplinRunde(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + 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'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $query = "SELECT #__sportsmanager_turnierdisziplin.turnierdisziplin_id, disziplin, turnierbezeichnung, turnierort, beginn FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - HTML_sportsmanager_admin::adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $turnierdisziplin); + HTML_sportsmanager_admin::adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $turnierdisziplin); } -function adminSaveTurnierdisziplinRunde() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnierdisziplinRunde(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id); + } - return; - } + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); - 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 ($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)); + } + } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid . '#sid' . $id); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#sid' . $id); } -function adminEditTurnierdisziplinMeldung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnierdisziplinMeldung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + 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!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + 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) { - $row = null; - $meldung = null; - $meldung_spieler = null; + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $turnierDisziplinId ORDER BY rundenstufe, platz DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - if (count($rows) > 0) { - array_push($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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $meldung = $rows[0]; + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + if ($meldung->meldungsgruppe_id != null) { + $query = "SELECT * FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $meldung->turnierdisziplin_id AND meldungsgruppe_id = $meldung->meldungsgruppe_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - foreach ($rows as $row) { - array_push($rundenstufen, $row->rundenstufe); - $platzierungen[$row->rundenstufe] = $row->platz; - } - } - else { - array_push($rundenstufen, $meldung->rundenstufe); - $platzierungen[$meldung->rundenstufe] = $meldung->platz; - } + foreach ($rows as $row) { + $rundenstufen[] = $row->rundenstufe; + $platzierungen[$row->rundenstufe] = $row->platz; + } + } else { + $rundenstufen[] = $meldung->rundenstufe; + $platzierungen[$meldung->rundenstufe] = $meldung->platz; + } - $rundenstufe = $meldung->rundenstufe; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldung_spieler = $db->loadObjectList(); + } - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldung_spieler = $db->loadObjectList(); - } + $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id)" + . "\n ORDER BY nachname, vorname"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - $query = "SELECT DISTINCT spieler_id, vorname, nachname, spielernr" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE NOT ISNULL(aktueller_verein_id)" - . "\n ORDER BY nachname, vorname"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditTurnierdisziplinMeldung($meldung, $rundenstufe, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere); + HTML_sportsmanager_admin::adminEditTurnierdisziplinMeldung($meldung, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere); } -function adminSaveTurnierdisziplinMeldung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnierdisziplinMeldung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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'); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId . '#mid' . $id); + } - return; - } + $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); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(true); - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - /* - if ($platz > 0 && ($spieler_1_id != 0 || $spieler_2_id != 0)) { - $query = "SELECT COUNT(*) FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung USING (turniermeldung_id) WHERE platz > 0 AND rundenstufe = $rundenstufe AND #__sportsmanager_turniermeldung.turniermeldung_id != $id AND turnierdisziplin_id = $turnierdisziplinid"; - if ($spieler_1_id != 0 && $spieler_2_id != 0) - $query .= " AND (#__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id OR #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id)"; - else if ($spieler_1_id != 0) - $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_1_id"; - else - $query .= " AND #__sportsmanager_turniermeldung_spieler.spieler_id = $spieler_2_id"; - $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - if ($db->loadResult() > 0) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid, "Die Meldung wurde nicht gespeichert, da zu mindestens einem der Spieler bereits eine Platzierung bei einer anderen Meldung eingetragen ist."); - } - } - */ + $elo_aktualisieren = $turnierdisziplin->elo_wertung; + $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if ($id == 0) { + $rundenstufe = count($rundenstufen) > 0 ? $rundenstufen[0] : 0; + $platz = $platzierungen[$rundenstufe]; - $elo_aktualisieren = $turnierdisziplin->elo_wertung; - $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; + $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(); - if ($id == 0) { - $rundenstufe = count($rundenstufen) > 0 ? $rundenstufen[0] : 0; - $platz = $platzierungen[$rundenstufe]; + $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(); - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$turnierdisziplinid', '$rundenstufe', " . ($platz != 0 ? "'$platz'" : "NULL") . ");"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $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)); + } + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_id = $db->insertid(); + 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_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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $meldung = $rows[0]; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_id = $db->insertid(); + $rundenstufe = $meldung->rundenstufe; + $platz = $platzierungen[$rundenstufe]; - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - } - else { - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $id AND turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $meldung = $rows[0]; + $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)); + } - $rundenstufe = $meldung->rundenstufe; - $platz = $platzierungen[$rundenstufe]; + $query = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET platz = " . ($platz != 0 ? "'$platz'" : "NULL") - . "\n WHERE turniermeldung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + 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 = "SELECT * FROM #__sportsmanager_turniermeldung_spieler LEFT JOIN #__sportsmanager_turniermeldung_spieler_name USING (turniermeldung_spieler_id) WHERE turniermeldung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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 ($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 (!$result = $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 (!$result = $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 (!$result = $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_1_id != 0 ? "'$spieler_1_id'" : "NULL") - . "\n WHERE turniermeldung_spieler_id = " . $rows[0]->turniermeldung_spieler_id; - $db->setQuery($query); - if (!$result = $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)); + } + } + } - 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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + meldungsgruppe_verknuepfen($id, $rundenstufen, $platzierungen); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - meldungsgruppe_verknuepfen($id, $rundenstufen, $platzierungen); - - if ($elo_aktualisieren) { + if ($elo_aktualisieren) { wannGespieltAktualisieren(); eloAktualisieren($aktualisieren_ab_datum); } - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); + 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'); + 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'); } -function adminRemoveTurnierdisziplinMeldung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTurnierdisziplinMeldung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $query = "SELECT turnier_id FROM #__sportsmanager_turnierdisziplin INNER JOIN #__sportsmanager_turnier USING (turnier_id) WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $meldung = $rows[0]; + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); - meldungssgruppe_entfernen($id); + meldungssgruppe_entfernen($id); - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); + ranglisteAktualisieren(0, $turnierDisziplinId); + einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); } -function adminVerknuepfenTurnierdisziplinMeldungForm() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminVerknuepfenTurnierdisziplinMeldungForm(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(true); - $turnierdisziplinid = $jinput->get('turnierdisziplinid', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); - $disziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong id!"); + $disziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($disziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $meldungen[$rundenstufe] = $db->loadObjectList(); - } - HTML_sportsmanager_admin::adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungen[$rundenstufe] = $db->loadObjectList(); + } + HTML_sportsmanager_admin::adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen); } -function adminVerknuepfenTurnierdisziplinMeldung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminVerknuepfenTurnierdisziplinMeldung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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'); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); + } - return; - } + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) die("Wrong 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) die("Wrong id!"); + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($rows[0]->turnier_id)) + keinZugriff(); - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); + meldungsgruppe_erweitern($meldung_id, $rundenstufen); + } + } - meldungsgruppe_erweitern($meldung_id, $rundenstufen); - } - } + ranglisteAktualisieren(0, $turnierDisziplinId); + einstufungAktualisieren(); - ranglisteAktualisieren(0, $turnierdisziplinid); - einstufungAktualisieren(); - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); } -function meldungsgruppe_erweitern($quelle_turniermeldung_id, $rundenstufen) { - $db = getDatabase(); +function meldungsgruppe_erweitern($quelle_turniermeldung_id, $rundenstufen): void +{ + $db = getDatabase(); - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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" + . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + if ($quelle_meldung->meldungsgruppe_id != null) { + $query = "SELECT DISTINCT rundenstufe FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - foreach ($rows as $row) { - if (!in_array($row->rundenstufe, $rundenstufen)) - array_push($rundenstufen, $row->rundenstufe); - } - } - else { - if (!in_array($quelle_meldung->rundenstufe, $rundenstufen)) - array_push($rundenstufen, $quelle_meldung->rundenstufe); - } + 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); + meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, null); } -function meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, $platzierungen) { - $db = getDatabase(); +function meldungsgruppe_verknuepfen($quelle_turniermeldung_id, $rundenstufen, $platzierungen): void +{ + $db = getDatabase(); - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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" + . "\n WHERE turniermeldung_id = $quelle_turniermeldung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $quelle_meldung_spieler = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $quelle_meldung_spieler = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + 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'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - if (empty($rundenstufen) || !in_array($rundenstufe, $rundenstufen)) { - if (count($rows) == 0) - continue; - $ziel_meldung = $rows[0]; + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_turniermeldung_id = $db->insertid(); + $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $turniermeldung_spieler_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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ziel_meldung_spieler = $db->loadObjectList(); - if (count($ziel_meldung_spieler) != count($quelle_meldung_spieler)) die("Wrong id!"); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ziel_meldung_spieler = $db->loadObjectList(); + 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]; + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); - if ($n == 1) { - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET meldungsgruppe_id = NULL" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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) { - $db = getDatabase(); +function meldungssgruppe_entfernen($turniermeldung_id): void +{ + $db = getDatabase(); - $query = "SELECT * FROM #__sportsmanager_turniermeldung" - . "\n WHERE turniermeldung_id = $turniermeldung_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 0) die("Wrong id!"); - $meldung = $rows[0]; - $meldungsgruppe_id = $meldung->meldungsgruppe_id != null ? $meldung->meldungsgruppe_id : $turniermeldung_id; + $query = "SELECT * FROM #__sportsmanager_turniermeldung" + . "\n WHERE turniermeldung_id = $turniermeldung_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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 (!$result = $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 (!$result = $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $n = $db->loadResult(); + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_turniermeldung" + . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $n = $db->loadResult(); - if ($n == 1) { - $query = "UPDATE #__sportsmanager_turniermeldung" - . "\n SET meldungsgruppe_id = NULL" - . "\n WHERE meldungsgruppe_id = $meldungsgruppe_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + 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() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTurnierdisziplinRundenstufe(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(true); + 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!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; - HTML_sportsmanager_admin::adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details); + HTML_sportsmanager_admin::adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details); } -function adminSaveTurnierdisziplinRundenstufe() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTurnierdisziplinRundenstufe(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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!"); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); + } - return; - } + $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'); - $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'); - $spielfelder_erstes = $jinput->get('spielfelder_erstes', 0, 'INT'); - $spielfelder_letztes = $jinput->get('spielfelder_letztes', 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - // 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) + keinZugriff(); - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); + $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierDisziplinId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); - $query = "SELECT * FROM #__sportsmanager_turnierdisziplin WHERE turnierdisziplin_id = $turnierdisziplinid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + $query = "SELECT *" + . "\n FROM #__sportsmanager_turnier_rundenstufe" + . "\n WHERE turnierdisziplin_id = $turnierDisziplinId AND rundenstufe = $rundenstufe"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $rundenstufen_details = count($rows) >= 1 ? $rows[0] : null; - $query = "SELECT *" - . "\n FROM #__sportsmanager_turnier_rundenstufe" - . "\n WHERE turnierdisziplin_id = $turnierdisziplinid AND rundenstufe = $rundenstufe"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $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 == 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 (!$result = $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 (!$result = $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)); + } + } + } - 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } - - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierdisziplinid); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); } -function adminRemoveTurnierdisziplinRundenstufe() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTurnierdisziplinRundenstufe(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) - keinZugriff(); + 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!"); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $turnierdisziplin = $rows[0]; + // 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $turnierdisziplin = $rows[0]; - if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator($turnierdisziplin->turnier_id)) - keinZugriff(); + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $turnierDisziplinId); } -function adminSpielerExportBilderForm() { - $db = getDatabase(); +function adminSpielerExportBilderForm(): void +{ + $db = getDatabase(); - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + $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); + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(true); - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - return; - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerExportBilder($veranstalter, $beschraenkter_zugriff); + HTML_sportsmanager_admin::adminSpielerExportBilder($veranstalter, $beschraenkter_zugriff); } -function adminSpielerExportBilder() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[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'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + } - return; - } + $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; - $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 (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); - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $veranstalter = $rows[0]; + } else + $veranstalter = null; - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - if ($beschraenkter_zugriff == 1) { - $query = "SELECT DISTINCT veranstalter_id" - . "\n FROM #__sportsmanager_veranstalter" - . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + if (count($veranstalter) == 0) + keinZugriff(); + } - if (count($veranstalter) == 0) - keinZugriff(); - } + $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; + if (!Folder::exists($ziel_bilder_pfad) && !Folder::create($ziel_bilder_pfad, 0777)) { + redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); + } - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; - if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::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."); + } + } - return; - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - $alte_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::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."); + 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')) + $ext = "png"; + else if (File::exists($pfad . 'jpg')) + $ext = "jpg"; + else + continue; - return; - } - } + 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."); + } + } - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $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); - $anzahlSpieler = 0; - foreach ($spieler as $s) { - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'spieler' . DIRECTORY_SEPARATOR . $s->spieler_id . '.'; - if (JFile::exists($pfad . 'png')) - $ext = "png"; - else if (JFile::exists($pfad . 'jpg')) - $ext = "jpg"; - else - continue; + foreach ($neue_bilder as $fn) + File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - if (!JFile::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."); - - return; - } - $anzahlSpieler++; - } - - /* - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach($neue_bilder as $fn) - array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); - $file = tempnam("tmp", "tar"); - $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; -*/ - - if (class_exists("ZipArchive")) { - $file = tempnam("tmp", "zip"); - $zip = new ZipArchive(); - $zip->open($file, ZipArchive::OVERWRITE); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($neue_bilder as $fn) - $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach ($neue_bilder as $fn) { - $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); - } - $file = tempnam("tmp", "zip"); - $zip_adapter->create($file, $zip_dateien, array()); - } - else { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - foreach ($neue_bilder as $fn) - JFile::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(); + $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() { - $db = getDatabase(); +function adminVereineExportBilderForm(): void +{ + $db = getDatabase(); - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - return; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineExportBilder($veranstalter); + HTML_sportsmanager_admin::adminVereineExportBilder($veranstalter); } -function adminVereineExportBilder() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminVereineExportBilder(): void +{ + $db = getDatabase(); + global $sportsmanager_joomla_path; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine'); + } - return; - } + setMinMemoryLimit('256M'); + if (!ini_get('safe_mode')) + set_time_limit(300); - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $veranstalter = $rows[0]; + } else + $veranstalter = null; - $veranstalter_id = $jinput->get('veranstalter_id', 0, 'INT'); - if ($veranstalter_id != 0) { - $query = "SELECT veranstalterbezeichnung FROM #__sportsmanager_veranstalter WHERE veranstalter_id = $veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (!Folder::exists($ziel_bilder_pfad) && !Folder::create($ziel_bilder_pfad, 0777)) { + redirectSportsManagerURL('&task=admin_vereine', "Der Ordner 'images/sportsmanager/export' konnte nicht neu erstellt werden."); + } - $ziel_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'export'; - if (!JFolder::exists($ziel_bilder_pfad) && !JFolder::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."); + } + } - return; - } + $query = "SELECT verein_id, vereinsname" + . "\n FROM #__sportsmanager_verein" + . "\n WHERE NOT ausgetreten"; + if ($veranstalter_id != 0) + $query .= " AND veranstalter_id = $veranstalter_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $vereine = $db->loadObjectList(); - $alte_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/export' konnten nicht alle Dateien gelöscht werden."); + 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')) + $ext = "png"; + else if (File::exists($pfad . 'jpg')) + $ext = "jpg"; + else + continue; - return; - } - } + 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."); + } + } - $query = "SELECT verein_id, vereinsname" - . "\n FROM #__sportsmanager_verein" - . "\n WHERE NOT ausgetreten"; - if ($veranstalter_id != 0) - $query .= " AND veranstalter_id = $veranstalter_id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $vereine = $db->loadObjectList(); + $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); - $anzahlVereine = 0; - foreach ($vereine as $v) { - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'vereine' . DIRECTORY_SEPARATOR . $v->verein_id . '.'; - if (JFile::exists($pfad . 'png')) - $ext = "png"; - else if (JFile::exists($pfad . 'jpg')) - $ext = "jpg"; - else - continue; + foreach ($neue_bilder as $fn) + File::delete($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - if (!JFile::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."); - - return; - } - $anzahlVereine++; - } - /* - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach($neue_bilder as $fn) - array_push($zip_dateien, $ziel_bilder_pfad.DIRECTORY_SEPARATOR.$fn); - $file = tempnam("tmp", "tar"); - $zip = JArchive::create( $file, $zip_dateien, 'zip', '', $ziel_bilder_pfad );; -*/ - - if (class_exists("ZipArchive")) { - $file = tempnam("tmp", "zip"); - $zip = new ZipArchive(); - $zip->open($file, ZipArchive::OVERWRITE); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - foreach ($neue_bilder as $fn) - $zip->addFile($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn, iconv("ISO-8859-1", "CP437", $fn)); - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - $neue_bilder = JFolder::files($ziel_bilder_pfad); - $zip_dateien = array(); - foreach ($neue_bilder as $fn) { - $data = JFile::read($ziel_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - array_push($zip_dateien, array('name' => iconv("ISO-8859-1", "CP437", $fn), 'data' => $data)); - } - $file = tempnam("tmp", "zip"); - $zip_adapter->create($file, $zip_dateien, array()); - } - else { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); - - return; - } - - foreach ($neue_bilder as $fn) - JFile::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(); + $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() { - $db = getDatabase(); +function adminSpielerImportBilderForm(): void +{ + $db = getDatabase(); - $ansprechpartner_bilder_bearbeiten = einstellungswert("ansprechpartner_spielerdaten") == "1" || einstellungswert("ansprechpartner_spielerdaten") == "3"; + $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); + if (benutzerZugriff("spieler_aendern")) + $beschraenkter_zugriff = 0; + else if (benutzerVeranstalterModerator() && $ansprechpartner_bilder_bearbeiten) + $beschraenkter_zugriff = 1; + else + keinZugriff(true); - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - return; - } - - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminSpielerImportBilder($veranstalter, $beschraenkter_zugriff); + HTML_sportsmanager_admin::adminSpielerImportBilder($veranstalter, $beschraenkter_zugriff); } -function adminSpielerImportBilder() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +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"; + $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 (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'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_spieler'); + } - return; - } + $veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT'); + $bilder_beibehalten = $jInput->get('bilder_beibehalten', 0, 'INT'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - if ($beschraenkter_zugriff == 1) { - $query = "SELECT DISTINCT veranstalter_id" - . "\n FROM #__sportsmanager_veranstalter" - . "\n WHERE veranstalter_id = $veranstalter_id" . ($beschraenkter_zugriff == 1 ? (" AND" . veranstalterFilter("veranstalter_id IN")) : "") - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + if (count($veranstalter) == 0) + keinZugriff(); + } - if (count($veranstalter) == 0) - keinZugriff(); - } + $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; + if (!Folder::exists($quelle_bilder_pfad) && !Folder::create($quelle_bilder_pfad, 0777)) { + redirectSportsManagerURL('&task=admin_spieler', "Der Ordner 'images/sportsmanager/import' existiert nicht."); + } - $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; - if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::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."); + } + } - return; - } + $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)."); + } - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + if (!ini_get('safe_mode')) + set_time_limit(300); - return; - } - } - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - redirectSportsManagerURL('&task=admin_spieler', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + $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); - return; - } - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) + continue; + $spieler_id = $rows[0]->spieler_id; + } else + continue; - if (class_exists("ZipArchive")) { - $zip = new ZipArchive; - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { - redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); + if ($bilder_beibehalten) { + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $spieler_id . '.'; + if (File::exists($ziel_pfad . 'jpg') || File::exists($ziel_pfad . 'png')) + continue; + } - return; - } + $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]); + } - for ($i = 0; $i < $zip->numFiles; $i++) { - $filename = $zip->getNameIndex($i); - $fileinfo = pathinfo($filename); - copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); - } - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { - redirectSportsManagerURL('&task=admin_spieler', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); + $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); - return; - } - } - else { - redirectSportsManagerURL('&task=admin_spieler', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + sort($neue_bilder_alle); - return; - } - - 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 = JFolder::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 (strpos($bild, ",") !== false) { - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($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 = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - sort($neue_bilder_alle); - - HTML_sportsmanager_admin::adminSpielerImportBilderBericht($anzahlSpieler, $neue_bilder_alle); + HTML_sportsmanager_admin::adminSpielerImportBilderBericht($anzahlSpieler, $neue_bilder_alle); } -function adminVereineImportBilderForm() { - $db = getDatabase(); +function adminVereineImportBilderForm(): void +{ + $db = getDatabase(); - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(true); - if (!class_exists("ZipArchive") && !JArchive::getAdapter('zip')) { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + $query = "SELECT *" + . "\n FROM #__sportsmanager_veranstalter" + . "\n ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - return; - } - - $query = "SELECT *" - . "\n FROM #__sportsmanager_veranstalter" - . "\n ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminVereineImportBilder($veranstalter); + HTML_sportsmanager_admin::adminVereineImportBilder($veranstalter); } -function adminVereineImportBilder() { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +function adminVereineImportBilder(): void +{ + $db = getDatabase(); + global $_FILES; + global $sportsmanager_joomla_path; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("vereine_aendern")) - keinZugriff(); + if (!benutzerZugriff("vereine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=admin_vereine'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_vereine'); + } - return; - } + $veranstalter_id = $jInput->get('veranstalter_id', 0, 'INT'); + $bilder_beibehalten = $jInput->get('bilder_beibehalten', 0, 'INT'); - $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 (!Folder::exists($quelle_bilder_pfad) && !Folder::create($quelle_bilder_pfad, 0777)) { + redirectSportsManagerURL('&task=admin_uebersicht', "Der Ordner 'images/sportsmanager/import' existiert nicht."); + } - $quelle_bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'import'; - if (!JFolder::exists($quelle_bilder_pfad) && !JFolder::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."); + } + } - return; - } + $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)."); + } - $alte_bilder = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - redirectSportsManagerURL('&task=admin_vereine', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + if (!ini_get('safe_mode')) + set_time_limit(300); - return; - } - } - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) { - if (!JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn)) { - redirectSportsManagerURL('&task=admin_uebersicht', "Im Ordner 'images/sportsmanager/import' konnten nicht alle Dateien gelöscht werden."); + $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; - return; - } - } + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) != 1) + continue; + $verein_id = $rows[0]->verein_id; - if (class_exists("ZipArchive")) { - $zip = new ZipArchive; - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || $zip->open($_FILES["bilder_archiv"]["tmp_name"]) !== true) { - redirectSportsManagerURL('&task=admin_vereine', "Die ZIP-Datei kann nicht geöffnet werden (ZA)."); + if ($bilder_beibehalten) { + $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.'; + if (File::exists($ziel_pfad . 'jpg') || File::exists($ziel_pfad . 'png')) + continue; + } - return; - } + $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]); + } - for ($i = 0; $i < $zip->numFiles; $i++) { - $filename = $zip->getNameIndex($i); - $fileinfo = pathinfo($filename); - copy("zip://" . $_FILES["bilder_archiv"]["tmp_name"] . "#" . $filename, $quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fileinfo['basename']); - } - $zip->close(); - } - else if (JArchive::getAdapter('zip')) { - $zip_adapter = &JArchive::getAdapter('zip'); - if (empty($_FILES["bilder_archiv"]["tmp_name"]) || !is_uploaded_file($_FILES["bilder_archiv"]["tmp_name"]) || !$zip_adapter->extract($_FILES["bilder_archiv"]["tmp_name"], $quelle_bilder_pfad)) { - redirectSportsManagerURL('&task=admin_uebersicht', "Die ZIP-Datei kann nicht geöffnet werden (Z)."); + $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); - return; - } - } - else { - redirectSportsManagerURL('&task=admin_vereine', "Es steht keine Methode zur ZIP-Kompression zur Verfügung."); + sort($neue_bilder_alle); - return; - } - - 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 = JFolder::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 (substr($bild, 0, 7) != "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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) != 1) - continue; - $verein_id = $rows[0]->verein_id; - - if ($bilder_beibehalten) { - $ziel_pfad = $ziel_bilder_pfad . DIRECTORY_SEPARATOR . $verein_id . '.'; - if (JFile::exists($ziel_pfad . 'jpg') || JFile::exists($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 = JFolder::files($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFile::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - $alte_bilder = JFolder::folders($quelle_bilder_pfad); - foreach ($alte_bilder as $fn) - JFolder::delete($quelle_bilder_pfad . DIRECTORY_SEPARATOR . $fn); - - sort($neue_bilder_alle); - - HTML_sportsmanager_admin::adminVereineImportBilderBericht($anzahlVereine, $neue_bilder_alle); + HTML_sportsmanager_admin::adminVereineImportBilderBericht($anzahlVereine, $neue_bilder_alle); } -function adminTermine($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; + 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_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'); - $query = "SELECT DISTINCT YEAR(erster_tag) AS jahr" - . "\n FROM #__sportsmanager_termin" - . "\n ORDER BY erster_tag DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $jahre = $db->loadObjectList(); + $query = "SELECT DISTINCT YEAR(erster_tag) AS jahr" + . "\n FROM #__sportsmanager_termin" + . "\n ORDER BY erster_tag DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $jahre = $db->loadObjectList(); - $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; + $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) . "'"; - $query .= "\n GROUP BY termin_id" - . "\n ORDER BY erster_tag, bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termine = $db->loadObjectList(); + $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) . "'"; + $query .= "\n GROUP BY termin_id" + . "\n ORDER BY erster_tag, bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $termine = $db->loadObjectList(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbole = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $terminsymbole = $db->loadObjectList(); - $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(); - array_push($termineSymbole[$termin_id], $termin_symbol_id); - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $anzahl_beantragte_termine = $db->loadResult(); + $query = "SELECT COUNT(*)" + . "\n FROM #__sportsmanager_termin_aktion" + . "\n WHERE status = 2"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $anzahl_beantragte_termine = $db->loadResult(); - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstaltungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstaltungen = $db->loadObjectList(); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zusaetze = $db->loadObjectList(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $zusaetze = $db->loadObjectList(); - $query = "SELECT land" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n INNER JOIN (SELECT land FROM #__sportsmanager_termin_land UNION SELECT bundesland AS land FROM #__sportsmanager_termin_bundesland) AS land_bundesland USING (land)" - . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" - . "\n GROUP BY land" - . "\n ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); + $query = "SELECT land" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n INNER JOIN (SELECT land FROM #__sportsmanager_termin_land UNION SELECT bundesland AS land FROM #__sportsmanager_termin_bundesland) AS land_bundesland USING (land)" + . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)" + . "\n GROUP BY land" + . "\n ORDER BY land"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); - if (isJson()) { + 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, + "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, + "email" => $termin->email, ]; }, $termine); - JSON_sportsmanager::JSON($jsonexport); - } else { - HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $veranstaltungen, $zusaetze, $laender, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase()); + JSON_sportsmanager::JSON($jsonexport); + } else { + HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $veranstaltungen, $zusaetze, $laender, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase()); - if (!$admin_uebersicht) { - administrationFooter(); - } - } + if (!$admin_uebersicht) { + administrationFooter(); + } + } } -function adminEditTermin($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; + 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); + 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'); + $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : ''), "Der bisherige Termin existiert nicht mehr."); + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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]; - return; - } - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $terminsymbolanzeige = $db->loadObjectList(); + } - $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbolanzeige = $db->loadObjectList(); - } + $query = "SELECT termin_symbol_id, symboltitel, status" + . "\n FROM #__sportsmanager_termin_symbol" + . "\n ORDER BY status DESC, symboltitel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $terminsymbole = $db->loadObjectList(); - $query = "SELECT termin_symbol_id, symboltitel, status" - . "\n FROM #__sportsmanager_termin_symbol" - . "\n ORDER BY status DESC, symboltitel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminsymbole = $db->loadObjectList(); + $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; + } - $benachrichtigung_email = ""; - if (empty($id)) { - $aktion_user = JFactory::getUser(); - 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bezeichnungen = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungen = $db->loadObjectList(); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $bezeichnung_vorauswahl = count($rows) > 0 ? $rows[0]->bezeichnung : null; + } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $zusaetze = $db->loadObjectList(); + } - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $zusaetze = $db->loadObjectList(); - } + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bezeichnungszusaetze = $db->loadObjectList(); - 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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungszusaetze = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_termin_bundesland ORDER BY bundesland"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bundeslaender = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_termin_bundesland ORDER BY bundesland"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bundeslaender = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); - - HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte); + HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte); } -function adminSaveTermin($admin_uebersicht) { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +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" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; + 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 ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(); - $uebersicht = $jinput->get('uebersicht', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + $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' : '')); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + } - return; - } + $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')))); - $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)) - array_push($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"); - // 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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; + } - $termin_bezug_id = 0; - 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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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(); - $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 (!$result = $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)); + } + } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + for ($i = 0; $i <= 5; $i++) { - 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)); + } + } + } - $input = \Joomla\CMS\Factory::getApplication()->input; - $symbol_id = $input->getInt('symbol_id_' . $i, 0); - //$symbol_id = JRequest::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 (!$result = $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)); + } + } - 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 (!$result = $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; + } + } - $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 = JFolder::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 (!JFile::copy($quelle_pfad, $ziel_pfad)) - $dokument_kopieren_gescheitert = 2; - } - } - else if ($info == 2 && isset($info_dokument) && !$info_dokument['error']) { - $info_dokument_dateiname = JFile::makeSafe($info_dokument["name"]); - if ($info_dokument["size"] > 8388608) { - $dokument_kopieren_gescheitert = 1; - } - else { - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - $ziel_pfad = $bilder_pfad . DIRECTORY_SEPARATOR . $neuer_termin_id . " " . $info_dokument_dateiname; - if (!JFile::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)); + } - if (!empty($dokument_kopieren_gescheitert)) { - $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $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_zusatz WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $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)); + } - $query = "DELETE FROM #__sportsmanager_termin WHERE termin_id = $neuer_termin_id;"; - $db->setQuery($query); - if (!$result = $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.")); + } - 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") . ";"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - return; - } + foreach ($rows as $row) { + $dokumente = Folder::files($bilder_pfad, '^' . $row->termin_id . ' '); + foreach ($dokumente as $dokument) + File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } - 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") . ";"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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)); + } + } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } + $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(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten); - $user_id = JFactory::getUser()->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 (!$result = $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' : '')); - } + 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) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; + 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); + if ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine', "Der bisherige Termin existiert nicht mehr."); - } - $terminaktion = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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); + HTML_sportsmanager_admin::adminRemoveTermin($terminaktion, $nur_beantragte, $zugriffsebene, $admin_uebersicht); } -function adminRemoveTermin($admin_uebersicht) { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +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" && !JFactory::getUser()->guest && !isExternalDatabase()) - $zugriffsebene = 1; - else - $zugriffsebene = 0; + 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 ($zugriffsebene == 0 || isExternalDatabase()) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); + } - return; - } + $id = $jInput->get('id', 0, 'INT'); + $kommentar = $db->escape(trim($jInput->get('kommentar', '', 'RAW'))); - $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);"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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; - $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);"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - 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;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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); + } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::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)); + } + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $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 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(); - $user_id = JFactory::getUser()->id; - $query = "INSERT #__sportsmanager_termin_aktion" - . "\n SET termin_id = $id," - . "\n typ = '2'," // 0: Hinzufügen, 1: Ändern, 2: Entfernen - . "\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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termin_aktion_id = $db->insertid(); + termineEmailBenachrichtigung($termin_aktion_id); - termineEmailBenachrichtigung($termin_aktion_id); - - if ($zugriffsebene == 1) { - HTML_sportsmanager_admin::adminTermineBeantragtBestaetigung($admin_uebersicht); - } - else { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine'); - } + 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) { - $db = getDatabase(); - $app = &JFactory::getApplication(); +function termineEmailBenachrichtigung($termin_aktion_id, $ueberarbeiten = false) +{ + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) return false; - $terminaktion = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - foreach ($rows as $row) { - if ($row->termine_aendern) - array_push($benachrichtigung_moderatoren_aendern, $row->email); - else - array_push($benachrichtigung_moderatoren_informieren, $row->email); - } + $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'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + foreach ($rows as $row) { + if ($row->termine_aendern) + $benachrichtigung_moderatoren_aendern[] = $row->email; + else + $benachrichtigung_moderatoren_informieren[] = $row->email; + } - $benachrichtigung_benutzer = array(); - $aktion_user = JFactory::getUser($terminaktion->aktion_user_id); - if (($terminaktion->status == 2 && !empty($aktion_user->id) && !empty($aktion_user->email)) || ($terminaktion->status != 2 && !empty($aktion_user->id) && !empty($aktion_user->email) && ($terminaktion->aktion_user_id != $terminaktion->moderation_user_id || $terminaktion->aktion_zeitpunkt != $terminaktion->moderation_zeitpunkt))) - array_push($benachrichtigung_benutzer, $aktion_user->email); - $benachrichtigung_emails = explode(",", $terminaktion->benachrichtigung_email); - $benachrichtigung_alle_low = array_map('strtolower', array_merge($benachrichtigung_benutzer, $benachrichtigung_moderatoren_aendern, $benachrichtigung_moderatoren_informieren)); - foreach ($benachrichtigung_emails as $email) { - $email_trimmed = trim($email); - if (!in_array(strtolower($email_trimmed), $benachrichtigung_alle_low)) - array_push($benachrichtigung_benutzer, $email_trimmed); - } + $benachrichtigung_emails = explode(",", $terminaktion->benachrichtigung_email); - $termin_beschreibung = "
\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - if (!empty($terminaktion->zusaetze)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->ort)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->land)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->beschreibung)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); - if ($info_dokument_dateiname !== false) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - else if (!empty($terminaktion->url)) { - if (strpos($terminaktion->url, "://") === false) { - $termin_url_anzeige = $terminaktion->url; - $termin_url = "http://" . $terminaktion->url; - } - else { - $termin_url_anzeige = substr($terminaktion->url, 0, 7) == "http://" ? substr($terminaktion->url, 7) : $terminaktion->url; - $termin_url = $terminaktion->url; - } - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->email)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($benachrichtigung_emails)) { - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - if (!empty($terminaktion->ergebnisse_url)) { - if (strpos($terminaktion->ergebnisse_url, "://") === false) { - $termin_url_anzeige = $terminaktion->ergebnisse_url; - $termin_url = "http://" . $terminaktion->ergebnisse_url; - } - else { - $termin_url_anzeige = substr($terminaktion->ergebnisse_url, 0, 7) == "http://" ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; - $termin_url = $terminaktion->ergebnisse_url; - } - $termin_beschreibung .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } + $termin_beschreibung = "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + if (!empty($terminaktion->zusaetze)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->ort)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->land)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->beschreibung)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); + if ($info_dokument_dateiname !== false) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } else if (!empty($terminaktion->url)) { + if (!str_contains($terminaktion->url, "://")) { + $termin_url_anzeige = $terminaktion->url; + $termin_url = "http://" . $terminaktion->url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->url, "http://") ? substr($terminaktion->url, 7) : $terminaktion->url; + $termin_url = $terminaktion->url; + } + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->email)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($benachrichtigung_emails)) { + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + if (!empty($terminaktion->ergebnisse_url)) { + if (!str_contains($terminaktion->ergebnisse_url, "://")) { + $termin_url_anzeige = $terminaktion->ergebnisse_url; + $termin_url = "http://" . $terminaktion->ergebnisse_url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->ergebnisse_url, "http://") ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; + $termin_url = $terminaktion->ergebnisse_url; + } + $termin_beschreibung .= "\r\n" + . "\r\n" + . "\r\n" + . "\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 = "aktion_user_email) . "\">" . htmlentities_utf8($terminaktion->aktion_user_name) . ""; - 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 = "moderation_user_email) . "\">" . htmlentities_utf8($terminaktion->moderation_user_name) . ""; - $termin_moderationsstatus = "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - if (!empty($terminaktion->aktion_kommentar)) { - $termin_moderationsstatus .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - } - $termin_moderationsstatus .= "\r\n" - . "\r\n" - . "\r\n" - . "\r\n"; - if (!empty($terminaktion->moderation_kommentar)) { - $termin_moderationsstatus .= "\r\n" - . "\r\n" - . "\r\n" - . "\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 = "aktion_user_email) . "\">" . htmlentities_utf8($terminaktion->aktion_user_name) . ""; + 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 = "moderation_user_email) . "\">" . htmlentities_utf8($terminaktion->moderation_user_name) . ""; + $termin_moderationsstatus = "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + if (!empty($terminaktion->aktion_kommentar)) { + $termin_moderationsstatus .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } + $termin_moderationsstatus .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + if (!empty($terminaktion->moderation_kommentar)) { + $termin_moderationsstatus .= "\r\n" + . "\r\n" + . "\r\n" + . "\r\n"; + } - $from = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $mode = 1; - $cc = null; - $bcc = null; - $attachment = null; - $replyto = null; - $replytoname = null; - if ($terminaktion->status == 2) { - $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); - $body = "

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.

"; - $body .= "
\r\n"; + if (begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true, $praesentation) == 0) + begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_NEXT_MATCHES'), false, true, $praesentation); + echo "\r\n"; + begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_FINISHED_MATCHES'), true, true, $praesentation); echo "
Datum:" . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true) . ($terminaktion->bestaetigt ? "" : " (in Planung)") . "
Veranstaltung:" . htmlentities_utf8($terminaktion->bezeichnung) . "
Zusätze:" . htmlentities_utf8($terminaktion->zusaetze) . "
Ort:" . htmlentities_utf8($terminaktion->ort) . "
Land:" . htmlentities_utf8($terminaktion->land) . "
Beschreibung:" . htmlentities_utf8($terminaktion->beschreibung) . "
Weitere Informationen:termin_id, -1) . "\" target=\"_blank\">" . htmlentities_utf8(NichtLeererString($info_dokument_dateiname)) . "
Weitere Informationen:" . htmlentities_utf8($termin_url_anzeige) . "
E-Mail öffentlich:email) . "\">" . htmlentities_utf8($terminaktion->email) . "
E-Mail bei Änderungen:"; - foreach ($benachrichtigung_emails as $index => $email) { - $email_trimmed = trim($email); - $termin_beschreibung .= ($index > 0 ? ", " : "") . "" . htmlentities_utf8($email_trimmed) . ""; - } - $termin_beschreibung .= "
" . ($terminaktion->ergebnisse_live ? "Live-" : "") . "Ergebnisse:" . htmlentities_utf8($termin_url_anzeige) . "
Datum:" . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true) . ($terminaktion->bestaetigt ? "" : " (in Planung)") . "
Veranstaltung:" . htmlentities_utf8($terminaktion->bezeichnung) . "
Zusätze:" . htmlentities_utf8($terminaktion->zusaetze) . "
Ort:" . htmlentities_utf8($terminaktion->ort) . "
Land:" . htmlentities_utf8($terminaktion->land) . "
Beschreibung:" . htmlentities_utf8($terminaktion->beschreibung) . "
Weitere Informationen:termin_id, -1) . "\" target=\"_blank\">" . htmlentities_utf8(NichtLeererString($info_dokument_dateiname)) . "
Weitere Informationen:" . htmlentities_utf8($termin_url_anzeige) . "
E-Mail öffentlich:email) . "\">" . htmlentities_utf8($terminaktion->email) . "
E-Mail bei Änderungen:"; + foreach ($benachrichtigung_emails as $index => $email) { + $email_trimmed = trim($email); + $termin_beschreibung .= ($index > 0 ? ", " : "") . "" . htmlentities_utf8($email_trimmed) . ""; + } + $termin_beschreibung .= "
" . ($terminaktion->ergebnisse_live ? "Live-" : "") . "Ergebnisse:" . htmlentities_utf8($termin_url_anzeige) . "
 
Status:" . htmlentities_utf8($status[$terminaktion->status]) . "
Aktionstyp:" . htmlentities_utf8($aktion[$terminaktion->typ]) . "
Erstellung:" . FormatiertesDatum($terminaktion->aktion_zeitpunkt, true, false) . " von " . $aktion_user . "
Erstellerkommentar:" . nl2br(htmlentities_utf8($terminaktion->aktion_kommentar)) . "
Moderation:" . (empty($terminaktion->moderation_zeitpunkt) ? "Nicht erfolgt" : (FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . $moderation_user)) . "
Moderatorkommentar:" . nl2br(htmlentities_utf8($terminaktion->moderation_kommentar)) . "
 
Status:" . htmlentities_utf8($status[$terminaktion->status]) . "
Aktionstyp:" . htmlentities_utf8($aktion[$terminaktion->typ]) . "
Erstellung:" . FormatiertesDatum($terminaktion->aktion_zeitpunkt, true, false) . " von " . $aktion_user . "
Erstellerkommentar:" . nl2br(htmlentities_utf8($terminaktion->aktion_kommentar)) . "
Moderation:" . (empty($terminaktion->moderation_zeitpunkt) ? "Nicht erfolgt" : (FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . $moderation_user)) . "
Moderatorkommentar:" . nl2br(htmlentities_utf8($terminaktion->moderation_kommentar)) . "
\r\n" . $termin_beschreibung . $termin_moderationsstatus . "
\r\n"; - } - else { - $subject = "Termin " . $aktion[$terminaktion->typ] . " " . ($terminaktion->status == 0 ? "akzeptiert" : "abgelehnt") . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); - $body = "

Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde " . ($terminaktion->status == 0 ? ($ueberarbeiten ? "in überarbeiteter Form akzeptiert" : "akzeptiert") : "abgelehnt") . ".

"; - $body .= "\r\n" . $termin_beschreibung . $termin_moderationsstatus . "
\r\n"; - } - foreach ($benachrichtigung_emails as $email) - JFactory::getMailer()->sendMail($from, $fromname, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname); + $from = $app->getCfg('mailfrom'); + $fromName = $app->getCfg('fromname'); + $mode = 1; + $cc = null; + $bcc = null; + $attachment = null; + $replyTo = null; + $replyToName = null; + if ($terminaktion->status == 2) { + $subject = "Termin " . $aktion[$terminaktion->typ] . " beantragt: " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); + $body = "

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.

"; + } else { + $subject = "Termin " . $aktion[$terminaktion->typ] . " " . ($terminaktion->status == 0 ? "akzeptiert" : "abgelehnt") . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); + $body = "

Das " . htmlentities_utf8($aktion[$terminaktion->typ]) . " des folgenden Termins wurde " . ($terminaktion->status == 0 ? ($ueberarbeiten ? "in überarbeiteter Form akzeptiert" : "akzeptiert") : "abgelehnt") . ".

"; + } + $body .= "\r\n" . $termin_beschreibung . $termin_moderationsstatus . "
\r\n"; + $mailer = Factory::getContainer()->get(Mail::class); + foreach ($benachrichtigung_emails as $email) + $mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); - $from = $app->getCfg('mailfrom'); - $fromname = $app->getCfg('fromname'); - $mode = 1; - $cc = null; - $bcc = null; - $attachment = null; - $replyto = null; - $replytoname = null; - 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 = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " beantragt:

\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 = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " akzeptiert:

"; - } - else { - $subject = "Termin " . $aktion[$terminaktion->typ] . " abgelehnt von " . $terminaktion->moderation_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); - $body = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " abgelehnt:

"; - } - $body .= "\r\n" . $termin_beschreibung . $termin_moderationsstatus . "
\r\n"; - foreach ($benachrichtigung_moderatoren_informieren as $email) - JFactory::getMailer()->sendMail($from, $fromname, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname); + $from = $app->getCfg('mailfrom'); + $fromName = $app->getCfg('fromname'); + $mode = 1; + $cc = null; + $bcc = null; + $attachment = null; + $replyTo = null; + $replyToName = null; + 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 = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " beantragt:

\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 = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " akzeptiert:

"; + } else { + $subject = "Termin " . $aktion[$terminaktion->typ] . " abgelehnt von " . $terminaktion->moderation_user_name . ": " . $terminaktion->bezeichnung . " am " . FormatierterTermin($terminaktion->erster_tag, $terminaktion->letzter_tag, true); + $body = "

Termin " . htmlentities_utf8($aktion[$terminaktion->typ]) . " abgelehnt:

"; + } + $body .= "\r\n" . $termin_beschreibung . $termin_moderationsstatus . "
\r\n"; + foreach ($benachrichtigung_moderatoren_informieren as $email) + $mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); - $body .= "

Bitte termin_aktion_id, -1) . "\">hier klicken, um den Termin zu moderieren.

\r\n"; - foreach ($benachrichtigung_moderatoren_aendern as $email) - JFactory::getMailer()->sendMail($from, $fromname, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname); + $body .= "

Bitte termin_aktion_id, -1) . "\">hier klicken, um den Termin zu moderieren.

\r\n"; + foreach ($benachrichtigung_moderatoren_aendern as $email) + $mailer->sendMail($from, $fromName, $email, $subject, $body, $mode, $cc, $bcc, $attachment, $replyTo, $replyToName); + return true; } -function adminTerminModerieren($admin_uebersicht) { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[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(); + 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'); + $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('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + } - return; - } + 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' : '')); + } - if ($jinput->get('ueberarbeiten', false, 'BOOL')) { - $termin_id = $jinput->get('termin_id', 0, 'INT'); + $akzeptieren = $jInput->get('akzeptieren', false, 'BOOL'); + $kommentar = $db->escape(trim($jInput->get('kommentar', '', 'RAW'))); - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termin_edit&ueberarbeiten=1&id=' . $termin_id . ($nur_beantragte ? '&nur_beantragte=1' : '')); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin" + . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" + . "\n WHERE termin_aktion_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $terminaktion = $rows[0]; + $termin_bezug_id = $terminaktion->termin_bezug_id; - return; - } + 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."); + } - $akzeptieren = $jinput->get('akzeptieren', false, 'BOOL'); - $kommentar = $db->escape(trim($jinput->get('kommentar', '', 'RAW'))); + $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;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin" - . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" - . "\n WHERE termin_aktion_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $terminaktion = $rows[0]; - $termin_bezug_id = $terminaktion->termin_bezug_id; + 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->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."); - } + if ($terminaktion->typ == 2) { + $dokumente = Folder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); + foreach ($dokumente as $dokument) + File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); + } - $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;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $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); + } + } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - foreach ($rows as $row) { - $dokumente = JFolder::files($bilder_pfad, '^' . $row->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::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)); + } - if ($terminaktion->typ == 2) { - $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } + termineEmailBenachrichtigung($id); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - else { - if ($terminaktion->typ != 2) { - $dokumente = JFolder::files($bilder_pfad, '^' . $terminaktion->termin_id . ' '); - foreach ($dokumente as $dokument) - JFile::delete($bilder_pfad . DIRECTORY_SEPARATOR . $dokument); - } - } - - $user_id = JFactory::getUser()->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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - - termineEmailBenachrichtigung($id); - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . ($uebersicht ? 'termine' : 'termine_verlauf') . ($nur_beantragte ? '&nur_beantragte=1' : '')); } -function adminTermineVerlauf($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminTermineVerlauf($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $nur_beantragte = $jinput->get('nur_beantragte', 0, 'INT'); + $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"; - } - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminaktionen = $db->loadObjectList(); + 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"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $terminaktionen = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineVerlauf($terminaktionen, $nur_beantragte, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineVerlauf($terminaktionen, $nur_beantragte, $admin_uebersicht); } -function terminDokument() { - $db = getDatabase(); - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[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'); + $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 (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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - $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)"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $termin_vorhanden = $db->loadResult(); - } + 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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + $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)"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $termin_vorhanden = $db->loadResult(); + } - if (!$termin_vorhanden) - keinZugriff(true); + if (!$termin_vorhanden) + keinZugriff(true); - $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'termine'; - $dokumente = JFolder::files($pfad, '^' . $id . ' '); + $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."); + if (empty($dokumente)) { + redirectSportsManagerURL(null, "Der Anhang existiert nicht mehr."); + } - return; - } + $extension = strtolower(File::getExt($dokumente[0])); + if ($extension == "pdf") + $mm_type = "application/pdf"; + else + $mm_type = "application/octet-stream"; - $extension = strtolower(JFile::getExt($dokumente[0])); - if ($extension == "pdf") - $mm_type = "application/pdf"; - else - $mm_type = "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"); - 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: " . (string) (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]); - readfile($pfad . DIRECTORY_SEPARATOR . $dokumente[0]); - - exit(); + exit(); } -function adminTerminDetails($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminTerminDetails($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + 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'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $terminaktion = $rows[0]; + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $terminaktionen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $terminaktionen = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, isExternalDatabase()); + HTML_sportsmanager_admin::adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, isExternalDatabase()); } -function adminTermineBezeichnungen($admin_uebersicht) { - $db = getDatabase(); +function adminTermineBezeichnungen($admin_uebersicht): void +{ + $db = getDatabase(); - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bezeichnung" - . "\n ORDER BY bezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungen = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bezeichnung" + . "\n ORDER BY bezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bezeichnungen = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineBezeichnungen($bezeichnungen, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineBezeichnungen($bezeichnungen, $admin_uebersicht); } -function adminEditTermineBezeichnung($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTermineBezeichnung($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - if (empty($id)) { - $bezeichnung = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bezeichnung = $rows[0]; - } + if (empty($id)) { + $bezeichnung = null; + } else { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bezeichnung = $rows[0]; + } - HTML_sportsmanager_admin::adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht); + HTML_sportsmanager_admin::adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht); } -function adminSaveTermineBezeichnung($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTermineBezeichnung($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); + } - return; - } + $id = $jInput->get('id', 0, 'INT'); + $bezeichnung = $db->escape(trim($jInput->get('bezeichnung', '', 'RAW'))); + $termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $alte_bezeichnung = $db->escape($rows[0]->bezeichnung); - if (!empty($id) && $termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 = "UPDATE #__sportsmanager_termin" - . "\n SET bezeichnung = '$bezeichnung'" - . "\n WHERE bezeichnung = '$alte_bezeichnung'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE bezeichnung = '$bezeichnung' AND termin_bezeichnung_id != $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // 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)); + } + } - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnung WHERE bezeichnung = '$bezeichnung' AND termin_bezeichnung_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); } -function adminRemoveTermineBezeichnung($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTermineBezeichnung($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_termin_bezeichnung WHERE termin_bezeichnung_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungen'); } -function adminTermineBezeichnungszusaetze($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminTermineBezeichnungszusaetze($admin_uebersicht): void +{ + $db = getDatabase(); - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" - . "\n ORDER BY bezeichnungszusatz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bezeichnungszusaetze = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bezeichnungszusatz" + . "\n ORDER BY bezeichnungszusatz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bezeichnungszusaetze = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineBezeichnungszusaetze($bezeichnungszusaetze, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineBezeichnungszusaetze($bezeichnungszusaetze, $admin_uebersicht); } -function adminEditTermineBezeichnungszusatz($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTermineBezeichnungszusatz($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - if (empty($id)) { - $bezeichnungszusatz = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bezeichnungszusatz = $rows[0]; - } + if (empty($id)) { + $bezeichnungszusatz = null; + } else { + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bezeichnungszusatz = $rows[0]; + } - HTML_sportsmanager_admin::adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht); + HTML_sportsmanager_admin::adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht); } -function adminSaveTermineBezeichnungszusatz($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTermineBezeichnungszusatz($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); + } - return; - } + $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'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $alter_bezeichnungszusatz = $db->escape($rows[0]->bezeichnungszusatz); - if (!empty($id) && $termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 = "UPDATE #__sportsmanager_termin_zusatz" - . "\n SET zusatz = '$bezeichnungszusatz'" - . "\n WHERE zusatz = '$alter_bezeichnungszusatz'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE bezeichnungszusatz = '$bezeichnungszusatz' AND termin_bezeichnungszusatz_id != $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // 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)); + } + } - $query = "SELECT * FROM #__sportsmanager_termin_bezeichnungszusatz WHERE bezeichnungszusatz = '$bezeichnungszusatz' AND termin_bezeichnungszusatz_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); } -function adminRemoveTermineBezeichnungszusatz($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTermineBezeichnungszusatz($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_termin_bezeichnungszusatz WHERE termin_bezeichnungszusatz_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bezeichnungszusaetze'); } -function adminTermineBundeslaender($admin_uebersicht) { - $db = getDatabase(); +function adminTermineBundeslaender($admin_uebersicht): void +{ + $db = getDatabase(); - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_bundesland" - . "\n ORDER BY bundesland"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $bundeslaender = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_bundesland" + . "\n ORDER BY bundesland"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $bundeslaender = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineBundeslaender($bundeslaender, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineBundeslaender($bundeslaender, $admin_uebersicht); } -function adminEditTermineBundesland($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTermineBundesland($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - if (empty($id)) { - $bundesland = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $bundesland = $rows[0]; - } + if (empty($id)) { + $bundesland = null; + } else { + $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $bundesland = $rows[0]; + } - HTML_sportsmanager_admin::adminEditTermineBundesland($bundesland, $admin_uebersicht); + HTML_sportsmanager_admin::adminEditTermineBundesland($bundesland, $admin_uebersicht); } -function adminSaveTermineBundesland($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTermineBundesland($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); + } - return; - } + $id = $jInput->get('id', 0, 'INT'); + $bundesland = $db->escape(trim($jInput->get('bundesland', '', 'RAW'))); + $termine_umbenennen = $jInput->get('termine_umbenennen', 0, 'INT'); - $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $altes_bundesland = $db->escape($rows[0]->bundesland); - if ($termine_umbenennen) { - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - 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 = "UPDATE #__sportsmanager_termin" - . "\n SET land = '$bundesland'" - . "\n WHERE land = '$altes_bundesland'"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE bundesland = '$bundesland' AND termin_bundesland_id != $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // 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)); + } + } - $query = "SELECT * FROM #__sportsmanager_termin_bundesland WHERE bundesland = '$bundesland' AND termin_bundesland_id != $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); } -function adminRemoveTermineBundesland($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTermineBundesland($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_termin_bundesland WHERE termin_bundesland_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_bundeslaender'); } -function adminTermineLaender($admin_uebersicht) { - $db = getDatabase(); +function adminTermineLaender($admin_uebersicht): void +{ + $db = getDatabase(); - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_land" - . "\n ORDER BY land"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $laender = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_land" + . "\n ORDER BY land"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $laender = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineLaender($laender, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineLaender($laender, $admin_uebersicht); } -function adminEditTermineLand($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTermineLand($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - if (empty($id)) { - $land = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $land = $rows[0]; - } + if (empty($id)) { + $land = null; + } else { + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $land = $rows[0]; + } - HTML_sportsmanager_admin::adminEditTermineLand($land, $admin_uebersicht); + HTML_sportsmanager_admin::adminEditTermineLand($land, $admin_uebersicht); } -function adminSaveTermineLand($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveTermineLand($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - if ($jinput->get('cancel', false, 'BOOL')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); + } - return; - } - - $id = $jinput->get('id', 0, 'INT'); - $land = $db->escape(trim($jinput->get('land', '', 'RAW'))); - $termine_umbenennen = $jinput->get('termine_umbenennen', 0, 'INT'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $altes_bundesland = $db->escape($rows[0]->bundesland); + if ($termine_umbenennen) { + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE termin_land_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - // 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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $query = "SELECT * FROM #__sportsmanager_termin_land WHERE land = '$land' AND termin_land_id != $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + // 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'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); } -function adminRemoveTermineLand($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTermineLand($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_termin_land WHERE termin_land_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_laender'); } -function adminTermineSymbole($admin_uebersicht) { - $db = getDatabase(); +function adminTermineSymbole($admin_uebersicht): void +{ + $db = getDatabase(); - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $query = "SELECT *" - . "\n FROM #__sportsmanager_termin_symbol" - . "\n ORDER BY status DESC, symboltitel"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $symbole = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_termin_symbol" + . "\n ORDER BY status DESC, symboltitel"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $symbole = $db->loadObjectList(); - HTML_sportsmanager_admin::adminTermineSymbole($symbole, $admin_uebersicht); + HTML_sportsmanager_admin::adminTermineSymbole($symbole, $admin_uebersicht); } -function adminEditTermineSymbol($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditTermineSymbol($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(true); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - if (empty($id)) { - $symbol = null; - } - else { - $query = "SELECT * FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die ("Wrong id"); - $symbol = $rows[0]; - } + if (empty($id)) { + $symbol = null; + } else { + $query = "SELECT * FROM #__sportsmanager_termin_symbol WHERE termin_symbol_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die ("Wrong id"); + $symbol = $rows[0]; + } - HTML_sportsmanager_admin::adminEditTermineSymbol($symbol, $admin_uebersicht); + HTML_sportsmanager_admin::adminEditTermineSymbol($symbol, $admin_uebersicht); } -function adminSaveTermineSymbol($admin_uebersicht) { - $db = getDatabase(); - global $_FILES; - global $sportsmanager_joomla_path; - $jinput = JFactory::getApplication()->input; +#[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(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - $input = \Joomla\CMS\Factory::getApplication()->input; + $input = Factory::getContainer()->get(SiteApplication::class)->input; - if ($input->getBool('cancel')) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); + if ($input->getBool('cancel')) { + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); + } - return; - } + $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'); - $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 ($id == 0) { - $query = "INSERT INTO #__sportsmanager_termin_symbol (symboltitel,status)" - . "\n VALUES ('$symboltitel', '$status');"; - $db->setQuery($query); - if (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + if ($bildbeibehalten == 0) { + bildLoeschen('terminsymbole', $id); - 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')); + } + } + } + } - if (!empty($_FILES["bild"]["tmp_name"])) { - if (is_uploaded_file($_FILES["bild"]["tmp_name"])) { - $size = getimagesize($_FILES["bild"]["tmp_name"]); - if ($size == false - || ($size[2] != IMAGETYPE_JPEG && $size[2] != IMAGETYPE_PNG) - || ($size[0] > 8192 || $size[1] > 8192)) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_PLAYER_WRONG_IMAGE_FORMAT')); - - return; - } - $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . 'terminsymbole'; - if (!JFile::copy($_FILES["bild"]["tmp_name"], $bilder_pfad . DIRECTORY_SEPARATOR . $id . ($size[2] == IMAGETYPE_PNG ? '.png' : '.jpg'))) { - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole', JText::_('COM_SPORTSMANAGER_IMAGE_COULD_NOT_COPIED')); - - return; - } - } - } - } - - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); } -function adminRemoveTermineSymbol($admin_uebersicht) { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveTermineSymbol($admin_uebersicht): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("termine_aendern")) - keinZugriff(); + if (!benutzerZugriff("termine_aendern")) + keinZugriff(); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "DELETE FROM #__sportsmanager_termin_symbolanzeige WHERE termin_symbol_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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 (!$result = $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); + bildLoeschen("terminsymbole", $id); - redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); + redirectSportsManagerURL('&task=' . ($admin_uebersicht ? 'admin_' : '') . 'termine_symbole'); } -function adminEditIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; - } + if ($id == 0) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } - $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $veranstalter = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_veranstalter ORDER BY veranstalterbezeichnung"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $veranstalter = $db->loadObjectList(); - $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 6 ORDER BY nummer"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows_kategorien = $db->loadObjectList(); + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 6 ORDER BY nummer"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows_kategorien = $db->loadObjectList(); - $kategorien = array(); - foreach ($rows_kategorien as $kategorie) - $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; - $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $saisons = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_saison ORDER BY saisonbezeichnung DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $saisons = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $berechtigt_fuer_individualwettbewerb = $db->loadObjectList(); - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $berechtigt_fuer_individualwettbewerb = $db->loadObjectList(); + } - $query = "SELECT * FROM #__users ORDER BY name, username"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $users = $db->loadObjectList(); + $query = "SELECT * FROM #__users ORDER BY name, username"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $users = $db->loadObjectList(); - HTML_sportsmanager_admin::adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage); + HTML_sportsmanager_admin::adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage); } -function adminSaveIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminSaveIndividualwettbewerb(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("individualwettbewerbe_aendern")) - keinZugriff(); + 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)) - array_push($berechtigt_fuer_individualwettbewerb_user_ids, $berechtigt_user_id); - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + $elo_aktualisieren = false; + if ($vorlage) { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); + $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - $id = $db->insertid(); - } - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + } + $row = $rows[0]; - return; - } - $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)); + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + if (($elo_wertung != 0 && $status != 0) != ($row->elo_wertung != 0 && $row->status != 0)) + $elo_aktualisieren = 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 = "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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); + 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 ($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)); + } + } - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); - $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); + if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } - if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } + individualwettbewerbTabelleAktualisieren($id); + spielerstatistikAktualisieren(0, 0, $id); - individualwettbewerbTabelleAktualisieren($id); - spielerstatistikAktualisieren(0, 0, $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function individualwettbewerbTabelleAktualisieren($id = null) { - $db = getDatabase(); +function individualwettbewerbTabelleAktualisieren($id = null): void +{ + $db = getDatabase(); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb"; - if (!empty($id)) - $query .= "\n WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $individualwettbewerbe = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb"; + if (!empty($id)) + $query .= "\n WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $individualwettbewerbe = $db->loadObjectList(); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + 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; - } + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); + $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; + 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)) - array_push($platzierungen, $verlierer_spieler_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); - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $platzierungen_vorhanden = $db->loadObjectList(); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_platzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerb_id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $platzierungen_vorhanden = $db->loadObjectList(); - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } + $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 (!$result = $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 (!$result = $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)); + } + } + } } -function adminRemoveIndividualwettbewerb() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[NoReturn] function adminRemoveIndividualwettbewerb(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("individualwettbewerbe_aendern")) - keinZugriff(true); + if (!benutzerZugriff("individualwettbewerbe_aendern")) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); + $id = $jInput->get('id', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) { - redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + redirectSportsManagerURL('&task=admin_uebersicht', "Der Individualwettbewerb existiert nicht mehr!"); + } + $row = $rows[0]; - return; - } - $row = $rows[0]; + $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $aktualisieren_ab_datum = $db->loadResult(); - $query = "SELECT DATE(MIN(zeitpunkt)) FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $aktualisieren_ab_datum = $db->loadResult(); + $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_berechtigt_fuer_individualwettbewerb WHERE berechtigt_individualwettbewerb_id = $id"; - $db->setQuery($query); - if (!$result = $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_spiel WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $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_platzierung WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $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_ausgangsplatzierung WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $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)); + } - $query = "DELETE FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $id;"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } + if ($row->elo_wertung && $aktualisieren_ab_datum != null) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, 0, $id); - if ($row->elo_wertung && $aktualisieren_ab_datum != null) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, 0, $id); - - redirectSportsManagerURL('&task=admin_uebersicht'); + redirectSportsManagerURL('&task=admin_uebersicht'); } -function adminIndividualwettbewerbSpiele() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +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); + $individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT'); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spiele = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spiele = $db->loadObjectList(); - 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); - } - else { - $ausgangsplatzierungen = null; - } + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); + } else { + $ausgangsplatzierungen = null; + } - HTML_sportsmanager_admin::adminIndividualwettbewerbSpiele($row, $spiele, $ausgangsplatzierungen); + HTML_sportsmanager_admin::adminIndividualwettbewerbSpiele($row, $spiele, $ausgangsplatzierungen); } -function adminEditIndividualwettbewerbSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditIndividualwettbewerbSpiel(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; + $individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT'); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId)) + keinZugriff(true); - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'RAW'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $row = $rows[0]; + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - HTML_sportsmanager_admin::adminEditIndividualwettbewerbSpiel($row, $typ, $individualwettbewerb, $spieler); + HTML_sportsmanager_admin::adminEditIndividualwettbewerbSpiel($row, $typ, $individualwettbewerb, $spieler); } -function adminSaveIndividualwettbewerbSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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(); + $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'); + $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); + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id); + } - return; - } + $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 = 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."); + } - 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'); - return; - } + $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); - $ergebnis_punkte_heim = $jinput->get('ergebnis_punkte_heim', array(), 'ARRAY'); - $ergebnis_punkte_gast = $jinput->get('ergebnis_punkte_gast', array(), 'ARRAY'); + $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'); - $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); + if (!empty($id)) { + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $spiel = $rows[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'); + $typ = $spiel->heim_spieler_2_id != null ? "doppel" : "einzel"; + } - if (empty($id)) - $spiel = null; - else { - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $spiel = $rows[0]; + 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."); + } - $typ = $spiel->heim_spieler_2_id != null ? "doppel" : "einzel"; - } + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; - 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."); + $elo_aktualisieren = $individualwettbewerb->elo_wertung; + $aktualisieren_ab_datum = $zeitpunkt; - return; - } + 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)); + } + } - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; + individualwettbewerbTabelleAktualisieren($individualwettbewerbId); - $elo_aktualisieren = $individualwettbewerb->elo_wertung; - $aktualisieren_ab_datum = $zeitpunkt; + if ($elo_aktualisieren) { + wannGespieltAktualisieren(); + eloAktualisieren($aktualisieren_ab_datum); + einstufungAktualisieren(); + } + spielerstatistikAktualisieren(0, 0, $individualwettbewerbId); - 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 (!$result = $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 (!$result = $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); + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#sid' . $id); } -function adminRemoveIndividualwettbewerbSpiel() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + 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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $spiel = $rows[0]; + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb_spiel WHERE individualwettbewerb_spiel_id = $id AND individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $spiel = $rows[0]; - $elo_aktualisieren = $individualwettbewerb->elo_wertung; - $aktualisieren_ab_datum = $spiel->zeitpunkt; + $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } + $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); + individualwettbewerbTabelleAktualisieren($individualwettbewerbId); - if ($elo_aktualisieren && $aktualisieren_ab_datum != null) { - wannGespieltAktualisieren(); - eloAktualisieren($aktualisieren_ab_datum); - einstufungAktualisieren(); - } - spielerstatistikAktualisieren(0, 0, $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); + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId); } -function adminEditIndividualwettbewerbAusgangsplatzierung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +function adminEditIndividualwettbewerbAusgangsplatzierung(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) - keinZugriff(true); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator()) + keinZugriff(true); - $individualwettbewerbid = $jinput->get('individualwettbewerbid', 0, 'INT'); - $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbid"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); - $individualwettbewerb = $rows[0]; + $individualwettbewerbId = $jInput->get('individualwettbewerbid', 0, 'INT'); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); + $individualwettbewerb = $rows[0]; - if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbid)) - keinZugriff(true); + if (!benutzerZugriff("individualwettbewerbe_aendern") && !benutzerIndividualwettbewerbModerator($individualwettbewerbId)) + keinZugriff(true); - if (!$individualwettbewerb->tabellenwertung) die("Wrong id!"); + if (!$individualwettbewerb->tabellenwertung) die("Wrong id!"); - $id = $jinput->get('id', 0, 'INT'); - $typ = $jinput->get('typ', 0, 'RAW'); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); - $row = null; - if (!empty($id)) { - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) { - if ($ausgangsplatzierung->spieler_id == $id) { - $row = $ausgangsplatzierung; - break; - } - } - if ($row == null) die("Wrong id!"); - } + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $spieler = $db->loadObjectList(); + $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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $spieler = $db->loadObjectList(); - HTML_sportsmanager_admin::adminEditIndividualwettbewerbAusgangsplatzierung($row, $individualwettbewerb, $ausgangsplatzierungen, $spieler); + HTML_sportsmanager_admin::adminEditIndividualwettbewerbAusgangsplatzierung($row, $individualwettbewerb, $ausgangsplatzierungen, $spieler); } -function adminSaveIndividualwettbewerbAusgangsplatzierung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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(); + $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'); + $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 ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#pid' . $id); + } - return; - } + if ($id == $nach_id) { + 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"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); - return; - } + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbId" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); - $query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $id"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + $platzierungen[] = $ausgangsplatzierung->spieler_id; - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); + if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong id!"); - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_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); - if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong 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)); + } + } - $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); + $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)); + } + } + } - $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 (!$result = $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)); + } + } - $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } + individualwettbewerbTabelleAktualisieren($individualwettbewerbId); - 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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - - individualwettbewerbTabelleAktualisieren($individualwettbewerbid); - - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid . '#pid' . $id); + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId . '#pid' . $id); } -function adminRemoveIndividualwettbewerbAusgangsplatzierung() { - $db = getDatabase(); - $jinput = JFactory::getApplication()->input; +#[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); + $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"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $rows = $db->loadObjectList(); - if (count($rows) < 1) die("Wrong id!"); + $query = "SELECT * FROM #__sportsmanager_individualwettbewerb WHERE individualwettbewerb_id = $individualwettbewerbId"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) die("Wrong id!"); - $query = "SELECT *" - . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" - . "\n WHERE individualwettbewerb_id = $individualwettbewerbid" - . "\n ORDER BY platz"; - $db->setQuery($query); - if (!$result = $db->execute()) { - die($db->stderr(true)); - } - $ausgangsplatzierungen = $db->loadObjectList(); + $query = "SELECT *" + . "\n FROM #__sportsmanager_individualwettbewerb_ausgangsplatzierung" + . "\n WHERE individualwettbewerb_id = $individualwettbewerbId" + . "\n ORDER BY platz"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $ausgangsplatzierungen = $db->loadObjectList(); - $platzierungen = array(); - foreach ($ausgangsplatzierungen as $ausgangsplatzierung) - array_push($platzierungen, $ausgangsplatzierung->spieler_id); + $platzierungen = array(); + foreach ($ausgangsplatzierungen as $ausgangsplatzierung) + $platzierungen[] = $ausgangsplatzierung->spieler_id; - if (!empty($nach_id) && !in_array($nach_id, $platzierungen)) die("Wrong 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); + $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 (!$result = $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 (!$result = $db->execute()) { - die($db->stderr(true)); - } - } - } + 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); + individualwettbewerbTabelleAktualisieren($individualwettbewerbId); - redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbid); + redirectSportsManagerURL('&task=admin_individualwettbewerb_spiele&individualwettbewerbid=' . $individualwettbewerbId); } - - -?> diff --git a/src/structure/components/com_sportsmanager/api.php b/src/structure/components/com_sportsmanager/api.php index 270cd9b..003a834 100644 --- a/src/structure/components/com_sportsmanager/api.php +++ b/src/structure/components/com_sportsmanager/api.php @@ -2,84 +2,98 @@ /* * Sports Manager API Extension */ + +use JetBrains\PhpStorm\NoReturn; +use Joomla\CMS\Application\SiteApplication; +use Joomla\CMS\Factory; +use Joomla\CMS\User\UserFactory; +use Joomla\Input\Input; +use Joomla\Registry\Registry; + defined("_JEXEC") or die(); -//$secret = JFactory::$config['secret']; +require_once JPATH_SITE . '/components/com_sportsmanager/database/init.php'; -$secret = \Joomla\CMS\Factory::getConfig(); +Factory::getContainer()->set(Registry::class, function () { + return new Registry(); +}); -$secret = $secret->get("secret"); +$secret = Factory::getContainer()->get(Registry::class)->get("secret"); -function abortWithError($error) +#[NoReturn] function abortWithError($error): void { - if (isJson()) { + if (isJson()) { header("content-type: application/json"); die(json_encode(["error" => $error])); - } else { - die($error); - } + } else { + die($error); + } } -function isJson() { - $jinput = JFactory::getApplication()->input; - - return $jinput->get('format') === 'json'; +function isJson(): bool +{ + $jInput = Factory::getContainer()->get(SiteApplication::class)->getInput(); + return $jInput->get('format') === 'json'; } -function notifyChange($data) { +function notifyChange($data): void +{ - try { - $db = &getDatabase(); - $query = "SELECT wert from #__sportsmanager_einstellungen WHERE name='api_push_key'"; - $db->setQuery($query); - $push_key = $db->loadResult(); - $push_server = !empty($push_key) && isset(_payload($push_key)->aud) ? _payload($push_key)->aud : ''; - if ($push_server != '' && $push_key != '') { - $url = $push_server . (substr($push_server, -1) == '/' ? '' : '/') . 'v1/notifications/send'; - $key = 'key=' . $push_key; + try { + $db = getDatabase(); + $query = "SELECT wert from #__sportsmanager_einstellungen WHERE name='api_push_key'"; + $db->setQuery($query); + $push_key = $db->loadResult(); + $push_server = !empty($push_key) && isset(_payload($push_key)->aud) ? _payload($push_key)->aud : ''; + if ($push_server != '' && $push_key != '') { + $url = $push_server . (str_ends_with($push_server, '/') ? '' : '/') . 'v1/notifications/send'; + $key = 'key=' . $push_key; - $ch = curl_init($url); - curl_setopt_array($ch, array( - CURLOPT_POST => TRUE, - CURLOPT_RETURNTRANSFER => TRUE, - CURLOPT_HEADER => TRUE, - CURLOPT_HTTPHEADER => array( - 'Authorization: ' . $key, - 'Content-Type: application/json', - ), - CURLOPT_TIMEOUT => 2, - CURLOPT_POSTFIELDS => json_encode($data), - )); - $resp = curl_exec($ch); - if ($resp == FALSE) { - error_log("failed to send notification"); + $ch = curl_init($url); + curl_setopt_array($ch, array( + CURLOPT_POST => TRUE, + CURLOPT_RETURNTRANSFER => TRUE, + CURLOPT_HEADER => TRUE, + CURLOPT_HTTPHEADER => array( + 'Authorization: ' . $key, + 'Content-Type: application/json', + ), + CURLOPT_TIMEOUT => 2, + CURLOPT_POSTFIELDS => json_encode($data), + )); + $resp = curl_exec($ch); + if (!$resp) { + error_log("failed to send notification"); + } } - } - } catch (Exception $ex) { - error_log($ex); - } + } catch (Exception $ex) { + error_log($ex); + } } -function begegnungChanged($begegnung, $begegnung_vorher, $modus, $heim_team, $gast_team, $spiele) { - notifyChange(['payload' => [ - 'begegnung' => $begegnung, - 'begegnung_vorher' => $begegnung_vorher, - '$modus' => $modus, - 'heim_team' => $heim_team, - 'gast_team' => $gast_team, - 'spiele' => $spiele, - ], 'type' => 'FIXTURE_RESULT_CHANGED']); +function begegnungChanged($begegnung, $begegnung_vorher, $modus, $heim_team, $gast_team, $spiele): void +{ + notifyChange(['payload' => [ + 'begegnung' => $begegnung, + 'begegnung_vorher' => $begegnung_vorher, + '$modus' => $modus, + 'heim_team' => $heim_team, + 'gast_team' => $gast_team, + 'spiele' => $spiele, + ], 'type' => 'FIXTURE_RESULT_CHANGED']); } -function begegnungTischChanged($begegnung, $heim_team, $gast_team) { - notifyChange(['payload' => [ - 'begegnung' => $begegnung, - 'heim_team' => $heim_team, - 'gast_team' => $gast_team, - ], 'type' => 'TABLE_CHANGED']); +function begegnungTischChanged($begegnung, $heim_team, $gast_team): void +{ + notifyChange(['payload' => [ + 'begegnung' => $begegnung, + 'heim_team' => $heim_team, + 'gast_team' => $gast_team, + ], 'type' => 'TABLE_CHANGED']); } -function begegnungVerlegenNotify($begegnung, $users, $vorschlagendes_team_id, $heim_team, $gast_team) { +function begegnungVerlegenNotify($begegnung, $users, $vorschlagendes_team_id, $heim_team, $gast_team): void +{ notifyChange([ 'payload' => [ 'begegnung' => $begegnung, @@ -97,41 +111,50 @@ function begegnungVerlegenNotify($begegnung, $users, $vorschlagendes_team_id, $h * @reponse body * { data: { token: "reqest_token", access_for_team: ["team_id_1", "team_id_2"]}, expires: 1520013747000} */ -function userToken() { +#[NoReturn] function userToken(): void +{ global $secret; - if (!isJson()) { - abortWithError("JSON Request only"); - } - if (isExternalDatabase()) { - abortWithError("Local Database only"); + if (!isJson()) { + abortWithError("JSON Request only"); } - $jinput = JFactory::getApplication()->input->json; - $access_key = $jinput->getString('access_key'); - - $user_id = _payload($access_key)->sub; - $user = JFactory::getUser($user_id); - - if (!jwt_validate($access_key, $secret.$user->password)) { - abortWithError('Access Key is invalid'); - } - - $expires = new DateTime(); - $expires->modify('+16 hours'); - $db = &getDatabase(); - $query = "SELECT berechtigt_team_id from #__sportsmanager_berechtigt_fuer_team where berechtigt_user_id = $user_id"; - $db->setQuery($query); - if (!$db->execute()) { - abortWithError($db->stderr(true)); + if (isExternalDatabase()) { + abortWithError("Local Database only"); } - $team_id = $db->loadObjectList(); - JSON_sportsmanager::JSON([ - 'token' => jwt_token([ - 'sub' => $user_id, - 'exp' => $expires->getTimestamp(), - ], $secret), - 'access_for_teams' => array_map(function($item) { return $item->berechtigt_team_id; }, $team_id), - 'expires' => $expires->getTimestamp() * 1000, // - ]); + $container = Factory::getContainer(); + $jInput = $container->get(SiteApplication::class)->getInput()->json; + $access_key = $jInput->getString('access_key'); + + $user_id = _payload($access_key)->sub; + $user = $container->get(UserFactory::class)->loadUserById($user_id); + + if (!jwt_validate($access_key, $secret . $user->password)) { + abortWithError('Access Key is invalid'); + } + + try { + $expires = new DateTime(); + $expires->modify('+16 hours'); + $db = getDatabase(); + $query = "SELECT berechtigt_team_id from #__sportsmanager_berechtigt_fuer_team where berechtigt_user_id = $user_id"; + $db->setQuery($query); + if (!$db->execute()) { + abortWithError($db->stderr(true)); + } + $team_id = $db->loadObjectList(); + JSON_sportsmanager::JSON([ + 'token' => jwt_token([ + 'sub' => $user_id, + 'exp' => $expires->getTimestamp(), + ], $secret), + 'access_for_teams' => array_map(function ($item) { + return $item->berechtigt_team_id; + }, $team_id), + 'expires' => $expires->getTimestamp() * 1000, // + ]); + } catch (Exception $ex) { + error_log($ex); + } + } /* @@ -139,124 +162,134 @@ function userToken() { * @response body * { data: { token: "api_acccess_token" }} */ -function userAuth() { +#[NoReturn] function userAuth(): void +{ global $secret; - if (!isJson()) { - die(); - } - if (isExternalDatabase()) { - abortWithError("Local Database only"); + if (!isJson()) { + die(); } - $jinput = JFactory::getApplication()->input->json; - $username = $jinput->getString('username'); - $password = $jinput->getString('password'); + if (isExternalDatabase()) { + abortWithError("Local Database only"); + } + $container = Factory::getContainer(); + $jInput = $container->get(SiteApplication::class)->getInput()->json; + $username = $jInput->getString('username'); + $password = $jInput->getString('password'); - $db = &getDatabase(); - $query = $db->getQuery(true); - $query->select('id')->from('#__users')->where('username = "' . $username . '"')->limit(1); - $db->setQuery($query); - $user_id = $db->loadResult(); - $user = JFactory::getUser($user_id); + $db = getDatabase(); + $query = $db->getQuery(true); + $query->select('id')->from('#__users')->where('username = "' . $username . '"')->limit(1); + $db->setQuery($query); + $user_id = $db->loadResult(); + $user = $container->get(UserFactory::class)->loadUserById($user_id); - if (JUserHelper::verifyPassword($password, $user->password, $user->id)) { + //TODO: pw verification modernising: use php native methods, however this also needs new pw hashing. maybe force a pw reset on all accounts + if (password_verify($password, $user->password)) { - JSON_sportsmanager::JSON([ - 'token' => jwt_token([ - 'sub' => $user_id, - 'iat' => (new DateTime())->getTimestamp(), - ], $secret.$user->password) - ]); - return; - } - abortWithError('Wrong credentials'); + JSON_sportsmanager::JSON([ + 'token' => jwt_token([ + 'sub' => $user_id, + 'iat' => (new DateTime())->getTimestamp(), + ], $secret . $user->password) + ]); + } + abortWithError('Wrong credentials'); } -function getUserID() { +function getUserID(): int +{ global $secret; - $token = JFactory::getApplication()->input->server->getString('HTTP_SECRET', NULL); + $container = Factory::getContainer(); + $input = $container->get(Input::class); + $token = $input->server->getString('HTTP_SECRET', NULL); - return $token != NULL && jwt_validate($token, $secret) && isset(_payload($token)->sub) - ? (int) _payload($token)->sub + return $token != NULL && jwt_validate($token, $secret) && isset(_payload($token)->sub) + ? (int)_payload($token)->sub : 0; } -function getColorOfImage($image) { - if ($image != NULL) { +function getColorOfImage($image) +{ + if ($image != NULL) { - if (strpos($image, '.png') !== false) { - $img = imagecreatefrompng($image); - } else { - $img = imagecreatefromjpeg($image); - } - $width = imagesx($img); - $height = imagesx($img); - $colorMap = []; - $colors = []; - for ($x = 0; $x < $width; $x++) { - for ($y = 0; $y < $height; $y++) { - $color = imagecolorsforindex($img, imagecolorat($img, $x, $y)); - if ($color['alpha'] < 20) { - $c = colorKey($color); - $hex = hex($color); - if ($hex != NULL) { - if (!isset($colors[$c])) { - $colors[$c] = 0; - $colorMap[$c] = $hex; - } - $colors[$c] += 1; - } - } - } - } - arsort($colors); - $result = array_keys($colors); - return sizeof($result) > 1 && $result[0] === '0-0-0' ? $colorMap[$result[1]] : $colorMap[$result[0]]; - } - return NULL; + if (str_contains($image, '.png')) { + $img = imagecreatefrompng($image); + } else { + $img = imagecreatefromjpeg($image); + } + $width = imagesx($img); + $height = imagesx($img); + $colorMap = []; + $colors = []; + for ($x = 0; $x < $width; $x++) { + for ($y = 0; $y < $height; $y++) { + $color = imagecolorsforindex($img, imagecolorat($img, $x, $y)); + if ($color['alpha'] < 20) { + $c = colorKey($color); + $hex = hex($color); + if ($hex != NULL) { + if (!isset($colors[$c])) { + $colors[$c] = 0; + $colorMap[$c] = $hex; + } + $colors[$c] += 1; + } + } + } + } + arsort($colors); + $result = array_keys($colors); + return sizeof($result) > 1 && $result[0] === '0-0-0' ? $colorMap[$result[1]] : $colorMap[$result[0]]; + } + return NULL; } -function colorKey($rgb) { +function colorKey($rgb): string +{ - $r = (int)($rgb['red'] / 100); - $g = (int)($rgb['green'] / 100); - $b = (int)($rgb['blue'] / 100); + $r = (int)($rgb['red'] / 100); + $g = (int)($rgb['green'] / 100); + $b = (int)($rgb['blue'] / 100); - return $r . '-' . $g . '-' . $b; + return $r . '-' . $g . '-' . $b; } -function hex($rgb) { - $r = $rgb['red']; - $g = $rgb['green']; - $b = $rgb['blue']; - if (($r + $g + $b) / 3 > 125) { - return NULL; - } - $r = dechex($r); - if (strlen($r) < 2) { - $r = '0' . $r; - } - $g = dechex($g); - if (strlen($g) < 2) { - $g = '0' . $g; - } - $b = dechex($b); - if (strlen($b) < 2) { - $b = '0' . $b; - } - return '#' . $r . $g . $b; +function hex($rgb): ?string +{ + $r = $rgb['red']; + $g = $rgb['green']; + $b = $rgb['blue']; + if (($r + $g + $b) / 3 > 125) { + return NULL; + } + $r = dechex($r); + if (strlen($r) < 2) { + $r = '0' . $r; + } + $g = dechex($g); + if (strlen($g) < 2) { + $g = '0' . $g; + } + $b = dechex($b); + if (strlen($b) < 2) { + $b = '0' . $b; + } + return '#' . $r . $g . $b; } /* * sign string with secret */ -function _sign($data, $secret, $algo = 'sha256') { +function _sign($data, $secret): string +{ return base64_encode(hash_hmac('sha256', $data, $secret)); } /* * get payload from jwt token */ -function _payload($token) { +function _payload($token) +{ $jwt = explode('.', $token); return json_decode(base64_decode($jwt[0])); } @@ -264,7 +297,8 @@ function _payload($token) { /* * headless signed jwt token */ -function jwt_token($payload, $secret) { +function jwt_token($payload, $secret): string +{ $data = base64_encode(json_encode($payload)); return $data . '.' . _sign($data, $secret); @@ -273,7 +307,8 @@ function jwt_token($payload, $secret) { /* * validate token */ -function jwt_validate($token, $secret) { +function jwt_validate($token, $secret): bool +{ $jwt = explode('.', $token); if (sizeof($jwt) == 2 && $jwt[1] == _sign($jwt[0], $secret)) { if (isset(_payload($token)->exp)) { diff --git a/src/structure/components/com_sportsmanager/mathparser.php b/src/structure/components/com_sportsmanager/mathparser.php index 9197e4b..0d3f524 100644 --- a/src/structure/components/com_sportsmanager/mathparser.php +++ b/src/structure/components/com_sportsmanager/mathparser.php @@ -21,15 +21,17 @@ * This notice shall remain in modified versions of this file. */ +use Joomla\CMS\Log\Log; + /** * MathParser is a mathematical expression parser class for PHP. MathParser parses and evaluates - * mathematical formulas given as strings at runtime. Math expressions can contain variables, + * mathematical formulas given as strings at runtime. Math expressions can contain variables, * functions, numeric literals combined with basic mathematical operators +, -, /, *, ^, % (modulus). - * MathParser can utilize user defined variables, user defined functions that are implemented in PHP - * language. + * MathParser can utilize user defined variables, user defined functions that are implemented in PHP + * language. *

* Math parser library features at a glance include:

- * + * * Easy to use, simple class API.
* Functions with 0 or more number of parameters in the form of: f(x,y,z, ...)
* Functions with unknown number of parameters, e.g. SUM(a,b,c,...)
@@ -54,356 +56,303 @@ * a secure, simple math evaluator alternative to eval(). Please keep in mind, MathParser only evaluates * mathematical expressions given using a simple syntax that consists of numbers, variables, function calls * and paranthesis. MathParser does not evaluate PHP expressions.

- * - * Predefined functions are: - *

- * SQR: Square function which can be used as SQR(X) - *

- * SIN: Sinus function which can be used as SIN(X), X is a real-type expression. - * Sin returns the sine of the angle X in radians. - *

- * COS: Cosinus function which can be used as COS(X), X is a real-type expression. - * COS returns the cosine of the angle X in radians. - *

- * ATAN: ArcTangent function which can be used as ATAN(X) - * Returns the arctangent of a number as a numeric value between -PI/2 and PI/2 radians. - *

- * SINH: Sinus Hyperbolic function which can be used as SINH(X) - *

- * COSH: Cosinus Hyperbolic function which can be used as COSH(X) - *

- * COTAN: which can be used as COTAN(X) - *

- * TAN: which can be used as TAN(X) - *

- * EXP: which can be used as EXP(X) - *

- * LN: natural log, which can be used as LN(X) - *

- * LOG: 10 based log, which can be used as LOG(X) - *

- * SQRT: which can be used as SQRT(X) - *

- * ABS: absolute value, which can be used as ABS(X) - *

- * SIGN: SIGN(X) returns -1 if X<0; +1 if X>0, 0 if X=0; it can be used as SQR(X) - *

- * TRUNC: Discards the fractional part of a number. e.g. TRUNC(-3.2) is -3, TRUNC(3.2) is 3. - *

- * CEIL: CEIL(-3.2) = 3, CEIL(3.2) = 4 - *

- * FLOOR: FLOOR(-3.2) = -4, FLOOR(3.2) = 3 - *

- * VAL: VAL("3.1") = 3.1 Returns the floating point numeric value of the string argument. - *

- * Predefined functions that take two parameters are: - *

- * POW: The Power function raises Base to any power. For fractional exponents or - * exponents greater than MaxInt, Base must be greater than 0. - *

- * LOGN: The LogN function returns the log base N of X. Example: LOGN(10, 100) = 2 - *

- * MIN: MIN(2, 3) is 2. - *

- * MAX: MAX(2, 3) is 3. - *

- * IF: The IF(b, case1, case2) function provides branching capability. - * If b is not 0, then it returns case1, else it returns case2. - * Behavior is similar to PHP's: return b ? case1 : case2;
- * If b==0 then case1 will not be Evaluated, and vice versa. - * Example: IF(HEIGHT, 3/HEIGHT, 3) will make sure 3/HEIGHT does not cause division by zero. - *

- * Predefined functions that take no parameters are: - * RND: RND() function generates a random number (double value) between 0 and 1. - *

- * STR: STR(123) function returns the string representation of the passed value: "123". - *

- * SUBSTR: SUBSTR("Hello", 1,3) function returns the substring just like PHP substr function. - * The first parameter is the string, the second parameter is which index (0 based) to start copying, - * and the last parameter is the number of characters to copy. For example, SUBSTR("Hello", 1,3) returns "ell". - *

- * STRLEN: STRLEN("abc") function returns the length of the string parameter. For example, for "abc" it returns 3. - *

- * CONCAT: CONCAT("abc","def",...) function returns the concatanated strings: "abcdef". - * There is no preset limit on the number of parameters. - *

- * TRIM: TRIM(" abc ") function returns the trimmed version of the string parameter: " abc " -> "abc". - *

- * SUM: SUM(2,3,5,...) functions returns the sum of it's arguments. There is no preset limit on the number of parameters. - *

+ * + * Predefined functions are: + *

+ * SQR: Square function which can be used as SQR(X) + *

+ * SIN: Sinus function which can be used as SIN(X), X is a real-type expression. + * Sin returns the sine of the angle X in radians. + *

+ * COS: Cosinus function which can be used as COS(X), X is a real-type expression. + * COS returns the cosine of the angle X in radians. + *

+ * ATAN: ArcTangent function which can be used as ATAN(X) + * Returns the arctangent of a number as a numeric value between -PI/2 and PI/2 radians. + *

+ * SINH: Sinus Hyperbolic function which can be used as SINH(X) + *

+ * COSH: Cosinus Hyperbolic function which can be used as COSH(X) + *

+ * COTAN: which can be used as COTAN(X) + *

+ * TAN: which can be used as TAN(X) + *

+ * EXP: which can be used as EXP(X) + *

+ * LN: natural log, which can be used as LN(X) + *

+ * LOG: 10 based log, which can be used as LOG(X) + *

+ * SQRT: which can be used as SQRT(X) + *

+ * ABS: absolute value, which can be used as ABS(X) + *

+ * SIGN: SIGN(X) returns -1 if X<0; +1 if X>0, 0 if X=0; it can be used as SQR(X) + *

+ * TRUNC: Discards the fractional part of a number. e.g. TRUNC(-3.2) is -3, TRUNC(3.2) is 3. + *

+ * CEIL: CEIL(-3.2) = 3, CEIL(3.2) = 4 + *

+ * FLOOR: FLOOR(-3.2) = -4, FLOOR(3.2) = 3 + *

+ * VAL: VAL("3.1") = 3.1 Returns the floating point numeric value of the string argument. + *

+ * Predefined functions that take two parameters are: + *

+ * POW: The Power function raises Base to any power. For fractional exponents or + * exponents greater than MaxInt, Base must be greater than 0. + *

+ * LOGN: The LogN function returns the log base N of X. Example: LOGN(10, 100) = 2 + *

+ * MIN: MIN(2, 3) is 2. + *

+ * MAX: MAX(2, 3) is 3. + *

+ * IF: The IF(b, case1, case2) function provides branching capability. + * If b is not 0, then it returns case1, else it returns case2. + * Behavior is similar to PHP's: return b ? case1 : case2;
+ * If b==0 then case1 will not be Evaluated, and vice versa. + * Example: IF(HEIGHT, 3/HEIGHT, 3) will make sure 3/HEIGHT does not cause division by zero. + *

+ * Predefined functions that take no parameters are: + * RND: RND() function generates a random number (double value) between 0 and 1. + *

+ * STR: STR(123) function returns the string representation of the passed value: "123". + *

+ * SUBSTR: SUBSTR("Hello", 1,3) function returns the substring just like PHP substr function. + * The first parameter is the string, the second parameter is which index (0 based) to start copying, + * and the last parameter is the number of characters to copy. For example, SUBSTR("Hello", 1,3) returns "ell". + *

+ * STRLEN: STRLEN("abc") function returns the length of the string parameter. For example, for "abc" it returns 3. + *

+ * CONCAT: CONCAT("abc","def",...) function returns the concatanated strings: "abcdef". + * There is no preset limit on the number of parameters. + *

+ * TRIM: TRIM(" abc ") function returns the trimmed version of the string parameter: " abc " -> "abc". + *

+ * SUM: SUM(2,3,5,...) functions returns the sum of it's arguments. There is no preset limit on the number of parameters. + *

+ * @since 1.0.0 */ class MathParser { - /** - * protected variable that holds the expression to parse. - * @var string - */ - protected $Expression; - /** - * non-public flag that shows if parsing is needed or not. if false, existing - * parse tree will be re-used. - * @var boolean - */ - protected $Dirty; - /** - * when optimization on, after the parse tree is compiled, it will be further optimized - * by removing sub branches that evaluate to a constant. This will make parse() operation - * slower and getValue() operation faster. - * @var boolean - */ - protected $OptimizationOn; + /** + * protected variable that holds the expression to parse. + * @var string + * @since 1.0.0 + */ + protected string $Expression; + /** + * non-public flag that shows if parsing is needed or not. if false, existing + * parse tree will be re-used. + * @var boolean + * @since 1.0.0 + */ + protected bool $Dirty; + /** + * when optimization on, after the parse tree is compiled, it will be further optimized + * by removing sub branches that evaluate to a constant. This will make parse() operation + * slower and getValue() operation faster. + * @var boolean + * @since 1.0.0 + */ + protected bool $OptimizationOn; - /** - * Starting node for the internal compiled representation of the - * expression in parsed form. - * @var Node - */ - protected $Node; + /** + * Starting node for the internal compiled representation of the + * expression in parsed form. + * @var $Node + * @since 1.0.0 + */ + protected $Node; - /** - * internal list of variables that are available for use in an expression. - * @var array - */ - protected $Variables; + /** + * internal list of variables that are available for use in an expression. + * @var array + * @since 1.0.0 + */ + protected array $Variables; - /** - * internal list of functions that take more than 2 parameters that are available for use in an expression. - * @var array - */ - protected $Functions; + /** + * internal list of functions that take more than 2 parameters that are available for use in an expression. + * @var array + * @since 1.0.0 + */ + protected array $Functions; - /** - * A dictionary that holds translated messages. - * @var array - */ - static protected $translator; + /** + * A dictionary that holds translated messages. + * @var array + * @since 1.0.0 + */ + static protected array $translator; - /** - * Does the expression allows string literals or not? - * For example, is an expression like this allowed: "Hello"+"World" - * @var boolean - */ - protected $StringLiteralsAllowed = true; + /** + * Does the expression allows string literals or not? + * For example, is an expression like this allowed: "Hello"+"World" + * @var boolean + * @since 1.0.0 + */ + protected bool $StringLiteralsAllowed = true; - /** - * The parser can use ampersand(&) or the plus(+) operator for string concatenations. - * You can set which one you want using StrConcatOperator property. - * The default is ampersand(&). Valid values are STR_CONCAT_OP.PLUS or - * STR_CONCAT_OP.AMPERSAND. - * @var string - */ - protected $StrConcatOperator; + /** + * The parser can use ampersand(&) or the plus(+) operator for string concatenations. + * You can set which one you want using StrConcatOperator property. + * The default is ampersand(&). Valid values are STR_CONCAT_OP.PLUS or + * STR_CONCAT_OP.AMPERSAND. + * @var string + * @since 1.0.0 + */ + protected string $StrConcatOperator; - /* - * Public for performance reasons. - * @see getVariableResolver function for more info. - * @var string - */ - public $VariableResolver; + /** + * Public for performance reasons. + * @see getVariableResolver function for more info. + * @var string + * @since 1.0.0 + */ + public string $VariableResolver; - /** - * @ignore - */ - static protected $add__; - /** - * @ignore - */ - static protected $subtract__; - /** - * @ignore - */ - static protected $mult__; - /** - * @ignore - */ - static protected $div__; - /** - * @ignore - */ - static protected $power__; - /** - * @ignore - */ - static protected $mod__; - /** - * @ignore - */ - static protected $unaryadd__; - /** - * @ignore - */ - static protected $negate__; - /** - * @ignore - */ - static protected $not__; - /** - * @ignore - */ - static protected $notequals__; - /** - * @ignore - */ - static protected $equals__; - /** - * @ignore - */ - static protected $lt__; - /** - * @ignore - */ - static protected $gt__; - /** - * @ignore - */ - static protected $ltequals__; - /** - * @ignore - */ - static protected $gtequals__; - /** - * @ignore - */ - static protected $and__; - /** - * @ignore - */ - static protected $or__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $add__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $subtract__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $mult__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $div__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $power__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $mod__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $unaryadd__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $negate__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $not__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $notequals__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $equals__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $lt__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $gt__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $ltequals__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $gtequals__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $and__; + /** + * @ignore + * @since 1.0.0 + */ + static protected Mathparser_ParserFunction $or__; - /** - * Implementation of plus (+) operator. - * @ignore - */ - protected $AddOp; + /** + * Implementation of plus (+) operator. + * @ignore + * @since 1.0.0 + */ + protected Mathparser_ParserFunction $AddOp; - /** - * Implementation of ampersand (&) operator for strings. - * @ignore - */ - protected $AndOp; + /** + * Implementation of ampersand (&) operator for strings. + * @ignore + * @since 1.0.0 + */ + protected Mathparser_ParserFunction $AndOp; + /** + * VariableResolver is used as a callback function that returns the values of variables when asked. + * This is useful when a variable cannot be defined before the parse operation. + * If VariableResolver property is set, it will be used to resolve variables that were not defined + * at the time parse operation has started. This means that syntax errors regarding undefined variables + * will not be caught at parse time. This VariableResolver (user implementation) will decide whether + * a variable name is valid or not. + * This is useful when for example the value comes from a database lookup. In some cases, + * the problem domain is too big to define the variables ahead of time. In such cases, it makes sense + * to parse with the assumption that it is a valid variable and resolve it's value when needed on demand during + * evaluation. + * @return string + * @since 1.0.0 + */ + public function getVariableResolver(): string + { + return $this->VariableResolver; + } - /** - * Can the expression contain string literals such as - * "abc", "hello world" etc. If you do not want to support strings in the - * expression, (want numeric processing only), then you can set this property - * to false and then you can also remove string functions from the list of available - * functions. Then the parser will solely work on numeric expressions. - * The string literals may also be useful in numeric context where the string can refer - * to a database table or column name and can be passed to functions that actually use these strings - * to lookup these values in databases to return numeric values too. - * @return boolean - */ - public function getStringLiteralsAllowed() - { - return $this->StringLiteralsAllowed; - } - /** - * @see getStringLiteralsAllowed - * @param $value - boolean - * @return void - */ - public function setStringLiteralsAllowed($value) - { - $this->StringLiteralsAllowed = $value; - if($value==true){ - if($this->StrConcatOperator=='&'){ - $this->AndOp = new Mathparser_ParserFunction('&', 'mp_and_str_', 2); - }else if ($this->StrConcatOperator=='+'){ - $this->AddOp = new Mathparser_ParserFunction('+', 'mp_add_str_', 2); - }else{ - throw new Exception('Invalid string concat operator: '.$this->StrConcatOperator); - } - }else{ - $this->AddOp = self::$add__; - $this->AndOp = self::$and__; - } - } + /** + * Constructor for the MathParser. + * @throws Exception + * @since 1.0.0 + */ + public function __construct() + { + $this->Expression = ''; + $this->Node = null; + $this->Dirty = true; //means it is not Parsed yet. + $this->OptimizationOn = false; - /** - * If you setStringLiteralsAllowed to true, MathParser allows string literals and - * variables to be used in the expression. By default string values can be concatenated - * to each other using plus (+) operator. StrConcatOperator property allows the user to - * set ampersand instead (&). You can only set plus(+) or ampersand (&) - * @return boolean - */ - public function getStrConcatOperator(){ - return $this->StrConcatOperator; - } - /** - * @see getStrConcatOperator - * @param $value - boolean - * @return void - */ - public function setStrConcatOperator($value){ - $this->StrConcatOperator=$value; - if($value=='&'){ - if($this->StringLiteralsAllowed){ - $this->AndOp = new Mathparser_ParserFunction('&', 'mp_and_str_', 2); - $this->AddOp = self::$add__; - }else{ - $this->AddOp = new Mathparser_ParserFunction('+', 'mp_add_str_', 2); - $this->AndOp = self::$and__; - } - }else if ($value=='+'){ - if($this->StringLiteralsAllowed){ - $this->AddOp = new Mathparser_ParserFunction('+', 'mp_add_str_', 2); - $this->AndOp = self::$and__; - }else{ - $this->AndOp = new Mathparser_ParserFunction('&', 'mp_and_str_', 2); - $this->AddOp = self::$add__; - } - }else{ - throw new Exception('Invalid string concat operator: '.$value); - } - } + $this->Variables = array(); + $this->Functions = array(); - /** - * VariableResolver is used as a callback function that returns the values of variables when asked. - * This is useful when a variable cannot be defined before the parse operation. - * If VariableResolver property is set, it will be used to resolve variables that were not defined - * at the time parse operation has started. This means that syntax errors regarding undefined variables - * will not be caught at parse time. This VariableResolver (user implementation) will decide whether - * a variable name is valid or not. - * This is useful when for example the value comes from a database lookup. In some cases, - * the problem domain is too big to define the variables ahead of time. In such cases, it makes sense - * to parse with the assumption that it is a valid variable and resolve it's value when needed on demand during - * evaluation. - * @return string - */ - public function getVariableResolver() - { - return $this->VariableResolver; - } - /** - * @see getVariableResolver - * @param $value string - */ - public function setVariableResolver($value){ - $this->VariableResolver=$value; - if($value==null){ - $this->Dirty=true; - } - } + //Comment out if you don't want these functions and variables: + $this->createDefaultFuncs(); + $this->createDefaultVars(); - /** - * Constructor for the MathParser. - */ - public function __construct() - { - $this->Expression = ''; - $this->Node = null; - $this->Dirty = true; //means it is not Parsed yet. - $this->OptimizationOn = false; - - $this->Variables = array(); - $this->Functions = array(); - - //Comment out if you don't want these functions and variables: - $this->createDefaultFuncs(); - $this->createDefaultVars(); - - if(!isset(self::$add__)){ + if (!isset(self::$add__)) { self::$add__ = new Mathparser_ParserFunction('+', 'mp_add_', 2); self::$subtract__ = new Mathparser_ParserFunction('-', 'mp_subtract_', 2); self::$mult__ = new Mathparser_ParserFunction('*', 'mp_mult_', 2); @@ -424,458 +373,378 @@ class MathParser self::$and__ = new Mathparser_ParserFunction('&', 'mp_and_', 2); self::$or__ = new Mathparser_ParserFunction('|', 'mp_or_', 2); - } + } - $this->AddOp = self::$add__; - $this->AndOp = self::$and__; - $this->StrConcatOperator='&'; //default. - } + $this->AddOp = self::$add__; + $this->AndOp = self::$and__; + $this->StrConcatOperator = '&'; //default. + } - /** - * Returns the existing trasnlatable strings used to report error messages. - * To use this component in a localized application, set the translated versions of - * strings for each value that exists in the hashtable. By default, same hashtable is shared - * between all instances of the parser. To change translation strings, set a new hashtable - * of your own for the parser instance instead of editing the values contained in this hashtable if - * you do not wish other parser instances not to be effected. - * Returns dictionary (array) of key/value pairs where value is a Locale dependent, typically translated String, that - * may contain placeholder parameters using %s. - * @return array - */ - public static function &getTranslationStrings() - { - if(!isset(self::$translator)) - { - self::$translator = array(); + /** + * Returns the existing translatable strings used to report error messages. + * To use this component in a localized application, set the translated versions of + * strings for each value that exists in the hashtable. By default, same hashtable is shared + * between all instances of the parser. To change translation strings, set a new hashtable + * of your own for the parser instance instead of editing the values contained in this hashtable if + * you do not wish other parser instances not to be effected. + * Returns dictionary (array) of key/value pairs where value is a Locale dependent, typically translated String, that + * may contain placeholder parameters using %s. + * @return array + * @since 1.0.0 + */ + public static function &getTranslationStrings(): array + { + if (!isset(self::$translator)) { + self::$translator = array(); - //#Strings used by the math Parser. - self::$translator['ExpEmpty']='Expression is empty.'; + //#Strings used by the math Parser. + self::$translator['ExpEmpty'] = 'Expression is empty.'; - //#parameter is the name of a variable: - self::$translator['VarNtExst']='Variable %s does not exist.'; + //#parameter is the name of a variable: + self::$translator['VarNtExst'] = 'Variable %s does not exist.'; - //variable is not numeric: - self::$translator['VarNtDbl']='Variable %s is not numeric.'; + //variable is not numeric: + self::$translator['VarNtDbl'] = 'Variable %s is not numeric.'; - //variable is not a string: - self::$translator['VarNtStr']='Variable %s is not a string.'; + //variable is not a string: + self::$translator['VarNtStr'] = 'Variable %s is not a string.'; - //variable is not a string or a double: - self::$translator['VarNtDblStr']='Variable %s should be a Double or a String. It is {1}.'; + //variable is not a string or a double: + self::$translator['VarNtDblStr'] = 'Variable %s should be a Double or a String. It is {1}.'; - //variable already exists: - self::$translator['VarExt']='Variable %s already exists.'; + //variable already exists: + self::$translator['VarExt'] = 'Variable %s already exists.'; - //#parameter is the name of a variable: - self::$translator['NtVarNm']='%s is not a valid variable name.'; + //#parameter is the name of a variable: + self::$translator['NtVarNm'] = '%s is not a valid variable name.'; - //#parameter is the math expression that failed to Parse: - self::$translator['SntxErr']='Syntax error in expression %s'; + //#parameter is the math expression that failed to Parse: + self::$translator['SntxErr'] = 'Syntax error in expression %s'; - //#parameter is a function name: - self::$translator['NtFncNm']='%s is not a valid function name.'; + //#parameter is a function name: + self::$translator['NtFncNm'] = '%s is not a valid function name.'; - //#parameter is a function name: - self::$translator['FncExst']='Function %s already exists.'; + //#parameter is a function name: + self::$translator['FncExst'] = 'Function %s already exists.'; - //#Parameters are function name and number of parameters: - self::$translator['WrngNPrms']='Function %s must accept at least 0 parameters not %s.'; + //#Parameters are function name and number of parameters: + self::$translator['WrngNPrms'] = 'Function %s must accept at least 0 parameters not %s.'; - self::$translator['WrngNPrms2']='Function %s requires at least %s parameters.'; + self::$translator['WrngNPrms2'] = 'Function %s requires at least %s parameters.'; - //#sub expression is not valid: - self::$translator['ExpNtVld']='Sub expression "%s" in "%s" is not valid.'; + //#sub expression is not valid: + self::$translator['ExpNtVld'] = 'Sub expression "%s" in "%s" is not valid.'; - self::$translator['InvNPrm']='Invalid number of parameters in "%s".'; + self::$translator['InvNPrm'] = 'Invalid number of parameters in "%s".'; - //#bracket mismatch. - self::$translator['BrcktMis']='Bracket mismatch in expression "%s" at index %s.'; + //#bracket mismatch. + self::$translator['BrcktMis'] = 'Bracket mismatch in expression "%s" at index %s.'; - //#missing brackets. - self::$translator['MisBrckt']='Missing bracket ")" in expression "%s".'; + //#missing brackets. + self::$translator['MisBrckt'] = 'Missing bracket ")" in expression "%s".'; - //applying logical and & to string values: - self::$translator['InvConcatOper']='Parameter #2 %s is not a numeric value. Cannot apply logical and (&) operator. If you want to concatenate 2 strings, use STR() function to convert first parameter to string.'; + //applying logical and & to string values: + self::$translator['InvConcatOper'] = 'Parameter #2 %s is not a numeric value. Cannot apply logical and (&) operator. If you want to concatenate 2 strings, use STR() function to convert first parameter to string.'; - //applying logical and + to string values: - self::$translator['InvConcatOper2']='Parameter #2 %s is not a numeric value. Cannot apply plus (+) operator. If you want to concatenate 2 strings, use STR() function to convert first parameter to string.'; + //applying logical and + to string values: + self::$translator['InvConcatOper2'] = 'Parameter #2 %s is not a numeric value. Cannot apply plus (+) operator. If you want to concatenate 2 strings, use STR() function to convert first parameter to string.'; - //converting str to number: - self::$translator['InvNum']='Cannot convert to a number. %s is not a numeric value.'; - } - return self::$translator; - } + //converting str to number: + self::$translator['InvNum'] = 'Cannot convert to a number. %s is not a numeric value.'; + } + return self::$translator; + } - /** - * Sets the key/value pairs where value is a translated message string for the parser to use while constructing messages. - * This mechanism allows the parser instances in the same VM efficiently - * use different locales independent of each other. not for each instance of the parser.

- * Messages may contain parameter placeholders. For example: - * "Variable %s does not exist". You need to have your own messages translated - * accordingly.
- * @param string - * @return void - */ - public function setTranslationStrings($strings) - { - self::$translator = $strings; - } + /** + * Variable property is a way to set and get variable values. + * setVariable function creates the variable if the variable does not exist. + * Variable name is not case sensitive. Throws exception if the variable needs + * to be created and the name is not a valid variable name. CreateVar is just an + * alias for this method. + * @param $varName - Name of the variable whose value is being set. + * @param $newVal - New value of the variable. It should be either a Double or a String. + * @param $fn_valueProvider - The delegate that returns the value for a variable when asked by name. + * When a $fn_valueProvider is set for a Variable, it's assigned value will not be used and instead the $fn_valueProvider of type + *

function VariableDelegate($parser, $varName);

+ * will be called. This is useful in cases when the value of a variable comes from a database and it is not easy to set it's value + * (or it is costly) ahead of time. So, when you want to compute the variable value only when it is needed, then you can register a $fn_valueProvider + * to be called. You can use the same $fn_valueProvider for all or some of your variables or you can have a different valueProvider for each variable. + * @return void + * @throws Exception + * @since 1.0.0 + */ + public function setVariable($varName, $newVal, $fn_valueProvider = null): void + { + if ($varName == null) { + throw new Exception("Variable name cannot be null."); + } + if (is_numeric($newVal)) { + $newVal = (float)$newVal; + } else + if (!is_string($newVal)) { + throw new Exception("Variable should be floating point or string value: " . $newVal); + } + $upcName = strtoupper($varName); + $existing = $this->Variables[$upcName]; + if ($existing != null) { + $existing->Value = $newVal; + } else { + if (!$this->isValidName($upcName)) { + throw new Exception($this->getMessage1("NtVarNm", $varName)); + } + //create the variable: + $var = new Mathparser_Variable($upcName, $newVal, $fn_valueProvider); + $this->Variables[$upcName] = $var; + $this->Dirty = true; + } + } - /** - * Variable property is a way to set and get variable values. - * Throws Exception if the variable does not exist. - * Variable name is not case sensitive. - * @param string - * @return Returns the current value of the variable. It is either Double or String. - */ - public function getVariable($varName) - { - if ($varName==null) - { - throw new Exception("Variable name cannot be null."); - } - $upcName = strtoupper($varName); - $aVariable = $this->Variables[$upcName]; - if ($aVariable==null) - { - throw new Exception($this->getMessage1("VarNtExst", $varName)); - } - return $aVariable->Value; - } + /** + * Evaluates the expression and returns the result of it. If it cannot be parsed or + * evaluated then this method throws Exception. + *

+ * Calling this method is identical to calling getValue() + * @return double|string - Returns the value of the parsed expression. + * The return type is an object that can be interpreted as either Double or String. + * @throws Mathparser_ParserException + * @since 1.0.0 + */ + public function evaluate(): float|string + { + if ($this->Dirty) { //if the expression has been changed, we need to Parse it again + $this->parse(); + } + return $this->Node->getValue(); //this will start the chain reaction to get the + //value of all nodes + } - /** - * Variable property is a way to set and get variable values. - * setVariable function creates the variable if the variable does not exist. - * Variable name is not case sensitive. Throws exception if the variable needs - * to be created and the name is not a valid variable name. CreateVar is just an - * alias for this method. - * @param $varName - Name of the variable whose value is being set. - * @param $newVal - New value of the variable. It should be either a Double or a String. - * @param $fn_valueProvider - The delegate that returns the value for a variable when asked by name. - * When a $fn_valueProvider is set for a Variable, it's assigned value will not be used and instead the $fn_valueProvider of type - *

function VariableDelegate($parser, $varName);

- * will be called. This is useful in cases when the value of a variable comes from a database and it is not easy to set it's value - * (or it is costly) ahead of time. So, when you want to compute the variable value only when it is needed, then you can register a $fn_valueProvider - * to be called. You can use the same $fn_valueProvider for all or some of your variables or you can have a different valueProvider for each variable. - * @return void - */ - public function setVariable($varName, $newVal, $fn_valueProvider=null) - { - if ($varName==null) - { - throw new Exception("Variable name cannot be null."); - } - if(is_numeric($newVal)) - { - $newVal = (float)$newVal; - }else - if(!is_string($newVal)){ - throw new Exception("Variable should be floating point or string value: ".$newVal); - } - $upcName = strtoupper($varName); - $existing = $this->Variables[$upcName]; - if ($existing!=null) - { - $existing->Value = $newVal; - } - else - { - if (!$this->isValidName($upcName)) - { - throw new Exception($this->getMessage1("NtVarNm", $varName)); - } - //create the variable: - $var = new Mathparser_Variable($this, $upcName, $newVal, $fn_valueProvider); - $this->Variables[$upcName] = $var; - $this->Dirty = true; - } - } + /** + * Parses the expression and forms a parse tree. Throws Exception if it cannot parse. + * Upon successful completion of parsing, it will set the Dirty flag to false, so that + * unless the expression is changed or variables and functions added or removed, + * expression does not need to be re-parsed. Users may want to call the parse method + * directly to check the validity of an input expression using a try-except block. + *

+ * If OptimizationOn property is true, Parse method will optimize the parse tree by + * evaluating constant branches of the parse tree at that moment, so that Evaluate + * function will run faster. + * @return void + * @throws Mathparser_ParserException + * @throws Exception + * @since 1.0.0 + */ + public function parse(): void + { + if (!isset($this->Expression) || !(strlen($this->Expression) > 0)) { + $this->Node = null; + throw new Exception($this->getMessage("ExpEmpty")); + } - /** - * Evaluates the expression and returns the result of it. If it cannot be parsed or - * evaluated then this method throws Exception. - *

- * Calling this method is identical to calling getValue() - * @return Returns the value of the parsed expression. - * The return type is an object that can be interpreted as either Double or String. - */ - public function evaluate() - { - if ($this->Dirty) - { //if the expression has been changed, we need to Parse it again - $this->parse(); - } - return $this->Node->getValue(); //this will start the chain reaction to get the - //value of all nodes - } + $formula = $this->Expression; + $this->upperCase($formula); + //echo $formula; - /** - * Parses the expression and forms a parse tree. Throws Exception if it cannot parse. - * Upon successful completion of parsing, it will set the Dirty flag to false, so that - * unless the expression is changed or variables and functions added or removed, - * expression does not need to be re-parsed. Users may want to call the parse method - * directly to check the validity of an input expression using a try-except block. - *

- * If OptimizationOn property is true, Parse method will optimize the parse tree by - * evaluating constant branches of the parse tree at that moment, so that Evaluate - * function will run faster. - * @return void - */ - public function parse() - { - if (!isset($this->Expression) || ! ( strlen($this->Expression) > 0)) - { - $this->Node = null; - throw new Exception($this->getMessage("ExpEmpty")); - } + $len = strlen($formula); + $brackets = self::checkBrackets($formula); + if ($brackets > -1 && $brackets < $len) { + throw new Mathparser_ParserException($this->getMessage2("BrcktMis", $formula, $brackets), substr($formula, $brackets), $formula); + } else + if ($brackets == 'len') { + throw new Mathparser_ParserException($this->getMessage1("MisBrckt", $formula), $formula, $formula); + } - $formula = $this->Expression; - $this->upperCase($formula); - //echo $formula; - - $len = strlen($formula); - $brackets = self::checkBrackets($formula); - if($brackets>-1 && $brackets<$len) - { - throw new Mathparser_ParserException($this->getMessage2("BrcktMis", $formula, $brackets), substr($formula, $brackets), $formula); - } - else - if($brackets=='len') - { - throw new Mathparser_ParserException($this->getMessage1("MisBrckt", $formula), $formula, $formula); - } + if (($this->Node = $this->createParseTree($formula)) == null) { + throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $formula, $formula), $formula, $formula); + } - if (($this->Node = $this->createParseTree($formula)) == null) - { - throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $formula, $formula), $formula, $formula); - } + if ($this->OptimizationOn) { + $this->optimize(); //will make sure FNode tree is lean and mean + } + $this->Dirty = false; //note that we Parsed it once. Unless the expression is changed we do not need to reParse it. + } - if ($this->OptimizationOn) - { - $this->optimize(); //will make sure FNode tree is lean and mean - } - $this->Dirty = false; //note that we Parsed it once. Unless the expression is changed we do not need to reParse it. - } + /** + * Uppercases the expression in char array form without touching the string literals. + * @param $c - to convert to uppercase. + * @return void + * @since 1.0.0 + */ + private function upperCase(&$c): void + { + $len = strlen($c); + $insideStringConst = false; + for ($i = 0; $i < $len; $i++) { + $ch = $c[$i]; + if ($ch == '"')//support string literals in the expression. + { + $insideStringConst = !$insideStringConst; + continue; + } + if (!$insideStringConst) { + $c[$i] = strtoupper($ch); + } + } + } - /** - * Uppercases the expression in char array form without touching the string literals. - * @param string to convert to uppercase. - * @return void - */ - private function upperCase(&$c) - { - $len = strlen($c); - $insideStringConst = false; - for ($i = 0; $i<$len; $i++) - { - $ch = $c[$i]; - if($ch=='"')//support string literals in the expression. - { - $insideStringConst = !$insideStringConst; - continue; - } - if(!$insideStringConst) - { - $c[$i] = strtoupper($ch); - } - } - } - /** - * Removes the spaces in the expression without touching the string literals. - * Uppercases non-string literal portions of the expression. - * @param s - */ - /* - private function RemoveSpacesExceptLiteralsAndUpperCase($s) - { - if(strpos($s,' ')===false) - { - return $s; //no spaces involved, return. - } - $len = strlen($s); - $ch; - $insideStringConst = false; - $sb = ''; - for ($i = 0; $i<$len; $i++) - { - $ch = $s[$i]; - if($ch=='\"')//support string literals in the expression. - { - $insideStringConst = !$insideStringConst; - $sb.=$ch; - continue; - } - if(!$insideStringConst) - { - if($ch!=' ')//if it is not a space, we want it. - { - $sb.=strtoupper($ch); - } - } - else - { - $sb.=$ch; - } - } - return $sb; - } - */ + /** + * Creates a variable with given name and initial value. + * If the variable already exists, sets it's value to the specified value. + * Throws Exception if $varName is not a valid variable name. + * @param $varName - Variable name (case insensitive). + * @param $varValue - Initial value for the variable. + * @param $valueProvider - The callback delegate (a plain old PHP function) that decides the value of the variable at runtime. + *

function VariableDelegate($parser, $varName);

+ * @throws Exception + * @since 1.0.0 + */ + public function createVar($varName, $varValue, $valueProvider = null): void + { + $this->setVariable($varName, $varValue, $valueProvider); + } - /** - * Creates a variable with given name and initial value. - * If the variable already exists, sets it's value to the specified value. - * Throws Exception if $varName is not a valid variable name. - * @param varName - Variable name (case insensitive). - * @param varValue - Initial value for the variable. - * @param valueProvider - The callback delegate (a plain old PHP function) that decides the value of the variable at runtime. - *

function VariableDelegate($parser, $varName);

- * - */ - public function createVar($varName, $varValue, $valueProvider=null) - { - $this->setVariable($varName, $varValue, $valueProvider); - } + /** + * CreateFunc method creates a new function that takes n number of parameters (could be 0) in + * the parser's list of functions. If the function name already exists then this method throws Exception. + * Function name is not case sensitive. + *

+ * The second parameter is the name of the user defined function that is globally available: + *

+ * function funcName($parameter1 [, $parameter2,...]);
+ *

+ * During evaluation of the expression, when the registered function name is + * encountered, the user supplied funcName will be called and variables will be passed. + *

+ * This user defined function + * will need to return a result (representing the value of the function) + * based on the parameters passed as an array of double values. + * If the number of parameters that a function takes is not known ahead of time, + * then the $paramCount parameter should be -1. Otherwise, it will be the + * number of parameters that will be passed to the function at runtime. Knowing the number of + * parameters ahead of time helps detect syntax errors during parsing. For example, if SIN(x) function + * descriptor did not tell us that it was taking only 1 parameter, then an expression like: + * SIN(x,y) would not cause syntax error during parsing, and if the implementation of SIN(x) did not check + * actual runtime number of parameters passed, then the problem could go undetected + * and the second y parameter could be ignored silently. + * @param $newFuncName - Name of the new function to create. + * @param $funcAddr - name of the PHP function that will be invoked when parser needs to execute this user defined function. + * @param $paramCount - number of parameters that this function takes. -1 means any number of parameters. + * @throws Exception + * @since 1.0.0 + */ + public function createFunc($newFuncName, $funcAddr, $paramCount): void + { + if ($newFuncName == null) { + throw new Exception("Function name cannot be null."); + } + if ($funcAddr == null) { + throw new Exception("Function implementation cannot be null."); + } - /** - * CreateFunc method creates a new function that takes n number of parameters (could be 0) in - * the parser's list of functions. If the function name already exists then this method throws Exception. - * Function name is not case sensitive. - *

- * The second parameter is the name of the user defined function that is globally available: - *

- * function funcName($parameter1 [, $parameter2,...]);
- *

- * During evaluation of the expression, when the registered function name is - * encountered, the user supplied funcName will be called and variables will be passed. - *

- * This user defined function - * will need to return a result (representing the value of the function) - * based on the parameters passed as an array of double values. - * If the number of parameters that a function takes is not known ahead of time, - * then the $paramCount parameter should be -1. Otherwise, it will be the - * number of parameters that will be passed to the function at runtime. Knowing the number of - * parameters ahead of time helps detect syntax errors during parsing. For example, if SIN(x) function - * descriptor did not tell us that it was taking only 1 parameter, then an expression like: - * SIN(x,y) would not cause syntax error during parsing, and if the implementation of SIN(x) did not check - * actual runtime number of parameters passed, then the problem could go undetected - * and the second y parameter could be ignored silently. - * @param $newFuncName - Name of the new function to create. - * @param $funcAddr - name of the PHP function that will be invoked when parser needs to execute this user defined function. - * @param $paramCount - number of parameters that this function takes. -1 means any number of parameters. - */ - public function createFunc($newFuncName, $funcAddr, $paramCount ) - { - if ($newFuncName==null){ throw new Exception("Function name cannot be null."); } - if ($funcAddr==null){ throw new Exception("Function implementation cannot be null."); } + $upcName = strtoupper($newFuncName); + if (!$this->isValidName($upcName)) { //must contain uppercase letters only + throw new Exception($this->getMessage1("NtFncNm", $newFuncName)); + } - $upcName = strtoupper($newFuncName); - if (!$this->isValidName($upcName)) - { //must contain uppercase letters only - throw new Exception($this->getMessage1("NtFncNm", $newFuncName)); - } + if ($this->isFunction($upcName)) { + throw new Exception($this->getMessage1("FncExst", $newFuncName)); + } else if ($paramCount < -1)//-1 means num params unknown. + { + throw new Exception($this->getMessage2("WrngNPrms", $newFuncName, (string)$paramCount)); + } else { + $func = new Mathparser_ParserFunction($upcName, $funcAddr, $paramCount); + //if newFuncName doesn't exist it is inserted: + $this->Functions[$upcName] = $func; + } + $this->Dirty = true; //previously bad expression may now be ok, we should reParse it + } - if ($this->isFunction($upcName)) - { - throw new Exception($this->getMessage1("FncExst", $newFuncName)); - } - else if($paramCount<-1)//-1 means num params unknown. - { - throw new Exception($this->getMessage2("WrngNPrms", $newFuncName, (string)$paramCount)); - } - else - { - $func = new Mathparser_ParserFunction($upcName, $funcAddr, $paramCount); - //if newFuncName doesn't exist it is inserted: - $this->Functions[$upcName]=$func; - } - $this->Dirty= true; //previously bad expression may now be ok, we should reParse it - } - - /** - * CreateDefaultFuncs method creates some predefined functions in the parser's list of functions. - *

- * Predefined functions are: - *

- * SQR: Square function which can be used as SQR(X) - *

- * SIN: Sinus function which can be used as SIN(X), X is a real-type expression. - * Sin returns the sine of the angle X in radians. - *

- * COS: Cosinus function which can be used as COS(X), X is a real-type expression. - * COS returns the cosine of the angle X in radians. - *

- * ATAN: ArcTangent function which can be used as ATAN(X) - * Returns the arctangent of a number as a numeric value between -PI/2 and PI/2 radians. - *

- * SINH: Sinus Hyperbolic function which can be used as SINH(X) - *

- * COSH: Cosinus Hyperbolic function which can be used as COSH(X) - *

- * COTAN: which can be used as COTAN(X) - *

- * TAN: which can be used as TAN(X) - *

- * EXP: which can be used as EXP(X) - *

- * LN: natural log, which can be used as LN(X) - *

- * LOG: 10 based log, which can be used as LOG(X) - *

- * SQRT: which can be used as SQRT(X) - *

- * ABS: absolute value, which can be used as ABS(X) - *

- * SIGN: SIGN(X) returns -1 if X<0; +1 if X>0, 0 if X=0; it can be used as SQR(X) - *

- * TRUNC: Discards the fractional part of a number. e.g. TRUNC(-3.2) is -3, TRUNC(3.2) is 3. - *

- * CEIL: CEIL(-3.2) = 3, CEIL(3.2) = 4 - *

- * FLOOR: FLOOR(-3.2) = -4, FLOOR(3.2) = 3 - *

- * VAL: VAL("3.1") = 3.1 Returns the floating point numeric value of the string argument. - *

- * Predefined functions that take two parameters are: - *

- * POW: The Power function raises Base to any power. For fractional exponents or - * exponents greater than MaxInt, Base must be greater than 0. - *

- * LOGN: The LogN function returns the log base N of X. Example: LOGN(10, 100) = 2 - *

- * MIN: MIN(2, 3) is 2. - *

- * MAX: MAX(2, 3) is 3. - *

- * IF: The IF(b, case1, case2) function provides branching capability. - * If b is not 0, then it returns case1, else it returns case2. - * Behavior is similar to PHP's: return b ? case1 : case2;
- * If b==0 then case1 will not be Evaluated, and vice versa. - * Example: IF(HEIGHT, 3/HEIGHT, 3) will make sure 3/HEIGHT does not cause division by zero. - *

- * Predefined functions that take no parameters are: - * RND: RND() function generates a random number (double value) between 0 and 1. - *

- * STR: STR(123) function returns the string representation of the passed value: "123". - *

- * SUBSTR: SUBSTR("Hello", 1,3) function returns the substring just like PHP substring function. - * The first parameter is the string, the second parameter is which index (0 based) to start copying, - * and the last parameter is the number of characters to copy. For example, SUBSTR("Hello", 1,3) returns "ell". - *

- * STRLEN: STRLEN("abc") function returns the length of the string parameter. For example, for "abc" it returns 3. - *

- * CONCAT: CONCAT("abc","def",...) function returns the concatanated strings: "abcdef". - * There is no preset limit on the number of parameters. - *

- * TRIM: TRIM(" abc ") function returns the trimmed version of the string parameter: " abc " -> "abc". - *

- * SUM: SUM(2,3,5,...) functions returns the sum of it's arguments. There is no preset limit on the number of parameters. - *

- * User functions can be added using CreateFunc method. - * Functions and Variables can be deleted using DeleteVar, DeleteFunc, - * DeleteAllVars, DeleteAllFuncs methods. - */ - public function createDefaultFuncs() - { + /** + * CreateDefaultFuncs method creates some predefined functions in the parser's list of functions. + *

+ * Predefined functions are: + *

+ * SQR: Square function which can be used as SQR(X) + *

+ * SIN: Sinus function which can be used as SIN(X), X is a real-type expression. + * Sin returns the sine of the angle X in radians. + *

+ * COS: Cosinus function which can be used as COS(X), X is a real-type expression. + * COS returns the cosine of the angle X in radians. + *

+ * ATAN: ArcTangent function which can be used as ATAN(X) + * Returns the arctangent of a number as a numeric value between -PI/2 and PI/2 radians. + *

+ * SINH: Sinus Hyperbolic function which can be used as SINH(X) + *

+ * COSH: Cosinus Hyperbolic function which can be used as COSH(X) + *

+ * COTAN: which can be used as COTAN(X) + *

+ * TAN: which can be used as TAN(X) + *

+ * EXP: which can be used as EXP(X) + *

+ * LN: natural log, which can be used as LN(X) + *

+ * LOG: 10 based log, which can be used as LOG(X) + *

+ * SQRT: which can be used as SQRT(X) + *

+ * ABS: absolute value, which can be used as ABS(X) + *

+ * SIGN: SIGN(X) returns -1 if X<0; +1 if X>0, 0 if X=0; it can be used as SQR(X) + *

+ * TRUNC: Discards the fractional part of a number. e.g. TRUNC(-3.2) is -3, TRUNC(3.2) is 3. + *

+ * CEIL: CEIL(-3.2) = 3, CEIL(3.2) = 4 + *

+ * FLOOR: FLOOR(-3.2) = -4, FLOOR(3.2) = 3 + *

+ * VAL: VAL("3.1") = 3.1 Returns the floating point numeric value of the string argument. + *

+ * Predefined functions that take two parameters are: + *

+ * POW: The Power function raises Base to any power. For fractional exponents or + * exponents greater than MaxInt, Base must be greater than 0. + *

+ * LOGN: The LogN function returns the log base N of X. Example: LOGN(10, 100) = 2 + *

+ * MIN: MIN(2, 3) is 2. + *

+ * MAX: MAX(2, 3) is 3. + *

+ * IF: The IF(b, case1, case2) function provides branching capability. + * If b is not 0, then it returns case1, else it returns case2. + * Behavior is similar to PHP's: return b ? case1 : case2;
+ * If b==0 then case1 will not be Evaluated, and vice versa. + * Example: IF(HEIGHT, 3/HEIGHT, 3) will make sure 3/HEIGHT does not cause division by zero. + *

+ * Predefined functions that take no parameters are: + * RND: RND() function generates a random number (double value) between 0 and 1. + *

+ * STR: STR(123) function returns the string representation of the passed value: "123". + *

+ * SUBSTR: SUBSTR("Hello", 1,3) function returns the substring just like PHP substring function. + * The first parameter is the string, the second parameter is which index (0 based) to start copying, + * and the last parameter is the number of characters to copy. For example, SUBSTR("Hello", 1,3) returns "ell". + *

+ * STRLEN: STRLEN("abc") function returns the length of the string parameter. For example, for "abc" it returns 3. + *

+ * CONCAT: CONCAT("abc","def",...) function returns the concatanated strings: "abcdef". + * There is no preset limit on the number of parameters. + *

+ * TRIM: TRIM(" abc ") function returns the trimmed version of the string parameter: " abc " -> "abc". + *

+ * SUM: SUM(2,3,5,...) functions returns the sum of it's arguments. There is no preset limit on the number of parameters. + *

+ * User functions can be added using CreateFunc method. + * Functions and Variables can be deleted using DeleteVar, DeleteFunc, + * DeleteAllVars, DeleteAllFuncs methods. + * @throws Exception + * @since 1.0.0 + */ + public function createDefaultFuncs(): void + { $this->createFunc("SQR", 'mp_square_', 1); $this->createFunc("SIN", 'sin', 1); $this->createFunc("COS", 'cos', 1); @@ -905,1347 +774,1044 @@ class MathParser $this->createFunc("IF", 'if_', 3); $this->createFunc("STRLEN", 'strlen', 1); - $this->createFunc("STR", 'strval',1); - $this->createFunc("SUBSTR", 'substr',3); - $this->createFunc("CONCAT", 'mp_concat_',-1); - $this->createFunc("TRIM", 'trim',1); - $this->createFunc("RTRIM", 'rtrim',1); - $this->createFunc("LTRIM", 'ltrim',1); - $this->createFunc("CHR", 'chr',1); - $this->createFunc("NUM", 'mp_num_',1); + $this->createFunc("STR", 'strval', 1); + $this->createFunc("SUBSTR", 'substr', 3); + $this->createFunc("CONCAT", 'mp_concat_', -1); + $this->createFunc("TRIM", 'trim', 1); + $this->createFunc("RTRIM", 'rtrim', 1); + $this->createFunc("LTRIM", 'ltrim', 1); + $this->createFunc("CHR", 'chr', 1); + $this->createFunc("NUM", 'mp_num_', 1); $this->createFunc("SUM", 'sum_', -1); - } + } - /** - * X, Y and PI variables can be predefined and can be immediately used in the expression. - * Initial values of X and Y are 0. PI is 3.14159265358979 - */ - public function createDefaultVars() - { - try - { - $this->createVar("PI", 3.14159265358979, null); - $this->createVar("X", 0.0, null); - $this->createVar("Y", 0.0, null); - } - catch(Exception $e) - { - //we know that these are valid names, so there won't be an exception. - } - } + /** + * X, Y and PI variables can be predefined and can be immediately used in the expression. + * Initial values of X and Y are 0. PI is 3.14159265358979 + * @since 1.0.0 + */ + public function createDefaultVars(): void + { + try { + $this->createVar("PI", 3.14159265358979); + $this->createVar("X", 0.0); + $this->createVar("Y", 0.0); + } catch (Exception $e) { + //we know that these are valid names, so there won't be an exception. + Log::add("Pi, X or Y could not be created: " . $e->getMessage(), Log::WARNING,"com_sportsmanager"); + } + } - /** - * DeleteVar method deletes an existing variable from the list of available variables. - * If the variable does not exist, then DeleteVar does nothing. - *

- * When a variable is deleted Dirty flag is set to true so that next time - * the Evaluate function is called the expression will be reparsed. - * Variable name is not case sensitive. - * @param varName - Name of the variable to delete. - */ - public function deleteVar($varName) - { - if ($varName==null) - { - throw new Exception("Variable name cannot be null."); - } - //this function deletes the variable only if it finds it. - $upcName = strtoupper($varName); - unset($this->Variables[$upcName]); - //TODO: Is this right? - //$this->Variables = array_values($this->Variables); - $this->Dirty = true; - } - /** - * DeleteFunc method deletes an existing function from the list of available functions. - * If the function does not exist, deleteFunc does nothing. - *

- * When a function is deleted Dirty flag is set to true so that next time the - * Evaluate function is called the expression will be reparsed. - * Function name is not case sensitive. - * @param funcName - Name of the function to delete. - */ - public function deleteFunc($funcName) - { - if ($funcName==null) - { - throw new Exception("Function name cannot be null."); - } - $upcName = strtoupper($funcName); - unset($this->Functions[$upcName]); - //$this->Functions = array_values($this->Functions); - $this->Dirty = true; - } + /** + * Returns true if a function with the name 'funcName' is present in any of + * the current functions lists. Returns true if a function with the given name is defined. False otherwise. + * @param string $funcName - Name of the function in question. + * @return boolean + * @throws Exception + * @since 1.0.0 + */ + public function isFunction(string $funcName): bool + { + if ($funcName == null) { + throw new Exception("Function name cannot be null."); + } + $funcName = strtoupper($funcName); + return isset($this->Functions[$funcName]); + } - /** - * DeleteAllVars method deletes all variables from the list of available variables. - *

- * This action may be useful when number of unused variables is too high that - * causes performance to degrade. - *

- * When a variable is deleted Dirty flag is set to true so that next time the - * Evaluate function is called the expression will be reparsed. - */ - public function deleteAllVars() - { - $this->Variables = array(); - $this->Dirty = true; - } + /** + * Optimizes the parse tree by finding branches that evaluate to a constant and + * replacing them with a leaf representing the constant. + * Until the expression is changed and reparsed, further evaluation requests will be + * quicker. + *

+ * If the same expression will not be evaluated repeatedly with varying + * values of parameters used in it, then optimization will not bring any gain, + * but will slow performance. + *

+ * If OptimizationOn property is set to true, this method is called automatically when an + * evaluation is requested by calling Evaluate method or getValue() method. + * @ignore + * @since 1.0.0 + */ + public function optimize(): void + { + $this->Node = self::optimizeNode($this->Node); + } - /** - * DeleteAllFuncs method deletes all variables from the list of available functions. - *

- * This action may be useful when number of unused functions is too high that - * causes performance to degrade. - *

- * When a function is deleted Dirty flag is set to true so that next time the - * Evaluate function is called the expression will be reparsed. - */ - public function deleteAllFuncs() - { - $this->Functions = array(); - $this->Dirty = true; - } - /** - * FreeParseTree can be explicitly called to free the resources taken by the - * allocated Parse tree when an expression is parsed. FreeParseTree sets the Dirty - * flag to true so that next time the Evaluate function is called, expression will - * be parsed forming a new, valid parse tree to be evaluated. - */ - public function freeParseTree() - { - //delete FNode; - $this->Node = null; //this should free it all - $this->Dirty = true; //so that next time we call Evaluate, it will call the Parse method. - } - /** - * Returns true if a variable with the name 'varName' is used in the current expression. - * Variable name is not case sensitive. Throws exception if expression is not parsed - * and cannot be parsed. - * @param varName - Name of the variable in question. - * @return Returns true if the variable with the given name was actually used in the current expression. Returns false otherwise. - */ - public function isVariableUsed($varName) - { - if ($varName==null){ throw new Exception("Variable name cannot be null."); } + /** + * Value property is a read only property which returns the result of the expression. + * throws Exception if expression cannot be parsed. Return value is either Double or String. + * @return double|string + * @throws Mathparser_ParserException + * @since 1.0.0 + */ + public function getValue(): float|string + { + return $this->evaluate(); + } - if($this->Dirty) - { - parse(); //to create Parse tree if it is not created yet. - } + //------------------------------------------------------------------------------ + //END OF PUBLIC METHODS. + //------------------------------------------------------------------------------ - $varName = strtoupper($varName); - return $this->Node->isVariableUsed($varName); - } - /** - * Returns true if a function with the name 'funcName' is used in the current expression. - * Function name is not case sensitive. Throws exception if expression is not parsed and cannot be parsed. - * Returns true if the function with the given name was actually used in the current expression. - * Returns false otherwise. - * @param string $funcName - Name of the function in question. - * @return boolean - */ - public function isFunctionUsed($funcName) - { - if ($funcName==null){ throw new Exception("Function name cannot be null."); } - if ($this->Dirty) - { - parse(); //to create Parse tree if it is not created yet. - } + /** + * @param $index + * @param $c + * @return bool + * @ignore + * Valid char definition for function and variable names. + * @since 1.0.0 + */ + private function isValidChar($index, $c): bool + { + if ($index == 0) { + if (($c >= 'A' && $c <= 'Z')) { + return true; + } + if ($c == '_') { + return true; + } + return false; + } + if ((($c >= '0' && $c <= '9') || ($c >= 'A' && $c <= 'Z'))) { + return true; + } + if ($c == '_') { + return true; + } + return false; + } - $funcName = strtoupper($funcName); - return $this->Node->isFunctionUsed($funcName); - } - /** - * Returns true if a variable with the name 'varName' is present in the current variables list. - * For backward compatibility, IsVariable returns true for constants also. - * For constants, you can use IsConstant. Returns true if the variable exists in the list of - * variables of the parser instance. false otherwise. - * @param string $varName - Name of the variable in question. - * @return boolean - */ - public function isVariable($varName) - { - if ($varName==null){ throw new Exception("Variable name cannot be null."); } - $varName = strtoupper($varName); - return isset($this->Variables[$varName]); - } + /** + * Valid name definition for function and variable names. + * @param $name + * @return bool + * @ignore + * @since 1.0.0 + */ + private function isValidName($name): bool + { + $len = strlen($name); + for ($i = 0; $i < $len; $i++) { + if (!$this->isValidChar($i, $name[$i])) { + return false; + } + } + return true; + } + //------------------------------------------------------------------------------ - /** - * Returns true if a function with the name 'funcName' is present in any of - * the current functions lists. Returns true if a function with the given name is defined. False otherwise. - * @param string $funcName - Name of the function in question. - * @return boolean - */ - public function isFunction($funcName) - { - if ($funcName==null){ throw new Exception("Function name cannot be null."); } - $funcName = strtoupper($funcName); - return isset($this->Functions[$funcName]); - } + /** + * Makes sure number of opening brackets "(" are equal to + * the number of closing brackets ")" and they are consistent. + * @param $formula + * @return int + * @ignore + * @since 1.0.0 + */ + protected static function checkBrackets($formula): int + { + //this function checks to see if the order and double of brackets are correct + //it will say ok if it sees something like 3+()() + $n = 0; + $len = strlen($formula); + $insideStringConst = false; + for ($i = 0; $i < $len; $i++) { //if length<1 loop won't execute + $ch = $formula[$i]; + if ($ch == '\"')//support string literals in the expression. + { + $insideStringConst = !$insideStringConst; + continue; + } + if (!$insideStringConst) { + if ($ch == '(') + ++$n; + else if ($ch == ')') + --$n; - /** - * Returns the list of variables used in the current expression as an array of Strings. - * Each element of the array is guaranteed not to be null. - * If variables are not defined ahead of time, then $VariableResolver must have been set. - * Otherwise, when an undefined variable is found in the expression, ParserException will be thrown. - * Return array of variable names that are currently defined for this parser instance. - * @return array - */ - public function getVariablesUsed() - { - if ($this->Dirty && $this->Expression!=null && strlen($this->Expression)>0) - { - parse(); - } - return findVariablesUsed($this->Node); - } + if ($n < 0) return $i; //at any moment if expression is valid we cannot have more ) then ( + } + } + return ($n == 0) ? -1 : $len; //true if double of brackets matches + } + //------------------------------------------------------------------------------ - /** - * @ignore - * @param object $aNode - * @return array - */ - static function findVariablesUsed($aNode) - { - $list = array(); - if ($aNode instanceof Mathparser_VarNode) - { - $list[]=$aNode->VarName; - } - else if ($aNode.nodes) - { - foreach ($aNode.nodes as $n) - { - if ( $n instanceof Mathparser_VarNode ) - { - $list[]=$n->VarName; - } - else - { - $list = array_merge($list, findVariablesUsed($n)); - } - } - } - return $list; - } + /** + * Removes unncessary outer brackets in an expression. + * @param $formula + * @return mixed|string + * @ignore + * @since 1.0.0 + */ + protected static function removeOuterBrackets($formula): mixed + { + //has to be careful about (X+1)-(Y-1) + //should not remove the outer brackets here thinking that they are unnecessary + //but should remove when ((X+1)-(Y-1)) + $temp = $formula; + $Len = strlen($temp); + while (($Len > 2) && ($temp[0] == '(') && ($temp[$Len - 1] == ')')) { + $temp = trim(substr($temp, 1, $Len - 2)); + if (self::checkBrackets($temp) == -1) { //if we did not screw up then assign to the return value + $formula = $temp; + } + $Len = strlen($temp); + } + return $formula; + } + //------------------------------------------------------------------------------ - /** - * Returns the list of variables as an array of Strings. - * Each element of the array is guaranteed not to be null. - * Returns array of variable names that are currently defined for this parser instance. - * @return array - */ - public function getVariables() - { - return array_keys($this->Variables); - } + /** + * Determines if a given string is a valid double number or not. + * If it is valid, the actual double value is returned out in the out parameter dblVal. + * @param $formula - Expression to parse. + * @param $dblVal - Output double value + * @ignore + * @since 1.0.0 + */ + protected static function isValidDouble($formula, &$dblVal): bool + { + if (is_numeric($formula)) { + $dblVal = (float)$formula; + return true; + } + return false; + } - /** - * Returns a String array of function names declared for this parser. - * Elements of the array are guaranteed not to be null. - * Returns array of function names that are currently defined for this parser instance. - * @return array - */ - public function getFunctions() - { - return array_keys($this->Functions); - } + /** + * Returns the string literal if this formula is a string literal such as "abc". + * Escape character is " inside the string. Meaning, to have quotes inside the + * string it would be like this: + * "abc""defg".
+ * Returns null if this is not a valid string literal. + * @param $formula - The sub expression in question. + * @return string|null the string that is inside the "" after "" escapes inside the string are processed. Null if the string is not valid. + * @ignore + * @since 1.0.0 + */ + private static function getStringLiteral($formula): ?string + { + $len = strlen($formula); + if (!($len > 1 && $formula[0] == '"' && $formula[$len - 1] == '"')) { + return null; + } + $temp = substr($formula, 1, $len - 2); + if (self::checkEscapes($temp)) { + return str_replace('""', '"', $temp); + } + return null; + } - /** - * Optimizes the parse tree by finding branches that evaluate to a constant and - * replacing them with a leaf representing the constant. - * Until the expression is changed and reparsed, further evaluation requests will be - * quicker. - *

- * If the same expression will not be evaluated repeatedly with varying - * values of parameters used in it, then optimization will not bring any gain, - * but will slow performance. - *

- * If OptimizationOn property is set to true, this method is called automatically when an - * evaluation is requested by calling Evaluate method or getValue() method. - * @ignore - */ - public function optimize() - { - $this->Node = self::optimizeNode($this->Node); - } + /** + * @param $formula + * @return boolean + * @ignore + * @since 1.0.0 + */ + private static function checkEscapes($formula): bool + { + //this function checks to see if the escaped quotes match. + $len = strlen($formula); + $insideStringConst = false; + for ($i = 0; $i < $len; $i++) { //if length<1 loop won't execute + $ch = $formula[$i]; + if ($ch == '"') //support string literals in the expression. + { + if ($insideStringConst) { + return false; //too many quotes. + } + ++$i; + if ($i < $len && $formula[$i] == '"') { + $insideStringConst = true; + } else { + return false; + } + continue; + } + $insideStringConst = false; + } + return true; + } + //------------------------------------------------------------------------------ - /** - * Value property is a read only property which returns the result of the expression. - * throws Exception if expression cannot be parsed. Return value is either Double or String. - * @return mixed - */ - public function getValue() - { - return $this->evaluate(); - } + /** + * Compiles the parse tree of the given expression. + * @param $expToParse - Mathematical expression. + * @return mixed node of the parse tree. + * @throws Mathparser_ParserException + * @since 1.0.0 + * @ignore + */ + protected function createParseTree($expToParse): mixed + { + $expToParse = trim($expToParse); + if (($len = strlen($expToParse)) == 0) { + return null; + } - /** - * Value property is a read only property which returns the result of the expression. - * throws Exception if expression cannot be parsed. Return value is is a Double. - * @return float - */ - public function getValueAsDouble() - { - $obj = $this->evaluate(); - //if(is_string($obj)) - //{ - // return (float)$obj; - //} - return (float)$obj; - } + $formula = $this->removeOuterBrackets($expToParse); //remove unnecessary brackets - /** - * Value property is a read only property which returns the result of the expression. - * throws Exception if expression cannot be parsed. Return value is a string. - * @return string - */ - public function getValueAsString() - { - return (string)evaluate(); - } - - //------------------------------------------------------------------------------ - //END OF PUBLIC METHODS. - //------------------------------------------------------------------------------ + if (strlen($formula) != $len) { + $formula = trim($formula); + if (strlen($formula) == 0) { + return null; + } + } - /** - * @ignore - * Valid char definition for function and variable names. - * @param index - * @param c - */ - private function isValidChar($index, $c) - { - if ($index==0) - { - if ( ($c>='A' && $c<='Z') ) - { - return true; - } - if ($c=='_'){ return true; } - return false; - } - if ( (($c>='0' && $c<='9') || ($c>='A' && $c<='Z')) ) - { - return true; - } - if ($c=='_'){ return true; } - return false; - } - /** - * Valid name definition for function and variable names. - * @param name - * @ignore - */ - private function isValidName($name) - { - $len = strlen($name); - for ($i=0; $i<$len; $i++) - { - if(!$this->isValidChar($i, $name[$i])) - { - return false; - } - } - return true; - } - //------------------------------------------------------------------------------ - /** - * Makes sure number of opening brackets "(" are equal to - * the number of closing brackets ")" and they are consistent. - * @param formula - * @ignore - */ - protected static function checkBrackets($formula) - { - //this function checks to see if the order and double of brackets are correct - //it will say ok if it sees something like 3+()() - $n=0; - $len = strlen($formula); - $ch; - $insideStringConst = false; - for ($i = 0; $i<$len; $i++) - { //if length<1 loop won't execute - $ch = $formula[$i]; - if($ch=='\"')//support string literals in the expression. - { - $insideStringConst = !$insideStringConst; - continue; - } - if(!$insideStringConst) - { - if ($ch == '(') - ++$n; - else if ($ch == ')') - --$n; + //is this text a simple double value? + $dblVal = null; + if ($this->isValidDouble($formula, $dblVal)) { //attach a double node in the structure + return new Mathparser_BasicNode($dblVal); //we create a double node and attach it to the *Node reference. + } - if ($n<0) return $i; //at any moment if expression is valid we cannot have more ) then ( - } - } - return ($n == 0) ? -1 : $len; //true if double of brackets matches - } - //------------------------------------------------------------------------------ - /** - * Removes unncessary outer brackets in an expression. - * @param formula - * @ignore - */ - protected static function removeOuterBrackets($formula) - { - //has to be careful about (X+1)-(Y-1) - //should not remove the outer brackets here thinking that they are unnecessary - //but should remove when ((X+1)-(Y-1)) - $temp = $formula; - $Len = strlen($temp); - while (($Len>2) && ($temp[0] == '(') && ($temp[$Len-1] == ')') ) - { - $temp = trim(substr($temp, 1, $Len-2)); - if (self::checkBrackets($temp)==-1) - { //if we did not screw up then assign to the return value - $formula = $temp; - } - $Len = strlen($temp); - } - return $formula; - } - //------------------------------------------------------------------------------ - /** - * Determines if a given string is a valid double number or not. - * If it is valid, the actual double value is returned out in the out parameter dblVal. - * @param formula - Expression to parse. - * @param dblVal - Output double value - * @ignore - */ - protected static function isValidDouble($formula, &$dblVal ) - { - if(is_numeric($formula)){ - $dblVal = (float)$formula; - return true; - } - return false; - } - /** - * Returns the string literal if this formula is a string literal such as "abc". - * Escape character is " inside the string. Meaning, to have quotes inside the - * string it would be like this: - * "abc""defg".
- * Returns null if this is not a valid string literal. - * @param formula - The sub expression in question. - * @return the string that is inside the "" after "" escapes inside the string are processed. Null if the string is not valid. - * @ignore - */ - private static function getStringLiteral($formula) - { - $len=strlen($formula); - if (!($len>1 && $formula[0]=='"' && $formula[$len-1]=='"')) - { - return null; - } - $temp = substr($formula, 1,$len-2); - if(self::checkEscapes($temp)) - { - return str_replace('""', '"', $temp); - } - return null; - } + if ($this->StringLiteralsAllowed) { + $tempFormula = $this->getStringLiteral($formula); + if ($tempFormula != null) { + return new Mathparser_BasicNode($tempFormula); //we create a double node and attach it to the *Node reference. + } + } - /** - * @ignore - * @param $formula - * @return boolean - */ - private static function checkEscapes($formula) - { - //this function checks to see if the escaped quotes match. - $len = strlen($formula); - $ch; - $insideStringConst = false; - for ($i = 0; $i<$len; $i++) - { //if length<1 loop won't execute - $ch = $formula[$i]; - if($ch=='"') //support string literals in the expression. - { - if($insideStringConst) - { - return false; //too many quotes. - } - ++$i; - if($i<$len && $formula[$i]=='"') - { - $insideStringConst = true; - } - else - { - return false; - } - continue; - } - $insideStringConst = false; - } - return true; - } - //------------------------------------------------------------------------------ - /** - * Compiles the parse tree of the given expression. - * @param expToParse - Mathematical expression. - * @return Root node of the parse tree. - * @ignore - */ - protected function createParseTree($expToParse) - { - $expToParse = trim($expToParse); - if (($len=strlen($expToParse))==0) - { - return null; - } + //if it is not a simple double or a string, maybe it is a variable? + $varNode = $this->createVarNode($formula); + if ($varNode != null) { + return $varNode; + } - $formula = $this->removeOuterBrackets($expToParse); //remove unnecessary brackets - - if(strlen($formula)!=$len) - { - $formula = trim($formula); - if (strlen($formula)==0) - { - return null; - } - } + //if it is not a variable + $LastOper = $this->findLastOper($formula); - //is this text a simple double value? - $dblVal; - if ($this->isValidDouble($formula, $dblVal) ) - { //attach a double node in the structure - return new Mathparser_BasicNode($dblVal); //we create a double node and attach it to the *Node reference. - } + $funcAddr = null; + if (!($LastOper > 0)) //if it is 0 then it is a unary operation which is a one param function + { + $param = null; + if ($this->isOneParamFunc($formula, $funcAddr, $param, $LastOper)) { + if (($leftNode = $this->createParseTree($param)) == null) { + throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $param, $formula), $param, $formula); + } + if ($funcAddr != null) { + return new Mathparser_NParamNode(array($leftNode), $funcAddr); + } + } + } - if($this->StringLiteralsAllowed) - { - $tempFormula = $this->getStringLiteral($formula); - if ( $tempFormula!=null ) - { - return new Mathparser_BasicNode($tempFormula); //we create a double node and attach it to the *Node reference. - } - } + $paramLeft = null; + $paramRight = null; + if ($this->isTwoParamFunc($formula, $funcAddr, $paramLeft, $paramRight, $LastOper)) { + if (($leftNode = $this->createParseTree($paramLeft)) == null) { + throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $paramLeft, $formula), $paramLeft, $formula); + } + if (($rightNode = $this->createParseTree($paramRight)) == null) { + throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $paramRight, $formula), $paramRight, $formula); + } + //if there is a function address returned then we use it, otherwise we use function name + if ($funcAddr != null) { + return new Mathparser_NParamNode(array($leftNode, $rightNode), $funcAddr); + } + } - //if it is not a simple double or a string, maybe it is a variable? - $varNode = $this->createVarNode($formula); - if($varNode!=null) - { - return $varNode; - } + $parms = null; + //if it is none of the above: + if ($this->isNParamFunc($formula, /*out*/ $funcAddr, /*out*/ $parms)) { + if (!isset($parms)) { + //We now allow functions with no parameters. + throw new Mathparser_ParserException($this->getMessage1("InvNPrm", $formula), $formula, $formula); + } + $nParam = count($parms); + $nodes = array(); + for ($i = 0; $i < $nParam; $i++) { + if (($leftNode = $this->createParseTree($parms[$i])) == null) { + throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $parms[$i], $formula), $parms[$i], $formula); + } + $nodes[$i] = $leftNode; + } - //if it is not a variable - $leftNode = null; - $rightNode = null; - $LastOper= $this->findLastOper($formula); + //if there is a function address returned then we use it, otherwise we use function name + if ($funcAddr != null) { + return new Mathparser_NParamNode($nodes, $funcAddr); + } + } + //when code reaches here it means we did not return true so after compiling the expression. + return null; + } - $funcAddr=null; - if (! ($LastOper>0) ) //if it is 0 then it is a unary operation which is a one param function - { - $param=null; - if ( $this->isOneParamFunc($formula, $funcAddr, $param, $LastOper) ) - { - if (($leftNode = $this->createParseTree($param)) == null ) - { - throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $param, $formula), $param, $formula); - } - if ($funcAddr != null) - { - return new Mathparser_NParamNode(array($leftNode), $funcAddr); - } - } - } + //------------------------------------------------------------------------------ - $paramLeft=null; - $paramRight=null; - if ($this->isTwoParamFunc($formula, $funcAddr, $paramLeft, $paramRight, $LastOper) ) - { - if (($leftNode = $this->createParseTree($paramLeft)) == null) - { - throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $paramLeft, $formula), $paramLeft, $formula); - } - if (($rightNode = $this->createParseTree($paramRight)) == null ) - { - throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $paramRight, $formula), $paramRight, $formula); - } - //if there is a function address returned then we use it, otherwise we use function name - if ($funcAddr != null) - { - return new Mathparser_NParamNode(array($leftNode, $rightNode), $funcAddr); - } - } - - $parms=null; - //if it is none of the above: - if ($this->isNParamFunc($formula, /*out*/ $funcAddr, /*out*/ $parms, $LastOper) ) - { - if (!isset($parms)) - { - //We now allow functions with no parameters. - throw new Mathparser_ParserException($this->getMessage1("InvNPrm", $formula), $formula, $formula); - } - $nParam = count($parms); - $nodes = array(); - for ($i=0; $i<$nParam; $i++) - { - if ( ($leftNode = $this->createParseTree($parms[$i]) )== null) - { - throw new Mathparser_ParserException($this->getMessage2("ExpNtVld", $parms[$i], $formula), $parms[$i], $formula); - } - $nodes[$i] = $leftNode; - } + /** + * Finds the index of the last math operation in an expression. + * @param $formula - Math expression. + * @return int index of the last operand. + * @ignore + * @since 1.0.0 + */ + private static function findLastOper($formula): int + { //returns -1 if it cannot find anything + $Precedence = 13; //There are 12 operands and 13 is higher then all + $BracketLevel = 0; //shows the level of brackets we moved through + $Result = -1; + $Len = strlen($formula); + $lastWasOperator = 0; + $insideStringLiteral = false; + for ($i = 0; $i < $Len; $i++) //from left to right scan... + { + $current_ch = $formula[$i]; + if ($current_ch == '"') { + $insideStringLiteral = !$insideStringLiteral; + $lastWasOperator = 0; + continue; + } + if ($insideStringLiteral) { + continue; //skip string literals. + } + if ($lastWasOperator > 2) { + return -1; + } + switch ($current_ch) { + case ')' : + --$BracketLevel; //counting bracket levels + $lastWasOperator = 0; + break; + case '(' : + ++$BracketLevel; + $lastWasOperator = 0; + break; - //if there is a function address returned then we use it, otherwise we use function name - if ($funcAddr != null) - { - return new Mathparser_NParamNode($nodes, $funcAddr); - } - } - //when code reaches here it means we did not return true so after compiling the expression. - return null; - } - //------------------------------------------------------------------------------ - /** - * Finds the index of the last math operation in an expression. - * @param formula - Math expression. - * @return index of the last operand. - * @ignore - */ - private static function findLastOper($formula) - { //returns -1 if it cannot find anything - $Precedence = 13; //There are 12 operands and 13 is higher then all - $BracketLevel = 0; //shows the level of brackets we moved through - $Result = -1; - $Len = strlen($formula); - $lastWasOperator = 0; - $insideStringLiteral = false; - for ($i = 0; $i<$Len; $i++) //from left to right scan... - { - $current_ch = $formula[$i]; - if($current_ch=='"') - { - $insideStringLiteral = !$insideStringLiteral; - $lastWasOperator=0; - continue; - } - if($insideStringLiteral) - { - continue; //skip string literals. - } - if ($lastWasOperator>2) - { - return -1; - } - switch ($current_ch) - { - case ')' : - --$BracketLevel; //counting bracket levels - $lastWasOperator = 0; - break; - case '(' : - ++$BracketLevel; - $lastWasOperator = 0; - break; + case '|' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 1) { + $Precedence = 1; + $Result = $i; + } + ++$lastWasOperator; + break; - case '|' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 1 ) - { - $Precedence = 1; - $Result = $i; - } - ++$lastWasOperator; - break; + case '&' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 2) { + $Precedence = 2; + $Result = $i; + } + ++$lastWasOperator; + break; - case '&' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 2 ) - { - $Precedence = 2; - $Result = $i; - } - ++$lastWasOperator; - break; + case '!' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 3) { + $Precedence = 3; + $Result = $i; + } + ++$lastWasOperator; + break; - case '!' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 3 ) - { - $Precedence = 3; - $Result = $i; - } - ++$lastWasOperator; - break; + case '=' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 4) { + $Precedence = 4; + $Result = $i; + } + if ($lastWasOperator > 0) { + $prevOperIndex = $i - $lastWasOperator; + if ($formula[$prevOperIndex] == '<' || $formula[$prevOperIndex] == '>') { + break; //skip incrementing lastWasOperator variable. + } + } - case '=' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 4 ) - { - $Precedence = 4; - $Result = $i; - } - if($lastWasOperator>0) - { - $prevOperIndex = $i-$lastWasOperator; - if($formula[$prevOperIndex]=='<' || $formula[$prevOperIndex]=='>') - { - break; //skip incrementing lastWasOperator variable. - } - } + ++$lastWasOperator; + break; - ++$lastWasOperator; - break; + case '>' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 5) { + $Precedence = 5; + $Result = $i; + } + if ($lastWasOperator > 0) { + if ($formula[$i - $lastWasOperator] == '<') { + break; + } + } - case '>' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 5 ) - { - $Precedence = 5; - $Result = $i; - } - if($lastWasOperator>0) - { - if($formula[$i-$lastWasOperator]=='<') - { - break; - } - } + ++$lastWasOperator; + break; - ++$lastWasOperator; - break; + case '<' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 5) { + $Precedence = 5; + $Result = $i; + } + ++$lastWasOperator; + break; - case '<' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 5 ) - { - $Precedence = 5; - $Result = $i; - } - ++$lastWasOperator; - break; + case '-' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) //a main operation has to be outside the brackets + if ($Precedence >= 7) //seeking for lowest precedence + { + $Precedence = 7; + $Result = $i; //record the current index. + } + ++$lastWasOperator; + break; + case '+' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 7) { + $Precedence = 7; + $Result = $i; + } + ++$lastWasOperator; + break; + case '/': + case '*': + case '%' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 9) { + $Precedence = 9; + $Result = $i; + } + ++$lastWasOperator; + break; + case '^' : + if (!($BracketLevel > 0 || $lastWasOperator > 0)) + if ($Precedence >= 12) { + $Precedence = 12; + $Result = $i; + } + ++$lastWasOperator; + break; - case '-' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) //a main operation has to be outside the brackets - if ($Precedence >= 7) //seeking for lowest precedence - { - $Precedence = 7; - $Result = $i; //record the current index. - } - ++$lastWasOperator; - break; - case '+' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 7 ) - { - $Precedence = 7; - $Result = $i; - } - ++$lastWasOperator; - break; - case '%' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 9 ) - { - $Precedence = 9; - $Result = $i; - } - ++$lastWasOperator; - break; - case '/' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 9 ) - { - $Precedence = 9; - $Result = $i; - } - ++$lastWasOperator; - break; - case '*' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 9 ) - { - $Precedence = 9; - $Result = $i; - } - ++$lastWasOperator; - break; - case '^' : - if (! ($BracketLevel > 0 || $lastWasOperator>0) ) - if ($Precedence >= 12 ) - { - $Precedence = 12; - $Result = $i; - } - ++$lastWasOperator; - break; + case 'E' : + if ($i > 0 && $lastWasOperator == 0) { + $ch = $formula[$i - 1]; + if ($ch >= '0' && $ch <= '9') {//this E may be part of a number in scientific notation. + $j = $i; + while ($j > 0) { //trace back. + --$j; + $ch = $formula[$j]; + if ($ch == '.' || ($ch >= '0' && $ch <= '9')) { //if it is not a function or variable name. + continue; + } + if ($ch == '_' || ($ch >= 'A' && $ch <= 'Z')) {//is it a func or var name? + $lastWasOperator = 0; + break; //break the while loop. + } + ++$lastWasOperator; //it must be an operator or a paranthesis. + break; //break the while loop. + } + if ($j == 0 && ($ch >= '0' && $ch <= '9')) { + ++$lastWasOperator; + } + } else { + $lastWasOperator = 0; + } + } else { + $lastWasOperator = 0; + } + break; + case ' ': //space: + break; + default : + $lastWasOperator = 0; + break; + } + } + return $Result; + } + //------------------------------------------------------------------------------ - case 'E' : - if ($i > 0 && $lastWasOperator==0) - { - $ch = $formula[$i-1]; - if ($ch >= '0' && $ch <= '9') - {//this E may be part of a number in scientific notation. - $j=$i; - while($j > 0) - { //trace back. - --$j; - $ch = $formula[$j]; - if ($ch=='.' || ($ch >= '0' && $ch <= '9')) - { //if it is not a function or variable name. - continue; - } - if ($ch=='_' || ($ch>='A' && $ch<='Z')) - {//is it a func or var name? - $lastWasOperator = 0; - break; //break the while loop. - } - ++$lastWasOperator; //it must be an operator or a paranthesis. - break; //break the while loop. - } - if ($j==0 && ($ch >= '0' && $ch <= '9')) - { - ++$lastWasOperator; - } - } - else - { - $lastWasOperator = 0; - } - } - else - { - $lastWasOperator = 0; - } - break; - case ' ': //space: - break; - default : - $lastWasOperator=0; - break; - } - } - return $Result; - } - //------------------------------------------------------------------------------ - /** - * Determines if a given expression by itself is a function that takes 2 parameters. - * For example: and input of "MAX(x,y+1)" would return true. - * @param formula - expression - * @param funcAddr - The IFunction that this expression represents (if it is a function call) - * @param paramLeft - Left parameter whose values will be sent out in a wrapper utility object. - * @param paramRight - Right parameter group whose values will be sent out in a wrapper utility object. - * @param CurrChar - current operand index in the expression - * @return true if formula is a valid two parameter function. - * @ignore - */ - private function isTwoParamFunc( $formula, - /*out*/ &$funcAddr, /*out*/ &$paramLeft, /*out*/ &$paramRight, - $CurrChar //gives the last operation index in the string - ) - { - $funcAddr = null; - $paramLeft = null; - $paramRight = null; - $Len= strlen($formula); + /** + * Determines if a given expression by itself is a function that takes 2 parameters. + * For example: and input of "MAX(x,y+1)" would return true. + * @param $formula - expression + * @param $funcAddr - The IFunction that this expression represents (if it is a function call) + * @param $paramLeft - Left parameter whose values will be sent out in a wrapper utility object. + * @param $paramRight - Right parameter group whose values will be sent out in a wrapper utility object. + * @param $CurrChar - current operand index in the expression + * @return true if formula is a valid two parameter function. + * @ignore + * @since 1.0.0 + */ + private function isTwoParamFunc($formula, &$funcAddr, &$paramLeft, &$paramRight, + $CurrChar //gives the last operation index in the string + ): bool + { + $funcAddr = null; + $paramLeft = null; + $paramRight = null; + $Len = strlen($formula); - if ($CurrChar>0 ) //if function in question is an operand - { - if($CurrChar>$Len-2) - { - return false; - } - $CurrCh = $formula[$CurrChar]; + if ($CurrChar > 0) //if function in question is an operand + { + if ($CurrChar > $Len - 2) { + return false; + } + $CurrCh = $formula[$CurrChar]; - //was it an operand also? we want to find <>, >=, <= - if($CurrCh=='<') - { - $nextCh = $formula[$CurrChar+1]; //look ahead. - if($nextCh=='>') - { - $funcAddr = self::$notequals__; - $paramLeft = substr($formula, 0, $CurrChar); - $paramRight= substr($formula, $CurrChar+2); - } - else if ($nextCh=='=') - { - $funcAddr = self::$ltequals__; - $paramLeft = substr($formula, 0, $CurrChar); - $paramRight= substr($formula, $CurrChar+2); - } - else - { - $funcAddr = self::$lt__; //default case. - $paramLeft = substr($formula, 0, $CurrChar); - $paramRight= substr($formula, $CurrChar+1); - } + //was it an operand also? we want to find <>, >=, <= + if ($CurrCh == '<') { + $nextCh = $formula[$CurrChar + 1]; //look ahead. + if ($nextCh == '>') { + $funcAddr = self::$notequals__; + $paramLeft = substr($formula, 0, $CurrChar); + $paramRight = substr($formula, $CurrChar + 2); + } else if ($nextCh == '=') { + $funcAddr = self::$ltequals__; + $paramLeft = substr($formula, 0, $CurrChar); + $paramRight = substr($formula, $CurrChar + 2); + } else { + $funcAddr = self::$lt__; //default case. + $paramLeft = substr($formula, 0, $CurrChar); + $paramRight = substr($formula, $CurrChar + 1); + } - if (! (strlen($paramLeft)>0) ) - { - return false; - } - if (! (strlen($paramRight)>0) ) - { - return false; - } - return true; //all output is assigned, now we return true. - } - else if($CurrCh=='>') - { - $nextCh = $formula[$CurrChar+1]; - if($nextCh=='=') - { - $funcAddr = self::$gtequals__; - $paramLeft = substr($formula, 0, $CurrChar); - $paramRight= substr($formula, $CurrChar+2); - } - else - { - $funcAddr = self::$gt__; //default case. - $paramLeft = substr($formula, 0, $CurrChar); - $paramRight= substr($formula, $CurrChar+1); - } - if (! (strlen($paramLeft)>0) ) - { - return false; - } - if (! (strlen($paramRight)>0) ) - { - return false; - } - return true; //all output is assigned, now we return true. - } - else - { + if (!(strlen($paramLeft) > 0)) { + return false; + } + if (!(strlen($paramRight) > 0)) { + return false; + } + return true; //all output is assigned, now we return true. + } else if ($CurrCh == '>') { + $nextCh = $formula[$CurrChar + 1]; + if ($nextCh == '=') { + $funcAddr = self::$gtequals__; + $paramLeft = substr($formula, 0, $CurrChar); + $paramRight = substr($formula, $CurrChar + 2); + } else { + $funcAddr = self::$gt__; //default case. + $paramLeft = substr($formula, 0, $CurrChar); + $paramRight = substr($formula, $CurrChar + 1); + } + if (!(strlen($paramLeft) > 0)) { + return false; + } + if (!(strlen($paramRight) > 0)) { + return false; + } + return true; //all output is assigned, now we return true. + } else { - $paramLeft = substr($formula, 0, $CurrChar); - if (! (strlen($paramLeft)>0) ) - { - return false; - } + $paramLeft = substr($formula, 0, $CurrChar); + if (!(strlen($paramLeft) > 0)) { + return false; + } - $paramRight= substr($formula, $CurrChar+1); - if (! (strlen($paramRight)>0) ) - { - return false; - } + $paramRight = substr($formula, $CurrChar + 1); + if (!(strlen($paramRight) > 0)) { + return false; + } - switch ($formula[$CurrChar]) - { - //analytical operators: - case '+': $funcAddr = $this->AddOp; break; - case '-': $funcAddr = self::$subtract__; break; - case '*': $funcAddr = self::$mult__; break; - case '/': $funcAddr = self::$div__; break; - case '^': $funcAddr = self::$power__; break; - case '%': $funcAddr = self::$mod__; break; + switch ($formula[$CurrChar]) { + //analytical operators: + case '+': + $funcAddr = $this->AddOp; + break; + case '-': + $funcAddr = self::$subtract__; + break; + case '*': + $funcAddr = self::$mult__; + break; + case '/': + $funcAddr = self::$div__; + break; + case '^': + $funcAddr = self::$power__; + break; + case '%': + $funcAddr = self::$mod__; + break; - //logical operators: - case '<': $funcAddr = self::$lt__; break; - case '>': $funcAddr = self::$gt__; break; - case '=': $funcAddr = self::$equals__; break; - case '&': $funcAddr = $this->AndOp; break; - case '|': $funcAddr = self::$or__; break; - } - } - return true; //all output is assigned, now we return true. - } - //if we reach here, result is false - //if main operation is not an operand but a function - //$BracketLevel; - //$paramStart; - $temp=''; - if ($formula[$Len-1] == ')') //last character must be brackets closing function param list - { - $i= 0; - while ($this->isValidChar($i, $formula[$i])) - { - $temp.=($formula[$i]); - ++$i; - } - while($formula[$i]==' ') - { - ++$i; - } + //logical operators: + case '<': + $funcAddr = self::$lt__; + break; + case '>': + $funcAddr = self::$gt__; + break; + case '=': + $funcAddr = self::$equals__; + break; + case '&': + $funcAddr = $this->AndOp; + break; + case '|': + $funcAddr = self::$or__; + break; + } + } + return true; //all output is assigned, now we return true. + } + //if we reach here, result is false + //if main operation is not an operand but a function + $temp = ''; + if ($formula[$Len - 1] == ')') //last character must be brackets closing function param list + { + $i = 0; + while ($this->isValidChar($i, $formula[$i])) { + $temp .= ($formula[$i]); + ++$i; + } + while ($formula[$i] == ' ') { + ++$i; + } - if (($formula[$i] == '(') && ($i < $Len-1) ) - { - $func = $this->Functions[$temp]; - if ($func != null && $func->paramCount==2) - { - $funcAddr = $func; - $paramStart= $i+1; - $BracketLevel= 1; - $insideStringLiteral = false; - while (! ($i>$Len-1-1) ) //last character is a ')', that's why we use i>Len-1 - { - ++$i; - switch( $formula[$i] ) - { - case '"': $insideStringLiteral = !$insideStringLiteral; break; - case '(': if(!$insideStringLiteral)++$BracketLevel; break; - case ')': if(!$insideStringLiteral)--$BracketLevel; break; - case ',': - if ((!$insideStringLiteral) && (1 == $BracketLevel) && ($i<$Len-2) ) //last character is a ')', that's why we use i>Len-2 - { - $paramLeft= substr($formula, $paramStart, $i-$paramStart); - $paramRight= substr($formula, $i+1, $Len-1-($i+1)); //last character is a ')', that's why we use Len-1-i - return true; //we are sure that it is a two parameter function - } - break; - } - } - } - } - } - return false; //means we could not find it - } - //------------------------------------------------------------------------------ - /** - * Determines if a given expression by itself is a function that takes 1 parameter. - * For example: and input of "SIN(x)" would return true. - * @param formula - expression - * @param funcAddr - The IFunction that this node represents. - * @param param - the parameter that will be passed into this function. - * @param CurrChar - current operand index in the expression - * @return true if formula is a valid one parameter function. - * @ignore - */ - private function isOneParamFunc( $formula, - /*out*/ &$funcAddr, /*out*/ &$param, - $CurrChar - ) - { - $funcAddr = null; - $param = null; - $paramStart; - $Len= strlen($formula); - if ($CurrChar == 0) //if function in question is an unary operand - { - $param= substr($formula, 1); - if (! (strlen($param)>0) ) - { - return false; - } + if (($formula[$i] == '(') && ($i < $Len - 1)) { + $func = $this->Functions[$temp]; + if ($func != null && $func->paramCount == 2) { + $funcAddr = $func; + $paramStart = $i + 1; + $BracketLevel = 1; + $insideStringLiteral = false; + while (!($i > $Len - 1 - 1)) //last character is a ')', that's why we use i>Len-1 + { + ++$i; + switch ($formula[$i]) { + case '"': + $insideStringLiteral = !$insideStringLiteral; + break; + case '(': + if (!$insideStringLiteral) ++$BracketLevel; + break; + case ')': + if (!$insideStringLiteral) --$BracketLevel; + break; + case ',': + if ((!$insideStringLiteral) && (1 == $BracketLevel) && ($i < $Len - 2)) //last character is a ')', that's why we use i>Len-2 + { + $paramLeft = substr($formula, $paramStart, $i - $paramStart); + $paramRight = substr($formula, $i + 1, $Len - 1 - ($i + 1)); //last character is a ')', that's why we use Len-1-i + return true; //we are sure that it is a two parameter function + } + break; + } + } + } + } + } + return false; //means we could not find it + } + //------------------------------------------------------------------------------ - switch ($formula[$CurrChar]) - { - case '+': $funcAddr = self::$unaryadd__; break; - case '-': $funcAddr = self::$negate__; break; - case '!': $funcAddr = self::$not__; break; - default: return false; //only + and - can be unary operators - } - return true; //all output is assigned, now we exit. - } - //if we reach here, result is false - //if main operation is not an operand but a function - if ($formula[$Len-1] == ')') //last character must be brackets closing function param list - { - $i= 0; - $temp = ''; - while ($this->isValidChar($i, $formula[$i])) - { - $temp.=($formula[$i]); - ++$i; - } - while($formula[$i]==' ') - { - ++$i; - } - if (($formula[$i] == '(') && ($i < $Len-2) ) - { - $func = $this->Functions[$temp]; - if ($func != null && $func->paramCount==1) - { - $funcAddr = $func; - $paramStart= $i+1; - $param= substr($formula, $paramStart, $Len-1-$paramStart); //check example: SIN(30) - return true; //we are sure that it is a two parameter function - } - } - } - return false; - } - //------------------------------------------------------------------------------ - /** - * Determines if a given expression by itself is a function that takes N parameters. - * For example: and input of "IF(x, 3/x, 3)" would return true. - * @param formula - expression - * @param funcAddr - the IFunction that this node represents. - * @param parms - the parameters that this function takes in this expression. - * @param CurrChar - current operand index in the expression - * @return true if formula is a valid N parameter function. - * @ignore - */ - private function isNParamFunc( $formula, - /*out*/ &$funcAddr, /*out*/ &$parms, - $CurrChar //gives the last operation index in the string - ) - { - $funcAddr = null; - $parms = null; - //if main operation is not an operand but a function - $Len= strlen($formula); - $temp = ''; - if ($formula[$Len-1] == ')') //last character must be brackets closing function param list - { - $i= 0; - while ($this->isValidChar($i, $formula[$i])) - { - $temp.=($formula[$i]); - ++$i; - } - while($formula[$i]==' ') - { - ++$i; - } - if (($formula[$i] == '(') && ($i < $Len-1) ) - { - //we first check if it is one param func or two param func, - //so here if it is a func, we know it is N param func. - $funcAddr = $this->Functions[$temp]; + /** + * Determines if a given expression by itself is a function that takes 1 parameter. + * For example: and input of "SIN(x)" would return true. + * @param $formula - expression + * @param $funcAddr - The IFunction that this node represents. + * @param $param - the parameter that will be passed into this function. + * @param $CurrChar - current operand index in the expression + * @return true if formula is a valid one parameter function. + * @ignore + * @since 1.0.0 + */ + private function isOneParamFunc($formula, &$funcAddr, &$param, $CurrChar): bool + { + $funcAddr = null; + $param = null; + $Len = strlen($formula); + if ($CurrChar == 0) //if function in question is an unary operand + { + $param = substr($formula, 1); + if (!(strlen($param) > 0)) { + return false; + } - if ($funcAddr != null) - { - $nParams = $funcAddr->paramCount; - if($nParams>-1) - { - $parms = array(); - if($nParams==0) //a function that takes no param. - { - if($formula[$i+1]==')') - { - return true; - } - } - $paramStart = $i+1; - $BracketLevel= 1; - $pIndex = 0; - $insideStringLiteral = false; - while (! ($i>$Len-1-1) ) //last character is a ')', that's why we use i>Len-1 - { - ++$i; - switch( $formula[$i] ) - { - case '"': $insideStringLiteral = !$insideStringLiteral; break; - case '(': if(!$insideStringLiteral)++$BracketLevel; break; - case ')': if(!$insideStringLiteral)--$BracketLevel; break; - case ',': - if ((!$insideStringLiteral) && (1 == $BracketLevel) && ($i<$Len-2) ) //last character is a ')', that's why we use i>Len-2 - { - //must have at least 2 params for this part to work: - if ($nParams>-1 && !($pIndex<$nParams) ) - { - return false; //wrong number of parameters. - } - $parms[$pIndex++] = substr($formula, $paramStart, $i-$paramStart); + switch ($formula[$CurrChar]) { + case '+': + $funcAddr = self::$unaryadd__; + break; + case '-': + $funcAddr = self::$negate__; + break; + case '!': + $funcAddr = self::$not__; + break; + default: + return false; //only + and - can be unary operators + } + return true; //all output is assigned, now we exit. + } + //if we reach here, result is false + //if main operation is not an operand but a function + if ($formula[$Len - 1] == ')') //last character must be brackets closing function param list + { + $i = 0; + $temp = ''; + while ($this->isValidChar($i, $formula[$i])) { + $temp .= ($formula[$i]); + ++$i; + } + while ($formula[$i] == ' ') { + ++$i; + } + if (($formula[$i] == '(') && ($i < $Len - 2)) { + $func = $this->Functions[$temp]; + if ($func != null && $func->paramCount == 1) { + $funcAddr = $func; + $paramStart = $i + 1; + $param = substr($formula, $paramStart, $Len - 1 - $paramStart); //check example: SIN(30) + return true; //we are sure that it is a two parameter function + } + } + } + return false; + } - if($pIndex==$nParams-1) - { - //assign the last one: - $parms[$pIndex] = substr($formula, $i+1, $Len-1-($i+1)); - return true; - } - $paramStart = $i+1; - } - break; - } - } - } - else - { - $list = array(); - $paramStart = $i+1; - $BracketLevel= 1; - $insideStringLiteral = false; - while (! ($i>$Len-1-1) ) //last character is a ')', that's why we use i>Len-1 - { - ++$i; - switch( $formula[$i] ) - { - case '"': $insideStringLiteral = !$insideStringLiteral; break; - case '(': if(!$insideStringLiteral) ++$BracketLevel; break; - case ')': if(!$insideStringLiteral) --$BracketLevel; break; - case ',': - if (!$insideStringLiteral && (1 == $BracketLevel) && ($i<$Len-2) ) //last character is a ')', that's why we use i>Len-2 - { - $list[]=substr($formula, $paramStart, $i-$paramStart); - $paramStart = $i+1; - } - break; - } - } - //add the remaining: - //list.Add( formula.Substring(paramStart, Len-1-paramStart) ); - $remaining = trim(substr($formula, $paramStart, $Len - 1 - $paramStart)); - if (strlen($remaining)>0) - { - $list[]=$remaining; - } + //------------------------------------------------------------------------------ - $parms = $list; - return true; - } - } - } - } - return false; //means we could not find it - } - //------------------------------------------------------------------------------ - /** - * Optimizes a compiled tree where root is the given Node. - * @param aNode - Root node. - * @return Starting root node of the optimized tree. - * @ignore - */ - static function optimizeNode($aNode) - { - $aNode->optimize(); - //Below code changes the value of the Node pointer, - //thus it cannot be done inside a polymorphic method of the - //class instance pointed to by that pointer. - //Therefore, "instanceof" is required. - if ($aNode instanceof Mathparser_NParamNode) - { - $count = count($aNode->nodes); - for ($i=0; $i<$count; $i++) - { - //if any node is not constant, just return as is: - if ( !($aNode->nodes[$i] instanceof Mathparser_BasicNode) ) - { - return $aNode; - } - } - //if all parameters of the function are constants (basic nodes): - return new Mathparser_BasicNode($nParamNode->getValue()); - } - return $aNode; - } - //------------------------------------------------------------------------------ + /** + * Determines if a given expression by itself is a function that takes N parameters. + * For example: and input of "IF(x, 3/x, 3)" would return true. + * @param $formula - expression + * @param $funcAddr - the IFunction that this node represents. + * @param $parms - the parameters that this function takes in this expression. + * @return true if formula is a valid N parameter function. + * @ignore + * @since 1.0.0 + */ + private function isNParamFunc($formula, &$funcAddr, &$parms): bool + { + $funcAddr = null; + $parms = null; + //if main operation is not an operand but a function + $Len = strlen($formula); + $temp = ''; + if ($formula[$Len - 1] == ')') //last character must be brackets closing function param list + { + $i = 0; + while ($this->isValidChar($i, $formula[$i])) { + $temp .= ($formula[$i]); + ++$i; + } + while ($formula[$i] == ' ') { + ++$i; + } + if (($formula[$i] == '(') && ($i < $Len - 1)) { + //we first check if it is one param func or two param func, + //so here if it is a func, we know it is N param func. + $funcAddr = $this->Functions[$temp]; - /** - * Expression property represents the mathematical expression which is input to be Evaluated by the user. - * - * The expression can contain variables such as X, Y, T, HEIGHT, WEIGHT and so on. - * The values of these constants are set before the expression is evaluated. - * The values of the variables can be set before the expression is evaluated or the values can be provided - * during evaluation using a PHP function registered as $VariableResolver. - * @return string - */ - public function getExpression() - { - return $this->Expression; - } - /** - * @see getExpression - * @param $value - * @return unknown_type - */ - public function setExpression($value) - { - if ($value!=$this->Expression) - { - $this->Expression = $value; - $this->Dirty = true; - } - } + if ($funcAddr != null) { + $nParams = $funcAddr->paramCount; + if ($nParams > -1) { + $parms = array(); + if ($nParams == 0) //a function that takes no param. + { + if ($formula[$i + 1] == ')') { + return true; + } + } + $paramStart = $i + 1; + $BracketLevel = 1; + $pIndex = 0; + $insideStringLiteral = false; + while (!($i > $Len - 1 - 1)) //last character is a ')', that's why we use i>Len-1 + { + ++$i; + switch ($formula[$i]) { + case '"': + $insideStringLiteral = !$insideStringLiteral; + break; + case '(': + if (!$insideStringLiteral) ++$BracketLevel; + break; + case ')': + if (!$insideStringLiteral) --$BracketLevel; + break; + case ',': + if ((!$insideStringLiteral) && (1 == $BracketLevel) && ($i < $Len - 2)) //last character is a ')', that's why we use i>Len-2 + { + //must have at least 2 params for this part to work: + if ($nParams > -1 && !($pIndex < $nParams)) { + return false; //wrong number of parameters. + } + $parms[$pIndex++] = substr($formula, $paramStart, $i - $paramStart); - /** - * Set OptimizationOn to let the bcParser component evaluate constant expressions - * at parse time. The optimized parse tree will enhance subsequant evaluation - * operations, though initial parsing will be slower. - *

- * Optimization is good if you are going to parse once and evaluate the same - * expression many many times with different variable values. - * @return boolean - */ - public function isOptimizationOn() - { - return $this->OptimizationOn; - } - /** - * @see isOptimizationOn - * @param boolean $value - * @return void - */ - public function setOptimizationOn($value) - { - $this->OptimizationOn = $value; - } + if ($pIndex == $nParams - 1) { + //assign the last one: + $parms[$pIndex] = substr($formula, $i + 1, $Len - 1 - ($i + 1)); + return true; + } + $paramStart = $i + 1; + } + break; + } + } + } else { + $list = array(); + $paramStart = $i + 1; + $BracketLevel = 1; + $insideStringLiteral = false; + while (!($i > $Len - 1 - 1)) //last character is a ')', that's why we use i>Len-1 + { + ++$i; + switch ($formula[$i]) { + case '"': + $insideStringLiteral = !$insideStringLiteral; + break; + case '(': + if (!$insideStringLiteral) ++$BracketLevel; + break; + case ')': + if (!$insideStringLiteral) --$BracketLevel; + break; + case ',': + if (!$insideStringLiteral && (1 == $BracketLevel) && ($i < $Len - 2)) //last character is a ')', that's why we use i>Len-2 + { + $list[] = substr($formula, $paramStart, $i - $paramStart); + $paramStart = $i + 1; + } + break; + } + } + //add the remaining: + $remaining = trim(substr($formula, $paramStart, $Len - 1 - $paramStart)); + if (strlen($remaining) > 0) { + $list[] = $remaining; + } - /** - * This method can be overridden to return a Node that is fancy enough to lookup - * values from a database etc to come up with variable values at evaluation time. - * @param string $varName - * @return object - */ - protected function createVarNode($varName) - { - //if it is not a simple double, maybe it is a variable? - $variable = $this->Variables[$varName]; - if ($variable!=null) - { - return new Mathparser_VarNode($variable, $varName); //recursion will end on these points when we get to the basics - } - else if($this->VariableResolver!=null) - { - $Len = strlen($varName); - for($i=0; $i<$Len; $i++) - { - $ch = $varName[$i]; - if(!$this->isValidChar($i, $ch)) - { - return null; - } - } - return new Mathparser_UnknownVarNode($this, $varName); - } - return null; - } + $parms = $list; + return true; + } + } + } + } + return false; //means we could not find it + } - /** - * Translation support. - * @ignore - */ - static function getMessage($key) - { - try - { - if (self::$translator == null) { - self::getTranslationStrings(); - } - $s = self::$translator[$key]; - if ($s==null){ $s = $key; } - return $s; - } - catch(Exception $e) - { - return $key; - } - } - /** - * Translation support. - * @ignore - */ - static function getMessage1($key, $param) - { - $temp = self::getMessage($key); - //assuming {0} is not used in the real string, - //and it is only a placeholder for the first parameter. - return sprintf($temp, $param); - } - /** - * Translation support. - * @ignore - */ - static function getMessage2($key, $param0, $param1) - { - $temp = self::getMessage($key); - return sprintf($temp, $param0, $param1); - } + //------------------------------------------------------------------------------ + + /** + * Optimizes a compiled tree where root is the given Node. + * @param $aNode - Root node. + * @return mixed - Starting root node of the optimized tree. + * @ignore + * @since 1.0.0 + */ + static function optimizeNode($aNode): mixed + { + $aNode->optimize(); + //Below code changes the value of the Node pointer, + //thus it cannot be done inside a polymorphic method of the + //class instance pointed to by that pointer. + //Therefore, "instanceof" is required. + if ($aNode instanceof Mathparser_NParamNode) { + $count = count($aNode->nodes); + for ($i = 0; $i < $count; $i++) { + //if any node is not constant, just return as is: + if (!($aNode->nodes[$i] instanceof Mathparser_BasicNode)) { + return $aNode; + } + } + //if all parameters of the function are constants (basic nodes): + return new Mathparser_BasicNode($aNode->getValue()); + } + return $aNode; + } + //------------------------------------------------------------------------------ + + /** + * Expression property represents the mathematical expression which is input to be Evaluated by the user. + * + * The expression can contain variables such as X, Y, T, HEIGHT, WEIGHT and so on. + * The values of these constants are set before the expression is evaluated. + * The values of the variables can be set before the expression is evaluated or the values can be provided + * during evaluation using a PHP function registered as $VariableResolver. + * @return string + * @since 1.0.0 + */ + public function getExpression(): string + { + return $this->Expression; + } + + /** + * @param $value + * @return void + * @see getExpression + * @since 1.0.0 + */ + public function setExpression($value): void + { + if ($value != $this->Expression) { + $this->Expression = $value; + $this->Dirty = true; + } + } + + /** + * This method can be overridden to return a Node that is fancy enough to lookup + * values from a database etc to come up with variable values at evaluation time. + * @param string $varName + * @return Mathparser_UnknownVarNode|Mathparser_VarNode|null + * @since 1.0.0 + */ + protected function createVarNode(string $varName): Mathparser_UnknownVarNode|null|Mathparser_VarNode + { + //if it is not a simple double, maybe it is a variable? + $variable = $this->Variables[$varName]; + if ($variable != null) { + return new Mathparser_VarNode($variable); //recursion will end on these points when we get to the basics + } else if ($this->VariableResolver != null) { + $Len = strlen($varName); + for ($i = 0; $i < $Len; $i++) { + $ch = $varName[$i]; + if (!$this->isValidChar($i, $ch)) { + return null; + } + } + return new Mathparser_UnknownVarNode($this, $varName); + } + return null; + } + + /** + * Translation support. + * @ignore + * @since 1.0.0 + */ + static function getMessage($key) + { + try { + if (self::$translator == null) { + self::getTranslationStrings(); + } + $s = self::$translator[$key]; + if ($s == null) { + $s = $key; + } + return $s; + } catch (Exception $e) { + Log::add("Could not translate: " . $e->getMessage(), Log::WARNING,"com_sportsmanager"); + return $key; + } + } + + /** + * Translation support. + * @ignore + * @since 1.0.0 + */ + static function getMessage1($key, $param): string + { + $temp = self::getMessage($key); + //assuming {0} is not used in the real string, + //and it is only a placeholder for the first parameter. + return sprintf($temp, $param); + } + + /** + * Translation support. + * @ignore + * @since 1.0.0 + */ + static function getMessage2($key, $param0, $param1 = ''): string + { + $temp = self::getMessage($key); + return sprintf($temp, $param0, $param1); + } } //End of Math Parser Implementation. @@ -2253,246 +1819,288 @@ class MathParser /** * Internal support class to help internal representation of a variable and a constant. * @ignore + * @since 1.0.0 */ class Mathparser_Variable { - /** - * The parent parser instance, used to call the VariableResolver if needed. - */ - private $Parser; + /** + * Name of this variable. + * @since 1.0.0 + */ + public string $Name; - /** - * Name of this variable. - */ - public $Name; + /** + * The preset value of this variable. + * @since 1.0.0 + */ + public float|string $Value; - /** - * The preset value of this variable. - */ - public $Value; + /** + * The delegate function name (string value) that supplies variable values. + * If this is not null, then it is called to get + * the value for this variable. + *

function VariableResolver($parser, $varName);

+ * @since 1.0.0 + */ + public string $ValueProvider; - /** - * The delegate function name (string value) that supplies variable values. - * If this is not null, then it is called to get - * the value for this variable. - *

function VariableResolver($parser, $varName);

- */ - public $ValueProvider; - - /** - * If the $this->ValueProvider is set, then this method uses it to get the runtime value. - * Otherwise, this method returns the value of $this->Value; - * - */ - public function getRuntimeValue(){ - return !isset($this->ValueProvider) ? $this->Value : $this->ValueProvider($this->Parser, $this->Name); - } - - public function __construct($parser, $aName, $newVal, $valueProvider) { - $this->Parser = $parser; - $this->Name = $aName; - $this->Value = $newVal; - $this->ValueProvider = $valueProvider; - } + public function __construct($aName, $newVal, $valueProvider) + { + $this->Name = $aName; + $this->Value = $newVal; + $this->ValueProvider = $valueProvider; + } } /** * Internal support class to represent a user defined function. * User defined functions can be used in expressions. * @ignore + * @since 1.0.0 */ -class Mathparser_ParserFunction { - /** - * $EventHandler that is the name of the actual PHP function to call. - */ - public $EventHandler; - /** - * Name of the user defined function as used in an expression. - */ - public $Name; - /** - * Number of parameters that the user defined function accepts. - * -1 means any number of parameters. - * 0 means no parameters, 1 means 1 parameter like SIN(X) etc. - */ - public $paramCount; - /** - * Constructor. - * @param $name - Name of the user defined function as used in an expression. - * @param $eventHandler is the name of the actual PHP function to call. - * @param $paramCount Number of parameters that the user defined function accepts. - */ - public function __construct($name, $eventHandler, $paramCount){ - $this->EventHandler = $eventHandler; - $this->Name = $name; - $this->paramCount = $paramCount; - } +class Mathparser_ParserFunction +{ + /** + * $EventHandler that is the name of the actual PHP function to call. + * @since 1.0.0 + */ + public $EventHandler; + /** + * Name of the user defined function as used in an expression. + * @since 1.0.0 + */ + public string $Name; + /** + * Number of parameters that the user defined function accepts. + * -1 means any number of parameters. + * 0 means no parameters, 1 means 1 parameter like SIN(X) etc. + * @since 1.0.0 + */ + public int $paramCount; + + /** + * Constructor. + * @param $name - Name of the user defined function as used in an expression. + * @param $eventHandler - is the name of the actual PHP function to call. + * @param $paramCount - Number of parameters that the user defined function accepts. + * @since 1.0.0 + */ + public function __construct($name, $eventHandler, $paramCount) + { + $this->EventHandler = $eventHandler; + $this->Name = $name; + $this->paramCount = $paramCount; + } } /** * Internal support class that represents constants such as 3, 5, 7 in the formula. * @ignore + * @since 1.0.0 */ -class Mathparser_BasicNode extends Mathparser_Node { - public $Value; +class Mathparser_BasicNode extends Mathparser_Node +{ + public $Value; - public function __construct($Val) { - $this->Value = $Val; - } - public function getValue() { - return $this->Value; - } - public function getValueAsDouble() { - if(is_float($this->Value)) - { - return $this->Value; - } - else if(is_numeric($this->Value)) - { - return (float)$this->Value; - } - throw new Exception("Value is not numeric: ".$this->Value); - } - public function getValueAsString() { - return (string)$this->Value; - } - //------------------------------------------------------------------------------ - public function isVariableUsed($Name) { - return false; //a basic node does not store any variable or function info - } - //------------------------------------------------------------------------------ - public function isFunctionUsed($Name) { - return false; //a basic node does not store any variable or function info - } - //------------------------------------------------------------------------------ - //since basic node cannot be Optimized further, this function does nothing - public function optimize() { - //Optimize Evaluates constant values at compile time. - //do nothing. - } + public function __construct($Val) + { + $this->Value = $Val; + } + public function getValue() + { + return $this->Value; + } + + /** + * @throws Exception + * @since 1.0.0 + */ + public function getValueAsDouble(): float + { + if (is_float($this->Value)) { + return $this->Value; + } else if (is_numeric($this->Value)) { + return (float)$this->Value; + } + throw new Exception("Value is not numeric: " . $this->Value); + } + + public function getValueAsString(): string + { + return (string)$this->Value; + } + + //------------------------------------------------------------------------------ + + public function isVariableUsed($Name): bool + { + return false; //a basic node does not store any variable or function info + } + + //------------------------------------------------------------------------------ + + public function isFunctionUsed($Name): bool + { + return false; //a basic node does not store any variable or function info + } + + //------------------------------------------------------------------------------ + + //since basic node cannot be Optimized further, this function does nothing + public function optimize() + { + //Optimize Evaluates constant values at compile time. + //do nothing. + } } /** * Internal support class that represents N parameter functions such as IF(X, Y, Z) etc. * @ignore + * @since 1.0.0 */ -class Mathparser_NParamNode extends Mathparser_Node { - public $nodes; //array of nodes (these are the parameters). - public $fPtr; //function to execute +class Mathparser_NParamNode extends Mathparser_Node +{ + public array $nodes; //array of nodes (these are the parameters). + public $fPtr; //function to execute - public function __construct($n, $FuncAddr) { - $this->nodes = &$n; - $this->fPtr = $FuncAddr; - } - public function getValue() { - if($this->fPtr->Name=='IF'){ - //special case for short circuit boolean logic. - //helps to avoid div by zero etc. - //assume there are 3 parameters: - $cond = $this->nodes[0]->getValue(); - if($cond==0){ //false: - return $this->nodes[2]->getValue(); - }else{ - return $this->nodes[1]->getValue(); - } - }else{ - $p = array(); - $count = count($this->nodes); - for($i=0; $i<$count; $i++){ - $p[]=$this->nodes[$i]->getValue(); - } - return call_user_func_array($this->fPtr->EventHandler, $p); - } - } - public function getValueAsDouble() { - $Value = $this->getValue(); - if(is_float($Value)) - { - return $Value; - } - else if(is_numeric($Value)) - { - return (float)$Value; - } - throw new Exception("Value is not numeric: ".$Value); - } - public function getValueAsString() { - return (string)$this->getValue(); - } + public function __construct($n, $FuncAddr) + { + $this->nodes = &$n; + $this->fPtr = $FuncAddr; + } - public function isFunctionUsed($Name) { - if($this->fPtr->Name==$Name){ - return true; - } - $i=0; - foreach ($this->nodes as $n) { - if ($n->isFunctionUsed($Name)) { - return true; - } - } - return false; - } - public function isVariableUsed($Name) { - $i=0; - foreach ($this->nodes as $n) { - if ($n->isVariableUsed($Name)) { - return true; - } - } - return false; - } + public function getValue() + { + if ($this->fPtr->Name == 'IF') { + //special case for short circuit boolean logic. + //helps to avoid div by zero etc. + //assume there are 3 parameters: + $cond = $this->nodes[0]->getValue(); + if ($cond == 0) { //false: + return $this->nodes[2]->getValue(); + } else { + return $this->nodes[1]->getValue(); + } + } else { + $p = array(); + $count = count($this->nodes); + for ($i = 0; $i < $count; $i++) { + $p[] = $this->nodes[$i]->getValue(); + } + return call_user_func_array($this->fPtr->EventHandler, $p); + } + } - public function optimize() { - $i=0; - foreach ($this->nodes as $n) { - $this->nodes[$i] = MathParser::optimizeNode($n); - $i++; - } - } -}; + /** + * @throws Exception + * @since 1.0.0 + */ + public function getValueAsDouble(): float + { + $Value = $this->getValue(); + if (is_float($Value)) { + return $Value; + } else if (is_numeric($Value)) { + return (float)$Value; + } + throw new Exception("Value is not numeric: " . $Value); + } + + public function getValueAsString(): string + { + return (string)$this->getValue(); + } + + public function isFunctionUsed($Name): bool + { + if ($this->fPtr->Name == $Name) { + return true; + } + foreach ($this->nodes as $n) { + if ($n->isFunctionUsed($Name)) { + return true; + } + } + return false; + } + + public function isVariableUsed($Name): bool + { + foreach ($this->nodes as $n) { + if ($n->isVariableUsed($Name)) { + return true; + } + } + return false; + } + + public function optimize(): void + { + $i = 0; + foreach ($this->nodes as $n) { + $this->nodes[$i] = MathParser::optimizeNode($n); + $i++; + } + } +} /** * Internal support class that represents a variable Node. * @ignore + * @since 1.0.0 */ -class Mathparser_VarNode extends Mathparser_Node { - private $pVar; //address of the variable in the variable list - public function __construct ($variable) { - $this->pVar = $variable; - } - public function getValue() { - return $this->pVar->getRuntimeValue(); - } - public function getValueAsDouble() { - $Value = $this->pVar->getRuntimeValue(); - if(is_float($Value)) - { - return $Value; - } - else if(is_numeric($Value)) - { - return (float)$Value; - } - throw new Exception("Value is not numeric: ".$Value); - } - public function getValueAsString() { - return (string)$this->pVar->getRuntimeValue(); - } +class Mathparser_VarNode extends Mathparser_Node +{ + private $pVar; //address of the variable in the variable list - public function isVariableUsed($Name) { - return $this->pVar->Name==$Name; - } - public function isFunctionUsed($Name) - { - return false; - } - //since there is no parameter used to get the value of a variable, no further - //optimization can be made. - public function optimize() { //Optimize Evaluates constant values at compile time. - //do nothing - } + public function __construct($variable) + { + $this->pVar = $variable; + } + + public function getValue() + { + return $this->pVar->getRuntimeValue(); + } + + /** + * @throws Exception + * @since 1.0.0 + */ + public function getValueAsDouble(): float + { + $Value = $this->pVar->getRuntimeValue(); + if (is_float($Value)) { + return $Value; + } else if (is_numeric($Value)) { + return (float)$Value; + } + throw new Exception("Value is not numeric: " . $Value); + } + + public function getValueAsString(): string + { + return (string)$this->pVar->getRuntimeValue(); + } + + public function isVariableUsed($Name): bool + { + return $this->pVar->Name == $Name; + } + + public function isFunctionUsed($Name): bool + { + return false; + } + //since there is no parameter used to get the value of a variable, no further + //optimization can be made. + public function optimize() + { //Optimize Evaluates constant values at compile time. + //do nothing + } } @@ -2500,89 +2108,105 @@ class Mathparser_VarNode extends Mathparser_Node { * Internal support class that represents a variable Node that was not defined before the parse. * We will resolve it's value during evaluation. * @ignore + * @since 1.0.0 */ class Mathparser_UnknownVarNode extends Mathparser_Node { - private $VarName; //name of the variable that was defined on the fly. + private string $VarName; //name of the variable that was defined on the fly. - private $MathParser; - public function __construct($parser, $varName) - { - $this->MathParser = $parser; - $this->VarName = $varName; - } - public function getValue() - { - return call_user_func($this->MathParser->VariableResolver, $this->MathParser, $this->VarName); - } - public function getValueAsDouble() - { - $Value = $this->getValue(); - if(is_float($Value)) - { - return $Value; - } - else if(is_numeric($Value)) - { - return (float)$Value; - } - throw new Exception("Value is not numeric: ".$Value); - } - public function getValueAsString() - { - return (string) $this->getValue() ; - } + private $MathParser; - public function isVariableUsed($Name) - { - return $this->VarName==$Name; - } - public function isFunctionUsed($Name) - { - return false; - } - //since there is no parameter used to get the value of a variable, no further - //optimization can be made. - public function optimize() - { //Optimize Evaluates constant values at compile time. - //do nothing - } + public function __construct($parser, $varName) + { + $this->MathParser = $parser; + $this->VarName = $varName; + } + + public function getValue() + { + return call_user_func($this->MathParser->VariableResolver, $this->MathParser, $this->VarName); + } + + /** + * @throws Exception + * @since 1.0.0 + */ + public function getValueAsDouble(): float + { + $Value = $this->getValue(); + if (is_float($Value)) { + return $Value; + } else if (is_numeric($Value)) { + return (float)$Value; + } + throw new Exception("Value is not numeric: " . $Value); + } + + public function getValueAsString(): string + { + return (string)$this->getValue(); + } + + public function isVariableUsed($Name): bool + { + return $this->VarName == $Name; + } + + public function isFunctionUsed($Name): bool + { + return false; + } + //since there is no parameter used to get the value of a variable, no further + //optimization can be made. + public function optimize() + { //Optimize Evaluates constant values at compile time. + //do nothing + } } /** * Base class for expression tree nodes. * @ignore + * @since 1.0.0 */ abstract class Mathparser_Node { - /** - * Returns the computed value of this Node. - */ - abstract public function getValue(); - /** - * Returns the computed value of this Node as a double precision value. - */ - abstract public function getValueAsDouble(); - /** - * Returns the value as a String. - */ - abstract public function getValueAsString(); + /** + * Returns the computed value of this Node. + * @since 1.0.0 + */ + abstract public function getValue(); - /** - * Is this variable used in the expression under this node? - */ - abstract public function isVariableUsed($Name); + /** + * Returns the computed value of this Node as a double precision value. + * @since 1.0.0 + */ + abstract public function getValueAsDouble(); - /** - * Is this function used in the expression under this node? - */ - abstract public function isFunctionUsed($Name); + /** + * Returns the value as a String. + * @since 1.0.0 + */ + abstract public function getValueAsString(); - /** - * Optimize Evaluates constant values at compile time (When parse() is called). - * Once this is done, Evaluate will run faster. - */ - abstract public function optimize(); + /** + * Is this variable used in the expression under this node? + * @since 1.0.0 + */ + abstract public function isVariableUsed($Name); + + /** + * Is this function used in the expression under this node? + * @since 1.0.0 + */ + abstract public function isFunctionUsed($Name); + + /** + * Optimize Evaluates constant values at compile time (When parse() is called). + * Once this is done, Evaluate will run faster. + * @since 1.0.0 + */ + abstract public function optimize(); } /** @@ -2590,368 +2214,437 @@ abstract class Mathparser_Node * expression cannot be parsed. These methods are: * parse(), evaluate(), getValue() * User defined functions can choose to throw this exception too. + * @since 1.0.0 */ class Mathparser_ParserException extends Exception { - /** - * Member variable that holds the error portion of the expression. - */ - public $err; + /** + * Member variable that holds the error portion of the expression. + * @since 1.0.0 + */ + public $err; - /** - * Member variable that holds the parsed expression itself. - */ - public $exp; + /** + * Member variable that holds the parsed expression itself. + * @since 1.0.0 + */ + public $exp; - /** - * Constructor. - */ - public function __construct($msg, $errPart, $expression) - { - parent::__construct($msg); - $this->err = $errPart; - $this->exp = $expression; - } - /** - * Returns the expression string that cannot be parsed. - */ - public function getInvalidPortionOfExpression() - { - return $this->err; - } - - /** - * Returns the subexpression that is the immediate parent of the error portion.
- * For example, if the expression is 3+LN(MAX(4,)) - * then getInvalidPortionOfExpression() would return MAX(4,) and getSubExpression() - * would return LN(MAX(4,))

- * The returned sub expressions may not exactly match the original string supplied - * as the expression since space characters and paranthesis may be substituted for efficient - * parsing. - */ - public function getSubExpression() - { - return $this->exp; - } + /** + * Constructor. + * @since 1.0.0 + */ + public function __construct($msg, $errPart, $expression) + { + parent::__construct($msg); + $this->err = $errPart; + $this->exp = $expression; + } } //Globals /** - * @ignore * @param $p1 * @param $p2 * @return number or string - */ -function mp_add_($p1, $p2){ - return $p1+$p2; -} -/** * @ignore - * @param $p1 - * @param $p2 - * @return string + * @since 1.0.0 */ -function mp_add_str_($p1, $p2){ - if(is_string($p1)){ - return $p1.$p2; - }else if(!is_numeric($p2)){ - throw new Exception(MathParser::getMessage1('InvConcatOper2',$p2)); - } - return $p1+$p2; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_subtract_($p1, $p2){ - return $p1-$p2; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_mult_($p1, $p2){ - return $p1*$p2; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_div_($p1, $p2){ - return $p1/$p2; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_power_($p1, $p2){ - return pow($p1, $p2); -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_mod_($p1, $p2){ - return $p1 % $p2; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_notequals_($p1, $p2){ - return ($p1!=$p2) ? 1 : 0; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_equals_($p1, $p2){ - return ($p1==$p2) ? 1 : 0; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_lt_($p1, $p2){ - return ($p1<$p2) ? 1 : 0; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_gt_($p1, $p2){ - return ($p1>$p2) ? 1 : 0; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_ltequals_($p1, $p2){ - return ($p1<=$p2) ? 1 : 0; -} -/** - * @ignore - * @param $p1 - * @param $p2 - * @return number - */ -function mp_gtequals_($p1, $p2){ - return ($p1>=$p2) ? 1 : 0; +function mp_add_($p1, $p2) +{ + return $p1 + $p2; } /** - * @ignore - * @param $p1 - * @return number - */ -function mp_unaryadd_($p1){ - return $p1; -} -/** - * @ignore - * @param $p1 - * @return number - */ -function mp_negate_($p1){ - return -$p1; -} -/** - * @ignore - * @param $p1 - * @return number - */ -function mp_not_($p1){ - return ((!$p1)==0)? 0 : 1; -} -/** - * @ignore * @param $p1 * @param $p2 - * @return number - */ -function mp_and_($p1, $p2){ - return ( ($p1==0 ? false : true) && ($p2==0 ? false : true) ) ? 1 : 0; -} -/** + * @return float|int|string + * @throws Exception + * @since 1.0.0 * @ignore - * @param $p1 - * @param $p2 - * @return string */ -function mp_and_str_($p1, $p2){ - if(is_string($p1)){ - return $p1.$p2; - }else if(!is_numeric($p2)){ - throw new Exception(MathParser::getMessage1('InvConcatOper',$p2)); - } - return $p1 && $p2; +function mp_add_str_($p1, $p2): float|int|string +{ + if (is_string($p1)) { + return $p1 . $p2; + } else if (!is_numeric($p2)) { + throw new Exception(MathParser::getMessage1('InvConcatOper2', $p2)); + } + return $p1 + $p2; } + /** - * @ignore * @param $p1 * @param $p2 * @return number - */ -function mp_or_($p1, $p2){ - return (($p1==0 ? false : true) || ($p2==0 ? false : true)) ? 1 : 0; -} -/** * @ignore + * @since 1.0.0 + */ +function mp_subtract_($p1, $p2) +{ + return $p1 - $p2; +} + +/** + * @param $p1 + * @param $p2 + * @return float|int + * @ignore + * @since 1.0.0 + */ +function mp_mult_($p1, $p2): float|int +{ + return $p1 * $p2; +} + +/** + * @param $p1 + * @param $p2 + * @return float|int + * @ignore + * @since 1.0.0 + */ +function mp_div_($p1, $p2): float|int +{ + return $p1 / $p2; +} + +/** + * @param $p1 + * @param $p2 * @return number - */ -function sum_(){ - $p = func_get_args(); - $count = func_num_args(); - $tot=0; - for($i=0; $i<$count; $i++){ - $tot+=$p[$i]; - } - return $tot; -} -/** * @ignore + * @since 1.0.0 + */ +function mp_power_($p1, $p2) +{ + return pow($p1, $p2); +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_mod_($p1, $p2): int +{ + return $p1 % $p2; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_notequals_($p1, $p2): int +{ + return ($p1 != $p2) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_equals_($p1, $p2): int +{ + return ($p1 == $p2) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_lt_($p1, $p2): int +{ + return ($p1 < $p2) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_gt_($p1, $p2): int +{ + return ($p1 > $p2) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_ltequals_($p1, $p2): int +{ + return ($p1 <= $p2) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_gtequals_($p1, $p2): int +{ + return ($p1 >= $p2) ? 1 : 0; +} + +/** + * @param $p1 * @return number - */ -function mp_max_(){ - $p = func_get_args(); - $count = func_num_args(); - if($count<1){ - throw new Mathparser_ParserException(MathParser::getMessage2('WrngNPrms2', 'MAX', '1'), 'max', 'max'); - } - return max($p); -} -/** * @ignore + * @since 1.0.0 + */ +function mp_unaryadd_($p1) +{ + return $p1; +} + +/** + * @param $p1 + * @return float|int + * @ignore + * @since 1.0.0 + */ +function mp_negate_($p1): float|int +{ + return -$p1; +} + +/** + * @param $p1 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_not_($p1): int +{ + return ((!$p1) == 0) ? 0 : 1; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_and_($p1, $p2): int +{ + return (!($p1 == 0) && !($p2 == 0)) ? 1 : 0; +} + +/** + * @param $p1 + * @param $p2 + * @return bool|string + * @throws Exception + * @ignore + * @since 1.0.0 + */ +function mp_and_str_($p1, $p2): bool|string +{ + if (is_string($p1)) { + return $p1 . $p2; + } else if (!is_numeric($p2)) { + throw new Exception(MathParser::getMessage1('InvConcatOper', $p2)); + } + return $p1 && $p2; +} + +/** + * @param $p1 + * @param $p2 + * @return int + * @ignore + * @since 1.0.0 + */ +function mp_or_($p1, $p2): int +{ + return (!($p1 == 0) || !($p2 == 0)) ? 1 : 0; +} + +/** * @return number - */ -function mp_min_(){ - $p = func_get_args(); - $count = func_num_args(); - if($count<1){ - throw new Mathparser_ParserException(MathParser::getMessage2('WrngNPrms2', 'MIN', '1'), 'min', 'min'); - } - return min($p); -} -/** * @ignore + * @since 1.0.0 + */ +function sum_(): int +{ + $p = func_get_args(); + $count = func_num_args(); + $tot = 0; + for ($i = 0; $i < $count; $i++) { + $tot += $p[$i]; + } + return $tot; +} + +/** + * @return number + * @throws Mathparser_ParserException + * @since 1.0.0 + * @ignore + */ +function mp_max_() +{ + $p = func_get_args(); + $count = func_num_args(); + if ($count < 1) { + throw new Mathparser_ParserException(MathParser::getMessage2('WrngNPrms2', 'MAX', '1'), 'max', 'max'); + } + return max($p); +} + +/** + * @return number + * @throws Mathparser_ParserException + * @since 1.0.0 + * @ignore + */ +function mp_min_() +{ + $p = func_get_args(); + $count = func_num_args(); + if ($count < 1) { + throw new Mathparser_ParserException(MathParser::getMessage2('WrngNPrms2', 'MIN', '1'), 'min', 'min'); + } + return min($p); +} + +/** * @param $cond * @param $trueCase * @param $falseCase * @return number - */ -function if_($cond, $trueCase, $falseCase){ - return $cond!=0 ? $trueCase : $falseCase; -} -/** * @ignore - * @param $val - * @return number + * @since 1.0.0 */ -function mp_num_($val){ - if(is_numeric($val)){ - return (float)$val; - } - throw new Mathparser_ParserException(MathParser::getMessage2('InvNum', $val), 'NUM', 'NUM'); +function if_($cond, $trueCase, $falseCase) +{ + return $cond != 0 ? $trueCase : $falseCase; } /** - * @ignore * @param $val - * @return number + * @return float + * @throws Mathparser_ParserException + * @since 1.0.0 + * @ignore */ -function mp_square_($val){ - return $val*$val; +function mp_num_($val): float +{ + if (is_numeric($val)) { + return (float)$val; + } + throw new Mathparser_ParserException(MathParser::getMessage2('InvNum', $val), 'NUM', 'NUM'); } /** - * @ignore * @param $val - * @return number + * @return float|int + * @ignore + * @since 1.0.0 */ -function mp_cotan_($val){ - return 1.0/tan($val); +function mp_square_($val): float|int +{ + return $val * $val; } /** - * @ignore * @param $val - * @return number + * @return float + * @ignore + * @since 1.0.0 */ -function mp_sign_($val){ - if($val>0)return 1; - if($val<0)return -1; - return 0; +function mp_cotan_($val): float +{ + return 1.0 / tan($val); } /** - * @ignore * @param $val - * @return number + * @return int + * @ignore + * @since 1.0.0 */ -function mp_trunc_($val){ - if($val>0)return floor($val); - if($val<0)return floor($val)+1; - return 0; +function mp_sign_($val): int +{ + if ($val > 0) return 1; + if ($val < 0) return -1; + return 0; } /** - * @ignore * @param $val - * @return number + * @return float|int + * @ignore + * @since 1.0.0 */ -function mp_float_($val){ - return (float)$val; +function mp_trunc_($val): float|int +{ + if ($val > 0) return floor($val); + if ($val < 0) return floor($val) + 1; + return 0; } /** + * @param $val + * @return float * @ignore + * @since 1.0.0 + */ +function mp_float_($val): float +{ + return (float)$val; +} + +/** * @param $base * @param $val - * @return number + * @return float|int + * @ignore + * @since 1.0.0 */ -function mp_logn_($base, $val){ - return log($val) / log($base); +function mp_logn_($base, $val): float|int +{ + return log($val) / log($base); } /** + * @return float|int * @ignore - * @return number + * @since 1.0.0 */ -function mp_rand_(){ - $max = getrandmax(); - return rand(0, $max)/$max; +function mp_rand_(): float|int +{ + $max = getrandmax(); + return rand(0, $max) / $max; } /** + * @return string * @ignore - * @return number + * @since 1.0.0 */ -function mp_concat_(){ - $p = func_get_args(); - $s=''; - foreach($p as $val){ - $s.=$val; - } - return $s; +function mp_concat_(): string +{ + $p = func_get_args(); + return implode('', $p); } -?> \ No newline at end of file diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index 4e5efd9..6aa2c09 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -4,392 +4,407 @@ */ // kein direkter Zugriff +use JetBrains\PhpStorm\NoReturn; +use Joomla\CMS\Application\SiteApplication; +use Joomla\CMS\Factory; +use Joomla\CMS\Log\Log; +use Joomla\CMS\Router\Route; +use Joomla\CMS\Uri\Uri; +use Joomla\CMS\User\User; +use Joomla\CMS\Version; + defined('_JEXEC') or die('Restricted access'); -require_once (JPATH_COMPONENT.DIRECTORY_SEPARATOR.'mathparser.php'); +require_once JPATH_SITE . '/components/com_sportsmanager/mathparser.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/database/init.php'; -function mathParserVerteilung($rohpunkte, $platz, $teilnehmer, $multiplikator) { - return max(round($multiplikator * round(((($rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1)), 1); +class MathParserSM extends MathParser +{ + // Verteilung nach Klostermann/Wahle + public function __construct() + { + parent::__construct(); + try { + $this->createFunc("ROUND", 'round', 1); + $this->createFunc("VERTEILUNG", 'mathParserVerteilung', 4); + $this->createFunc("VERTEILUNGR", 'mathParserVerteilungR', 4); + } catch (Exception $e) { + Log::add('an error occurred: ' . $e->getMessage(), Log::ERROR, 'com_sportsmanager'); + throw new RuntimeException('An error occurred.', 500); + } + } } -function mathParserVerteilungR($rohpunkte, $platz, $teilnehmer, $multiplikator) { - return max(round(((($multiplikator * $rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1), 1); +#[NoReturn] function keinZugriff($login = FALSE): void +{ + if (isJson()) { + abortWithError(401 . ' Unauthorized'); + } + if (!$login || Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id) { + Log::add('an error occurred', Log::ERROR, 'com_sportsmanager'); + throw new RuntimeException('An error occurred.', 500); + } + $version = new Version(); + $joomla = $version->getShortVersion(); + $u = Uri::getInstance(); + $redirectUrl = urlencode(base64_encode($u->toString())); + $redirectUrl = '&return=' . $redirectUrl; + $joomlaLoginUrl = 'index.php?option=' . (!str_starts_with($joomla, '1.5') ? 'com_users' : 'com_user') . '&view=login'; + $finalUrl = $joomlaLoginUrl . $redirectUrl; + $app = Factory::getContainer()->get(SiteApplication::class); + $app->redirect(Route::_($finalUrl)); + jexit(); } -class MathParserSM extends MathParser { - // Verteilung nach Klostermann/Wahle - public function __construct() { - MathParser::__construct(); - $this->createFunc("ROUND", 'round', 1); - $this->createFunc("VERTEILUNG", 'mathParserVerteilung', 4); - $this->createFunc("VERTEILUNGR", 'mathParserVerteilungR', 4); - } -} - -function keinZugriff($login = FALSE) { - if (isJson()) { - abortWithError(401 . ' Unauthorized'); - } - if (!$login || JFactory::getUser()->id) { - JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); - jexit(); - } - $version = new JVersion; - $joomla = $version->getShortVersion(); - //$u =& JFactory::getURI(); - $u = JURI::getInstance(); - $redirectUrl = urlencode(base64_encode($u->toString())); - $redirectUrl = '&return='.$redirectUrl; - $joomlaLoginUrl = 'index.php?option=' . (substr($joomla, 0, 3) != '1.5' ? 'com_users' : 'com_user') . '&view=login'; - $finalUrl = $joomlaLoginUrl . $redirectUrl; - $app = JFactory::getApplication(); - $app->redirect(JRoute::_($finalUrl)); - jexit(); -} - -function bereinigterDateiname($dateiname) { - $_convertTable = array( - '&' => 'and', '@' => 'at', '©' => 'c', '®' => 'r', 'À' => 'a', - 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'Å' => 'a', 'Æ' => 'ae','Ç' => 'c', - 'È' => 'e', 'É' => 'e', 'Ë' => 'e', 'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', - 'Ï' => 'i', 'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Õ' => 'o', 'Ö' => 'o', - 'Ø' => 'o', 'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'Ý' => 'y', - 'ß' => 'ss','à' => 'a', 'á' => 'a', 'â' => 'a', 'ä' => 'a', 'å' => 'a', - 'æ' => 'ae','ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', - 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ò' => 'o', 'ó' => 'o', - 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', - 'û' => 'u', 'ü' => 'u', 'ý' => 'y', 'þ' => 'p', 'ÿ' => 'y', 'Ā' => 'a', - 'ā' => 'a', 'Ă' => 'a', 'ă' => 'a', 'Ą' => 'a', 'ą' => 'a', 'Ć' => 'c', - 'ć' => 'c', 'Ĉ' => 'c', 'ĉ' => 'c', 'Ċ' => 'c', 'ċ' => 'c', 'Č' => 'c', - 'č' => 'c', 'Ď' => 'd', 'ď' => 'd', 'Đ' => 'd', 'đ' => 'd', 'Ē' => 'e', - 'ē' => 'e', 'Ĕ' => 'e', 'ĕ' => 'e', 'Ė' => 'e', 'ė' => 'e', 'Ę' => 'e', - 'ę' => 'e', 'Ě' => 'e', 'ě' => 'e', 'Ĝ' => 'g', 'ĝ' => 'g', 'Ğ' => 'g', - 'ğ' => 'g', 'Ġ' => 'g', 'ġ' => 'g', 'Ģ' => 'g', 'ģ' => 'g', 'Ĥ' => 'h', - 'ĥ' => 'h', 'Ħ' => 'h', 'ħ' => 'h', 'Ĩ' => 'i', 'ĩ' => 'i', 'Ī' => 'i', - 'ī' => 'i', 'Ĭ' => 'i', 'ĭ' => 'i', 'Į' => 'i', 'į' => 'i', 'İ' => 'i', - 'ı' => 'i', 'IJ' => 'ij','ij' => 'ij','Ĵ' => 'j', 'ĵ' => 'j', 'Ķ' => 'k', - 'ķ' => 'k', 'ĸ' => 'k', 'Ĺ' => 'l', 'ĺ' => 'l', 'Ļ' => 'l', 'ļ' => 'l', - 'Ľ' => 'l', 'ľ' => 'l', 'Ŀ' => 'l', 'ŀ' => 'l', 'Ł' => 'l', 'ł' => 'l', - 'Ń' => 'n', 'ń' => 'n', 'Ņ' => 'n', 'ņ' => 'n', 'Ň' => 'n', 'ň' => 'n', - 'ʼn' => 'n', 'Ŋ' => 'n', 'ŋ' => 'n', 'Ō' => 'o', 'ō' => 'o', 'Ŏ' => 'o', - 'ŏ' => 'o', 'Ő' => 'o', 'ő' => 'o', 'Œ' => 'oe','œ' => 'oe','Ŕ' => 'r', - 'ŕ' => 'r', 'Ŗ' => 'r', 'ŗ' => 'r', 'Ř' => 'r', 'ř' => 'r', 'Ś' => 's', - 'ś' => 's', 'Ŝ' => 's', 'ŝ' => 's', 'Ş' => 's', 'ş' => 's', 'Š' => 's', - 'š' => 's', 'Ţ' => 't', 'ţ' => 't', 'Ť' => 't', 'ť' => 't', 'Ŧ' => 't', - 'ŧ' => 't', 'Ũ' => 'u', 'ũ' => 'u', 'Ū' => 'u', 'ū' => 'u', 'Ŭ' => 'u', - 'ŭ' => 'u', 'Ů' => 'u', 'ů' => 'u', 'Ű' => 'u', 'ű' => 'u', 'Ų' => 'u', - 'ų' => 'u', 'Ŵ' => 'w', 'ŵ' => 'w', 'Ŷ' => 'y', 'ŷ' => 'y', 'Ÿ' => 'y', - 'Ź' => 'z', 'ź' => 'z', 'Ż' => 'z', 'ż' => 'z', 'Ž' => 'z', 'ž' => 'z', - 'ſ' => 'z', 'Ə' => 'e', 'ƒ' => 'f', 'Ơ' => 'o', 'ơ' => 'o', 'Ư' => 'u', - 'ư' => 'u', 'Ǎ' => 'a', 'ǎ' => 'a', 'Ǐ' => 'i', 'ǐ' => 'i', 'Ǒ' => 'o', - 'ǒ' => 'o', 'Ǔ' => 'u', 'ǔ' => 'u', 'Ǖ' => 'u', 'ǖ' => 'u', 'Ǘ' => 'u', - 'ǘ' => 'u', 'Ǚ' => 'u', 'ǚ' => 'u', 'Ǜ' => 'u', 'ǜ' => 'u', 'Ǻ' => 'a', - 'ǻ' => 'a', 'Ǽ' => 'ae','ǽ' => 'ae','Ǿ' => 'o', 'ǿ' => 'o', 'ə' => 'e', - 'Ё' => 'jo','Є' => 'e', 'І' => 'i', 'Ї' => 'i', 'А' => 'a', 'Б' => 'b', - 'В' => 'v', 'Г' => 'g', 'Д' => 'd', 'Е' => 'e', 'Ж' => 'zh','З' => 'z', - 'И' => 'i', 'Й' => 'j', 'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', - 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u', - 'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c', 'Ч' => 'ch','Ш' => 'sh','Щ' => 'sch', - 'Ъ' => '-', 'Ы' => 'y', 'Ь' => '-', 'Э' => 'je','Ю' => 'ju','Я' => 'ja', - 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', - 'ж' => 'zh','з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', - 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', - 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', - 'ш' => 'sh','щ' => 'sch','ъ' => '-','ы' => 'y', 'ь' => '-', 'э' => 'je', - 'ю' => 'ju','я' => 'ja','ё' => 'jo','є' => 'e', 'і' => 'i', 'ї' => 'i', - 'Ґ' => 'g', 'ґ' => 'g', 'א' => 'a', 'ב' => 'b', 'ג' => 'g', 'ד' => 'd', - 'ה' => 'h', 'ו' => 'v', 'ז' => 'z', 'ח' => 'h', 'ט' => 't', 'י' => 'i', - 'ך' => 'k', 'כ' => 'k', 'ל' => 'l', 'ם' => 'm', 'מ' => 'm', 'ן' => 'n', - 'נ' => 'n', 'ס' => 's', 'ע' => 'e', 'ף' => 'p', 'פ' => 'p', 'ץ' => 'C', - 'צ' => 'c', 'ק' => 'q', 'ר' => 'r', 'ש' => 'w', 'ת' => 't', '™' => 'tm', - ); - $bad = array_merge( - array_map('chr', range(0,31)), +function bereinigterDateiname($dateiname): array|string +{ + $_convertTable = array( + '&' => 'and', '@' => 'at', '©' => 'c', '®' => 'r', 'À' => 'a', + 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'Å' => 'a', 'Æ' => 'ae', 'Ç' => 'c', + 'È' => 'e', 'É' => 'e', 'Ë' => 'e', 'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', + 'Ï' => 'i', 'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Õ' => 'o', 'Ö' => 'o', + 'Ø' => 'o', 'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'Ý' => 'y', + 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ä' => 'a', 'å' => 'a', + 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', + 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ò' => 'o', 'ó' => 'o', + 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', + 'û' => 'u', 'ü' => 'u', 'ý' => 'y', 'þ' => 'p', 'ÿ' => 'y', 'Ā' => 'a', + 'ā' => 'a', 'Ă' => 'a', 'ă' => 'a', 'Ą' => 'a', 'ą' => 'a', 'Ć' => 'c', + 'ć' => 'c', 'Ĉ' => 'c', 'ĉ' => 'c', 'Ċ' => 'c', 'ċ' => 'c', 'Č' => 'c', + 'č' => 'c', 'Ď' => 'd', 'ď' => 'd', 'Đ' => 'd', 'đ' => 'd', 'Ē' => 'e', + 'ē' => 'e', 'Ĕ' => 'e', 'ĕ' => 'e', 'Ė' => 'e', 'ė' => 'e', 'Ę' => 'e', + 'ę' => 'e', 'Ě' => 'e', 'ě' => 'e', 'Ĝ' => 'g', 'ĝ' => 'g', 'Ğ' => 'g', + 'ğ' => 'g', 'Ġ' => 'g', 'ġ' => 'g', 'Ģ' => 'g', 'ģ' => 'g', 'Ĥ' => 'h', + 'ĥ' => 'h', 'Ħ' => 'h', 'ħ' => 'h', 'Ĩ' => 'i', 'ĩ' => 'i', 'Ī' => 'i', + 'ī' => 'i', 'Ĭ' => 'i', 'ĭ' => 'i', 'Į' => 'i', 'į' => 'i', 'İ' => 'i', + 'ı' => 'i', 'IJ' => 'ij', 'ij' => 'ij', 'Ĵ' => 'j', 'ĵ' => 'j', 'Ķ' => 'k', + 'ķ' => 'k', 'ĸ' => 'k', 'Ĺ' => 'l', 'ĺ' => 'l', 'Ļ' => 'l', 'ļ' => 'l', + 'Ľ' => 'l', 'ľ' => 'l', 'Ŀ' => 'l', 'ŀ' => 'l', 'Ł' => 'l', 'ł' => 'l', + 'Ń' => 'n', 'ń' => 'n', 'Ņ' => 'n', 'ņ' => 'n', 'Ň' => 'n', 'ň' => 'n', + 'ʼn' => 'n', 'Ŋ' => 'n', 'ŋ' => 'n', 'Ō' => 'o', 'ō' => 'o', 'Ŏ' => 'o', + 'ŏ' => 'o', 'Ő' => 'o', 'ő' => 'o', 'Œ' => 'oe', 'œ' => 'oe', 'Ŕ' => 'r', + 'ŕ' => 'r', 'Ŗ' => 'r', 'ŗ' => 'r', 'Ř' => 'r', 'ř' => 'r', 'Ś' => 's', + 'ś' => 's', 'Ŝ' => 's', 'ŝ' => 's', 'Ş' => 's', 'ş' => 's', 'Š' => 's', + 'š' => 's', 'Ţ' => 't', 'ţ' => 't', 'Ť' => 't', 'ť' => 't', 'Ŧ' => 't', + 'ŧ' => 't', 'Ũ' => 'u', 'ũ' => 'u', 'Ū' => 'u', 'ū' => 'u', 'Ŭ' => 'u', + 'ŭ' => 'u', 'Ů' => 'u', 'ů' => 'u', 'Ű' => 'u', 'ű' => 'u', 'Ų' => 'u', + 'ų' => 'u', 'Ŵ' => 'w', 'ŵ' => 'w', 'Ŷ' => 'y', 'ŷ' => 'y', 'Ÿ' => 'y', + 'Ź' => 'z', 'ź' => 'z', 'Ż' => 'z', 'ż' => 'z', 'Ž' => 'z', 'ž' => 'z', + 'ſ' => 'z', 'Ə' => 'e', 'ƒ' => 'f', 'Ơ' => 'o', 'ơ' => 'o', 'Ư' => 'u', + 'ư' => 'u', 'Ǎ' => 'a', 'ǎ' => 'a', 'Ǐ' => 'i', 'ǐ' => 'i', 'Ǒ' => 'o', + 'ǒ' => 'o', 'Ǔ' => 'u', 'ǔ' => 'u', 'Ǖ' => 'u', 'ǖ' => 'u', 'Ǘ' => 'u', + 'ǘ' => 'u', 'Ǚ' => 'u', 'ǚ' => 'u', 'Ǜ' => 'u', 'ǜ' => 'u', 'Ǻ' => 'a', + 'ǻ' => 'a', 'Ǽ' => 'ae', 'ǽ' => 'ae', 'Ǿ' => 'o', 'ǿ' => 'o', 'ə' => 'e', + 'Ё' => 'jo', 'Є' => 'e', 'І' => 'i', 'Ї' => 'i', 'А' => 'a', 'Б' => 'b', + 'В' => 'v', 'Г' => 'g', 'Д' => 'd', 'Е' => 'e', 'Ж' => 'zh', 'З' => 'z', + 'И' => 'i', 'Й' => 'j', 'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', + 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u', + 'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'sch', + 'Ъ' => '-', 'Ы' => 'y', 'Ь' => '-', 'Э' => 'je', 'Ю' => 'ju', 'Я' => 'ja', + 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', + 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', + 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', + 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', + 'ш' => 'sh', 'щ' => 'sch', 'ъ' => '-', 'ы' => 'y', 'ь' => '-', 'э' => 'je', + 'ю' => 'ju', 'я' => 'ja', 'ё' => 'jo', 'є' => 'e', 'і' => 'i', 'ї' => 'i', + 'Ґ' => 'g', 'ґ' => 'g', 'א' => 'a', 'ב' => 'b', 'ג' => 'g', 'ד' => 'd', + 'ה' => 'h', 'ו' => 'v', 'ז' => 'z', 'ח' => 'h', 'ט' => 't', 'י' => 'i', + 'ך' => 'k', 'כ' => 'k', 'ל' => 'l', 'ם' => 'm', 'מ' => 'm', 'ן' => 'n', + 'נ' => 'n', 'ס' => 's', 'ע' => 'e', 'ף' => 'p', 'פ' => 'p', 'ץ' => 'C', + 'צ' => 'c', 'ק' => 'q', 'ר' => 'r', 'ש' => 'w', 'ת' => 't', '™' => 'tm', + ); + $bad = array_merge( + array_map('chr', range(0, 31)), array("<", ">", ":", '"', "/", "\\", "|", "?", "*")); - return str_replace($bad, "", strtr($dateiname, $_convertTable)); + return str_replace($bad, "", strtr($dateiname, $_convertTable)); } -function setMinMemoryLimit($memDestSize) { - if (getBytes(ini_get('memory_limit')) < getBytes($memDestSize)) - ini_set('memory_limit', $memDestSize); +function setMinMemoryLimit($memDestSize): void +{ + if (getBytes(ini_get('memory_limit')) < getBytes($memDestSize)) + ini_set('memory_limit', $memDestSize); } -function getBytes($val) { - $val = trim($val); - $numeric = substr($val, 0, strlen($val) -1); - $last = strtolower($val[strlen($val) - 1]); - switch($last) { - // The 'G' modifier is available since PHP 5.1.0 - case 'g': - $numeric *= 1024; - case 'm': - $numeric *= 1024; - case 'k': - $numeric *= 1024; - } - return $numeric; +function getBytes($val): int|string +{ + $val = trim($val); + $numeric = substr($val, 0, strlen($val) - 1); + $last = strtolower($val[strlen($val) - 1]); + switch ($last) { + // The 'G' modifier is available since PHP 5.1.0 + case 'm': + case 'g': + case 'k': + $numeric *= 1024; + break; + } + return $numeric; } -function encrypt($str, $key){ - $result=""; - for($i=0; $iid; - return " " . $prefix . " (SELECT berechtigt_individualwettbewerb_id FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb INNER JOIN #__sportsmanager_individualwettbewerb ON individualwettbewerb_id = berechtigt_individualwettbewerb_id WHERE berechtigt_user_id = $user_id) "; +function individualwettbewerbFilter($prefix): string +{ + $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; + return " " . $prefix . " (SELECT berechtigt_individualwettbewerb_id FROM #__sportsmanager_berechtigt_fuer_individualwettbewerb INNER JOIN #__sportsmanager_individualwettbewerb ON individualwettbewerb_id = berechtigt_individualwettbewerb_id WHERE berechtigt_user_id = $user_id) "; } -function kategorieFilter($prefix, $suffix = "") { - global $params; - $kategorien = explode(",", $params->get( 'kategorien' )); - $filter = ""; - foreach ($kategorien as $s) { - $kategorie = intval(trim($s)); - if ($kategorie == 0) - continue; - if (!empty($filter)) - $filter .= ", "; - $filter .= $kategorie; - } - return empty($filter) ? "" : (" " . $prefix . " (" . $filter . ") " . $suffix); +function kategorieFilter($prefix, $suffix = ""): string +{ + global $params; + $kategorien = explode(",", $params->get('kategorien')); + $filter = ""; + foreach ($kategorien as $s) { + $kategorie = intval(trim($s)); + if ($kategorie == 0) + continue; + if (!empty($filter)) + $filter .= ", "; + $filter .= $kategorie; + } + return empty($filter) ? "" : (" " . $prefix . " (" . $filter . ") " . $suffix); } -function turnierFilter($prefix) { - $db =& getDatabase(); - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - return " " . $prefix . " (SELECT berechtigt_turnier_id FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; +function turnierFilter($prefix): string +{ + $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; + return " " . $prefix . " (SELECT berechtigt_turnier_id FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; } -function vereinFilter($prefix) { - $db =& getDatabase(); - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - return " " . $prefix . " (SELECT berechtigt_verein_id FROM #__sportsmanager_berechtigt_fuer_verein INNER JOIN #__sportsmanager_verein ON berechtigt_verein_id = verein_id WHERE berechtigt_user_id = $user_id AND NOT ausgetreten) "; +function vereinFilter($prefix): string +{ + $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; + return " " . $prefix . " (SELECT berechtigt_verein_id FROM #__sportsmanager_berechtigt_fuer_verein INNER JOIN #__sportsmanager_verein ON berechtigt_verein_id = verein_id WHERE berechtigt_user_id = $user_id AND NOT ausgetreten) "; } -function veranstalterFilter($prefix) { - $db =& getDatabase(); - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - return " " . $prefix . " (SELECT berechtigt_veranstalter_id FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id) "; +function veranstalterFilter($prefix): string +{ + $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; + return " " . $prefix . " (SELECT berechtigt_veranstalter_id FROM #__sportsmanager_berechtigt_fuer_veranstalter WHERE berechtigt_user_id = $user_id) "; } -function veranstaltungFilter($prefix) { - $db =& getDatabase(); - $user_id = isExternalDatabase() ? 0 : JFactory::getUser()->id; - return " " . $prefix . " (SELECT berechtigt_veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; +function veranstaltungFilter($prefix): string +{ + $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; + return " " . $prefix . " (SELECT berechtigt_veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; } // Berechnet Datum zum Montag der ersten Kalenderwoche eines Jahres -function firstkw($jahr) { - $erster = mktime(0,0,0,1,1,$jahr); - $wtag = date('w',$erster); - if ($wtag <= 4) { - /** - * Donnerstag oder kleiner: auf den Montag zurückrechnen. - */ - $montag = mktime(0,0,0,1,1-($wtag-1),$jahr); - } - else { - /** - * auf den Montag nach vorne rechnen. - */ - $montag = mktime(0,0,0,1,1+(7-$wtag+1),$jahr); - } - return $montag; +function firstkw($jahr): bool|int +{ + $erster = mktime(0, 0, 0, 1, 1, $jahr); + $wtag = date('w', $erster); + if ($wtag <= 4) { + /** + * Donnerstag oder kleiner: auf den Montag zurückrechnen. + */ + $montag = mktime(0, 0, 0, 1, 1 - ($wtag - 1), $jahr); + } else { + /** + * auf den Montag nach vorne rechnen. + */ + $montag = mktime(0, 0, 0, 1, 1 + (7 - $wtag + 1), $jahr); + } + return $montag; } // Berechnet Wochentag über Kalenderwoche, Jahr und Wochentag (0 = Montag, ..., 6 = Sonntag) -function mondaykw($kw, $jahr, $weekday) { - $firstmonday = firstkw($jahr); - $mon_monat = date('m',$firstmonday); - $mon_jahr = date('Y',$firstmonday); - $mon_tage = date('d',$firstmonday); - $tage = ($kw-1)*7; - $daykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage+$weekday,$mon_jahr); - return $daykw; +function mondaykw($kw, $jahr, $weekday): bool|int +{ + $firstmonday = firstkw($jahr); + $mon_monat = date('m', $firstmonday); + $mon_jahr = date('Y', $firstmonday); + $mon_tage = (int)date('d', $firstmonday); + $tage = ($kw - 1) * 7; + return mktime(0, 0, 0, $mon_monat, $mon_tage + $tage + $weekday, $mon_jahr); } // Berechnet Termin am Wochentag (0 = Montag, ..., 6 = Sonntag) in Kalenderwoche zum Datum -function geaenderterWochentag($datum, $wochentag) { - $wtag = date('w', $datum); - if ($wtag == 0) // Sonntag - $wtag = 7; - $mon_monat = date('m', $datum); - $mon_jahr = date('Y', $datum); - $mon_tage = date('d', $datum); - return mktime(0,0,0, $mon_monat, $mon_tage + 1 - $wtag + $wochentag, $mon_jahr); +function geaenderterWochentag($datum, $wochentag): bool|int +{ + $wtag = date('w', $datum); + if ($wtag == 0) // Sonntag + $wtag = 7; + $mon_monat = date('m', $datum); + $mon_jahr = date('Y', $datum); + $mon_tage = (int)date('d', $datum); + return mktime(0, 0, 0, $mon_monat, $mon_tage + 1 - $wtag + $wochentag, $mon_jahr); } -function normalisiertesDatum($datum) { - if ($datum == NULL) - return NULL; +function normalisiertesDatum($datum): ?string +{ + if ($datum == NULL) + return NULL; - if (strpos($datum, "-") !== false) - $trennzeichen = "-"; - else - $trennzeichen = "."; + if (str_contains($datum, "-")) + $trennzeichen = "-"; + else + $trennzeichen = "."; - $t = explode($trennzeichen, $datum); - $n = count($t); - if ($n == 1) { - $s = $t[0]; - if (strlen($s) < 8) - return NULL; - $jahr = intval(substr($s, 0, 4)); - $monat = intval(substr($s, 4, 2)); - $tag = intval(substr($s, 6, 2)); - } - else if ($n == 3) { - if ($trennzeichen != ".") { - $jahr = intval($t[0]); - if (strlen($t[0]) <= 2) - $jahr += 1900; - $monat = intval($t[1]); - $tag = intval($t[2]); - } - else { - $tag = intval($t[0]); - $monat = intval($t[1]); - $jahr = intval($t[2]); - if (strlen($t[2]) <= 2) - $jahr += 1900; - } - } - else - return NULL; + $t = explode($trennzeichen, $datum); + $n = count($t); + if ($n == 1) { + $s = $t[0]; + if (strlen($s) < 8) + return NULL; + $jahr = intval(substr($s, 0, 4)); + $monat = intval(substr($s, 4, 2)); + $tag = intval(substr($s, 6, 2)); + } else if ($n == 3) { + if ($trennzeichen != ".") { + $jahr = intval($t[0]); + if (strlen($t[0]) <= 2) + $jahr += 1900; + $monat = intval($t[1]); + $tag = intval($t[2]); + } else { + $tag = intval($t[0]); + $monat = intval($t[1]); + $jahr = intval($t[2]); + if (strlen($t[2]) <= 2) + $jahr += 1900; + } + } else + return NULL; - if (!checkdate($monat, $tag, $jahr)) - return NULL; + if (!checkdate($monat, $tag, $jahr)) + return NULL; - return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);; + return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag); } -function normalisierteUhrzeit($uhrzeit) { - if ($uhrzeit == NULL) - return NULL; +function normalisierteUhrzeit($uhrzeit): ?string +{ + if ($uhrzeit == NULL) + return NULL; - if (strpos($uhrzeit, "-") !== FALSE) - $trennzeichen = "-"; - else - $trennzeichen = ":"; + if (str_contains($uhrzeit, "-")) + $trennzeichen = "-"; + else + $trennzeichen = ":"; - $t = explode($trennzeichen, $uhrzeit); - $n = count($t); - if ($n == 1) { - $s = $t[0]; - $len = strlen($s); - if ($len != 4 && $len != 6) - return NULL; - $stunden = intval(substr($s, 0, 2)); - $minuten = intval(substr($s, 2, 2)); - $sekunden = $len != 6 ? 0 : intval(substr($s, 4, 2)); - } - else if ($n == 2 || $n == 3) { - $stunden = intval($t[0]); - $minuten = intval($t[1]); - $sekunden = $n != 3 ? 0 : intval($t[2]); - } - else - return NULL; + $t = explode($trennzeichen, $uhrzeit); + $n = count($t); + if ($n == 1) { + $s = $t[0]; + $len = strlen($s); + if ($len != 4 && $len != 6) + return NULL; + $stunden = intval(substr($s, 0, 2)); + $minuten = intval(substr($s, 2, 2)); + $sekunden = $len != 6 ? 0 : intval(substr($s, 4, 2)); + } else if ($n == 2 || $n == 3) { + $stunden = intval($t[0]); + $minuten = intval($t[1]); + $sekunden = $n != 3 ? 0 : intval($t[2]); + } else + return NULL; - if ($stunden < 0 || $stunden > 23 || $minuten < 0 || $minuten > 59 || $sekunden < 0 || $sekunden > 59) - return NULL; + if ($stunden < 0 || $stunden > 23 || $minuten < 0 || $minuten > 59 || $sekunden < 0 || $sekunden > 59) + return NULL; - return sprintf("%02d:%02d:%02d", $stunden, $minuten, $sekunden);; + return sprintf("%02d:%02d:%02d", $stunden, $minuten, $sekunden); } -function runden_detailliert_invers($runden) { - if ($runden == null) - return null; - $runden_invers = ""; - $saetze = explode(" ", $runden); - foreach ($saetze as $satz) { - $punkte = explode(":", $satz); - if (!empty($runden_invers)) - $runden_invers .= " "; - $runden_invers .= $punkte[1] . ":" . $punkte[0]; - } - return $runden_invers; -} - -function runden_detailliert_auswertung($runden) { - $ergebnis = 0; - $heim_saetze = 0; - $unentschieden_saetze = 0; - $gast_saetze = 0; - $heim_punkte = 0; - $gast_punkte = 0; - if ($runden != null) { +function runden_detailliert_invers($runden): ?string +{ + if ($runden == null) + return null; + $runden_invers = ""; $saetze = explode(" ", $runden); foreach ($saetze as $satz) { - $punkte = explode(":", $satz); - $heim_punkte += (int)$punkte[0]; - $gast_punkte += (int)$punkte[1]; - if ($punkte[0] > $punkte[1]) - $heim_saetze++; - else if ($punkte[0] < $punkte[1]) - $gast_saetze++; - else - $unentschieden_saetze++; + $punkte = explode(":", $satz); + if (!empty($runden_invers)) + $runden_invers .= " "; + $runden_invers .= $punkte[1] . ":" . $punkte[0]; } - if ($heim_saetze > $gast_saetze) - $ergebnis = 1; - else if ($heim_saetze < $gast_saetze) - $ergebnis = 2; - } - return array($ergebnis, $heim_saetze, $unentschieden_saetze, $gast_saetze, $heim_punkte, $gast_punkte); + return $runden_invers; +} + +function runden_detailliert_auswertung($runden): array +{ + $ergebnis = 0; + $heim_saetze = 0; + $unentschieden_saetze = 0; + $gast_saetze = 0; + $heim_punkte = 0; + $gast_punkte = 0; + if ($runden != null) { + $saetze = explode(" ", $runden); + foreach ($saetze as $satz) { + $punkte = explode(":", $satz); + $heim_punkte += (int)$punkte[0]; + $gast_punkte += (int)$punkte[1]; + if ($punkte[0] > $punkte[1]) + $heim_saetze++; + else if ($punkte[0] < $punkte[1]) + $gast_saetze++; + else + $unentschieden_saetze++; + } + if ($heim_saetze > $gast_saetze) + $ergebnis = 1; + else if ($heim_saetze < $gast_saetze) + $ergebnis = 2; + } + return array($ergebnis, $heim_saetze, $unentschieden_saetze, $gast_saetze, $heim_punkte, $gast_punkte); } // pass two file names // returns TRUE if files are the same, FALSE otherwise -function files_identical($fn1, $fn2) { - if(!is_file($fn1) || !is_file($fn2)) - return FALSE; +function files_identical($fn1, $fn2): bool +{ + if (!is_file($fn1) || !is_file($fn2)) + return FALSE; - if(filesize($fn1) !== filesize($fn2)) - return FALSE; + if (filesize($fn1) !== filesize($fn2)) + return FALSE; - if(!$fp1 = fopen($fn1, 'rb')) - return FALSE; + if (!$fp1 = fopen($fn1, 'rb')) + return FALSE; - if(!$fp2 = fopen($fn2, 'rb')) { - fclose($fp1); - return FALSE; - } + if (!$fp2 = fopen($fn2, 'rb')) { + fclose($fp1); + return FALSE; + } - $same = TRUE; - while (!feof($fp1) and !feof($fp2)) - if(fread($fp1, 4096) !== fread($fp2, 4096)) { - $same = FALSE; - break; - } + $same = TRUE; + while (!feof($fp1) and !feof($fp2)) + if (fread($fp1, 4096) !== fread($fp2, 4096)) { + $same = FALSE; + break; + } - if(feof($fp1) !== feof($fp2)) - $same = FALSE; + if (feof($fp1) !== feof($fp2)) + $same = FALSE; - fclose($fp1); - fclose($fp2); + fclose($fp1); + fclose($fp2); - return $same; + return $same; } -?> + diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index 7b7ce4b..7bf7bf0 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6,349 +6,371 @@ // kein direkter Zugriff defined('_JEXEC') or die('Restricted access'); -require_once(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_tools.php'); +require_once(JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_tools.php'); +require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\HTML\HTMLHelper; class HTML_sportsmanager { -static function aktuelleBegegnungenHeader($titel, $beschreibung, $ticker_anzeigen = false, $pineingabe_anzeigen = false) { - global $params; - if (!empty($titel)) { ?> +static function aktuelleBegegnungenHeader($titel, $beschreibung, $ticker_anzeigen = false, $pineingabe_anzeigen = false): void +{ + global $params; + if (!empty($titel)) { ?>
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- -
-
+ if (!empty($beschreibung)) { + ?> +
+
- - - - - + -
- : - - -     - -
-
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ + + +
+ + + + + + + + +
+ + + + +     + +
+
+
  - -
- - - -
- -
-
+ +
+ + + + +
+ +
+
+
  - +static function automatischAktualisieren($sekunden = 60): void +{ + ?> - -
- - - -
- - -
+ if (!empty($titel)) { ?>
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) || $ticker_anzeigen) { - ?> -
-
+ if (!empty($beschreibung)) { + ?> +
+
- 0) { - ?> - - - - + -
- : - - -     - -
- - ',screen.width,725);" class="readonget( 'pageclass_sfx' ); ?>"> - …(no menu) - */ - ?> -
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ + 0) || $ticker_anzeigen) { + ?> + +
+ + + 0) { + ?> + + + + + +
+ + + +     + +
+ + ',screen.width,725);" class="readonget( 'pageclass_sfx' ); ?>"> + …(no menu) + */ + ?> +
+
  - - + ?> +
- - + - - - - + + - - - - + + - +
+ - + href="veranstaltung_id); ?>"> + > bezeichnung); ?>   + +   + - < + <   + +   + - > + >
-
- - - -
-
-

- bezeichnung); - $bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"'); - if ($bild != null) { - if (!empty($veranstaltung->logo_url)) { - if (strpos($veranstaltung->logo_url, "://") === false) - $logo_url = "http://" . $veranstaltung->logo_url; - else - $logo_url = $veranstaltung->logo_url; - echo "" . $bild . ""; - } - else - echo $bild; - } - ?> -

-
-
- -
- - -
- bezeichnung); - $bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"'); - if ($bild != null) { - if (!empty($veranstaltung->logo_url)) { - if (strpos($veranstaltung->logo_url, "://") === false) - $logo_url = "http://" . $veranstaltung->logo_url; - else - $logo_url = $veranstaltung->logo_url; - echo "" . $bild . ""; - } - else - echo $bild; - } - ?> -
- - - - - -
-
- -
-
+
+
- + -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?> +
+

+ bezeichnung); + $bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"'); + if ($bild != null) { + if (!empty($veranstaltung->logo_url)) { + if (!str_contains($veranstaltung->logo_url, "://")) + $logo_url = "http://" . $veranstaltung->logo_url; + else + $logo_url = $veranstaltung->logo_url; + echo "" . $bild . ""; + } else + echo $bild; + } + ?> +

+
+
- 0) { - ?> -
-
+
+
+ +
+ + + +
+ bezeichnung); + $bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"'); + if ($bild != null) { + if (!empty($veranstaltung->logo_url)) { + if (!str_contains($veranstaltung->logo_url, "://")) + $logo_url = "http://" . $veranstaltung->logo_url; + else + $logo_url = $veranstaltung->logo_url; + echo "" . $bild . ""; + } else + echo $bild; + } + ?> +
+
+ + + + + +
+ +
+ +
+ - + -
- : - - - ") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+ + + 0) { + ?> + +
+ + + + +
+ + + +
+
- -
- - - -
- - disziplin); ?> -
+static function disziplinHeader($disziplin): void +{ + global $params; + ?> +
+ + + + +
+ + disziplin); ?> +
+
-
- - - - - - - - -
- : - - beginn); ?> -
- : - - teilnehmer; ?> -
- + + + + + + + + + +
+ : + + beginn); ?> +
+ : + + teilnehmer; ?> +
+ +
@@ -358,6738 +380,6784 @@ static function turniere($turniere) { turnierort)) { - $ort_anzeigen = true; - break; - } - } + $ort_anzeigen = false; + foreach ($turniere as $turnier) { + if (!empty($turnier->turnierort)) { + $ort_anzeigen = true; + break; + } + } - if (!empty($turniere)) { - ?> -
- - - - - - - - - - - - - - + if (!empty($turniere)) { + ?> +
+
- erster_tag, $turnier->letzter_tag, true))); ?> - - turnierbezeichnung)); - if (!empty($turnier->disziplinen)) { - ?> -
- disziplinen; ?> - -
- turnierort)); ?> -
+ + + + + + - -
- + + + + erster_tag, $turnier->letzter_tag, true))); ?> + + + turnierbezeichnung)); + if (!empty($turnier->disziplinen)) { + ?> +
+ disziplinen; ?> + + + + + turnierort)); ?> + + + + + + +   - - + ?> +
- - + - - - - + + - - - - + + - +
+ - + href="turnier_id); ?>"> + > turnierbezeichnung) . (!empty($turnier->turnierort) ? (" in " . $turnier->turnierort) : ""); ?>   + +   + - < + <   + +   + - > + >
-
- - - - - - -
- turnierort)) echo $turnier->turnierort . ", "; - echo FormatierterTermin($turnier->erster_tag, $turnier->letzter_tag, true); - ?> -
-
-

turnierbezeichnung); ?>

-
-
- 0) { - $bilder_anzeigen_1 = false; - $bilder_anzeigen_2 = false; - foreach ($meldungen as $meldung) { - $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; - $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; - $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; - $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; - if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_1 = true; - if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen_1 && $bilder_anzeigen_2) - break; - } - - ?> -
- - - - - - - - - - - - - - -
- platz != 0 ? $meldung->platz : JText::_('COM_SPORTSMANAGER_NONE'); - ?> - - - - - - - - - - - -
- turniermeldung_id]; - $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; - $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; - $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; - if (!isset($spielerIds[0])) - echo htmlentities_utf8($spieler[0]); - else { - ?> - - "; - if (!isset($spielerIds[1])) - echo htmlentities_utf8($spieler[1]); - else { - ?> - - - - - - -
- -
-
+
+
- -
- - + + turnierort)) echo $turnier->turnierort . ", "; + echo FormatierterTermin($turnier->erster_tag, $turnier->letzter_tag, true); + ?>
-   - + +
+

turnierbezeichnung); ?>

+
+ + + + + - + if (count($meldungen) > 0) { + $bilder_anzeigen_1 = false; + $bilder_anzeigen_2 = false; + foreach ($meldungen as $meldung) { + $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; + $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; + $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; + $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; + if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_1 = true; + if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen_1 && $bilder_anzeigen_2) + break; + } + + ?> +
+
+ + + + + + + + + + + + + + +
+
+ platz != 0 ? $meldung->platz : Text::_('COM_SPORTSMANAGER_NONE'); + ?> + + + + + + + + + + + +
+ turniermeldung_id]; + $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; + $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; + $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; + if (!isset($spielerIds[0])) + echo htmlentities_utf8($spieler[0]); + else { + ?> + + "; + if (!isset($spielerIds[1])) + echo htmlentities_utf8($spieler[1]); + else { + ?> + + + + + + +
+ +
+ +
+ + + + +
+ + +
+
+   + + - - + - - - - + + - - - - + + - +
+ - > turnierbezeichnung) . (!empty($turnier->turnierort) ? (" in " . $turnier->turnierort) : ""); ?> + href="turnier_id); ?>"> + > turnierbezeichnung) . (!empty($turnier->turnierort) ? (" in " . $turnier->turnierort) : ""); ?> > disziplin); ?>   + +   + - < + <   + +   + - > + >
-
- - - - - - -
- turnierort)) echo $turnier->turnierort . ", "; - echo FormatiertesDatum($disziplin->beginn) . " " . JText::_('COM_SPORTSMANAGER_HOUR') . ", " . $disziplin->teilnehmer . JText::_('COM_SPORTSMANAGER_MESSAGES'); - ?> -
-
-

turnierbezeichnung) . ": " . htmlentities_utf8($disziplin->disziplin); ?>

-
-
+
+ + + + + + + +
+ turnierort)) echo $turnier->turnierort . ", "; + echo FormatiertesDatum($disziplin->beginn) . " " . Text::_('COM_SPORTSMANAGER_HOUR') . ", " . $disziplin->teilnehmer . Text::_('COM_SPORTSMANAGER_MESSAGES'); + ?> +
+
+

turnierbezeichnung) . ": " . htmlentities_utf8($disziplin->disziplin); ?>

+
+
+
- 0) || ($rundenstufe != 0 && count($spiele[$rundenstufe]) > 0)) { - ?> -
- - - -
- 0) || ($rundenstufe != 0 && count($spiele[$rundenstufe]) > 0)) { + ?> +
+ + + + +
+
+ turniermeldung_id]; - $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; - $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; - $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; - if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_1 = true; - if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen_1 && $bilder_anzeigen_2) - break; - } + $bilder_anzeigen_1 = false; + $bilder_anzeigen_2 = false; + foreach ($meldungen[$rundenstufe] as $meldung) { + $spieler = $meldungenSpielerNamen[$meldung->turniermeldung_id]; + $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; + $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; + $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; + if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_1 = true; + if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen_1 && $bilder_anzeigen_2) + break; + } - if (($rundenstufe == 0 || $rundenstufe == 10) && count($meldungen[$rundenstufe]) > 0) { - ?> -
- - - - - - - 0) { + ?> +
+
+ + + + + + + + + + + + - - - - - - -
+
+ platz != 0 ? $meldung->platz : Text::_('COM_SPORTSMANAGER_NONE'); + ?> + + + + + + + + + + + +
+ turniermeldung_id]; + $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; + $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; + $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; + if (!isset($spielerIds[0])) + echo htmlentities_utf8($spieler[0]); + else { + ?> + + "; + if (!isset($spielerIds[1])) + echo htmlentities_utf8($spieler[1]); + else { + ?> + + + + + + +
- $k = 0; - foreach ($meldungen[$rundenstufe] as $meldung) { - ?> -
- platz != 0 ? $meldung->platz : JText::_('COM_SPORTSMANAGER_NONE'); - ?> - - - - - - - - - - -
- turniermeldung_id]; - $spielerIds = $meldungenSpielerIds[$meldung->turniermeldung_id]; - $spielerGeschlechter = $meldungenSpielerGeschlechter[$meldung->turniermeldung_id]; - $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$meldung->turniermeldung_id]; - if (!isset($spielerIds[0])) - echo htmlentities_utf8($spieler[0]); - else { - ?> - - "; - if (!isset($spielerIds[1])) - echo htmlentities_utf8($spieler[1]); - else { - ?> - - - - - - -
- -
-   - 0) { - $ergebnis_detailliert_anzeigen = false; - foreach ($spiele[$rundenstufe] as $spiel) { - if (!empty($spiel->ergebnis_detailliert)) { - $ergebnis_detailliert_anzeigen = true; - break; - } - } - ?> -
- - - - - - - - runde) { - $runde = $spiel->runde; - ?> - - - -
-
+ +
+
+   + 0) { + $ergebnis_detailliert_anzeigen = false; + foreach ($spiele[$rundenstufe] as $spiel) { + if (!empty($spiel->ergebnis_detailliert)) { + $ergebnis_detailliert_anzeigen = true; + break; + } + } + ?> +
+ + + + + - - - - - - - - - - - + + - -
+ +
- - - - - - - - - - -
- ergebnis == 1) { - $gewinner_meldung_id = $spiel->heim_meldung_id; - $verlierer_meldung_id = $spiel->gast_meldung_id; - } - else { - $gewinner_meldung_id = $spiel->gast_meldung_id; - $verlierer_meldung_id = $spiel->heim_meldung_id; - } - if (isset($meldungenSpielerNamen[$gewinner_meldung_id])) { - $gewinner = $meldungenSpielerNamen[$gewinner_meldung_id]; - $gewinnerIds = $meldungenSpielerIds[$gewinner_meldung_id]; - $gewinnerGeschlechter = $meldungenSpielerGeschlechter[$gewinner_meldung_id]; - $gewinnerBilderAusblenden = $meldungenSpielerBilderAusblenden[$gewinner_meldung_id]; - } - else { - $gewinner = null; - $gewinnerIds = null; - $gewinnerGeschlechter = null; - $gewinnerBilderAusblenden = null; - } - if (isset($meldungenSpielerNamen[$verlierer_meldung_id])) { - $verlierer = $meldungenSpielerNamen[$verlierer_meldung_id]; - $verliererIds = $meldungenSpielerIds[$verlierer_meldung_id]; - $verliererGeschlechter = $meldungenSpielerGeschlechter[$verlierer_meldung_id]; - $verliererBilderAusblenden = $meldungenSpielerBilderAusblenden[$verlierer_meldung_id]; - } - else { - $verlierer = null; - $verliererIds = null; - $verliererGeschlechter = null; - $verliererBilderAusblenden = null; - } - if (isset($gewinner)) { - echo htmlentities_utf8($gewinner[0]); - if (isset($gewinner[1])) - echo "
" . htmlentities_utf8($gewinner[1]); - } - ?> -
- - - -
- -
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis == 1 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> - - - - - - - - - - -
- " . htmlentities_utf8($verlierer[1]); - } - ?> - - - - -
- -
+ runde) { + $runde = $spiel->runde; + ?> + + + + + + + + + + + + + + + + + + + + +
+ ergebnis == 1) { + $gewinner_meldung_id = $spiel->heim_meldung_id; + $verlierer_meldung_id = $spiel->gast_meldung_id; + } else { + $gewinner_meldung_id = $spiel->gast_meldung_id; + $verlierer_meldung_id = $spiel->heim_meldung_id; + } + if (isset($meldungenSpielerNamen[$gewinner_meldung_id])) { + $gewinner = $meldungenSpielerNamen[$gewinner_meldung_id]; + $gewinnerIds = $meldungenSpielerIds[$gewinner_meldung_id]; + $gewinnerGeschlechter = $meldungenSpielerGeschlechter[$gewinner_meldung_id]; + $gewinnerBilderAusblenden = $meldungenSpielerBilderAusblenden[$gewinner_meldung_id]; + } else { + $gewinner = null; + $gewinnerIds = null; + $gewinnerGeschlechter = null; + $gewinnerBilderAusblenden = null; + } + if (isset($meldungenSpielerNamen[$verlierer_meldung_id])) { + $verlierer = $meldungenSpielerNamen[$verlierer_meldung_id]; + $verliererIds = $meldungenSpielerIds[$verlierer_meldung_id]; + $verliererGeschlechter = $meldungenSpielerGeschlechter[$verlierer_meldung_id]; + $verliererBilderAusblenden = $meldungenSpielerBilderAusblenden[$verlierer_meldung_id]; + } else { + $verlierer = null; + $verliererIds = null; + $verliererGeschlechter = null; + $verliererBilderAusblenden = null; + } + if (isset($gewinner)) { + echo htmlentities_utf8($gewinner[0]); + if (isset($gewinner[1])) + echo "
" . htmlentities_utf8($gewinner[1]); + } + ?> +
+ + + +
+ + + + + ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis == 1 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> + + + + + + + + + + + + + +
+ " . htmlentities_utf8($verlierer[1]); + } + ?> + + + + +
+ + + + + + +   - 0) { - ?> - - - - -
Spiele der Zusatzunde
- - - - - - runde) { - $runde = $spiel->runde; - ?> - - - - - - - - - -
GewinnerVerlierer
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->heim_meldung_id] : $meldungenSpielerNamen[$spiel->gast_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->gast_meldung_id] : $meldungenSpielerNamen[$spiel->heim_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
-   - 0) { - ?> - - - - -
Spiele der 2. Zusatzunde
- - - - - - runde) { - $runde = $spiel->runde; - ?> - - - - - - - - - -
GewinnerVerlierer
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->heim_meldung_id] : $meldungenSpielerNamen[$spiel->gast_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->gast_meldung_id] : $meldungenSpielerNamen[$spiel->heim_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
-   - 0) { - ?> - - - - -
Spiele der Vorrunde
- - - - - - runde) { - $runde = $spiel->runde; - ?> - - - - - - - - - -
GewinnerVerlierer
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->heim_meldung_id] : $meldungenSpielerNamen[$spiel->gast_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->heim_meldung_id : $spiel->gast_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
- - - - - - - - - - -
- ergebnis == 1 ? $meldungenSpielerNamen[$spiel->gast_meldung_id] : $meldungenSpielerNamen[$spiel->heim_meldung_id]; - echo htmlentities_utf8($spieler[0]); - if (isset($spieler[1])) - echo "
" . htmlentities_utf8($spieler[1]); - ?> -
- ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][0], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> - - ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1]) && ($bild = bildHTML("spieler", $meldungenSpielerIds[$spiel->ergebnis == 1 ? $spiel->gast_meldung_id : $spiel->heim_meldung_id][1], 30, 40, 0, 0, 'border="1"')) != NULL) { - echo $bild; - } - ?> -
- -
-   - 0) { - $zeitpunkt_anzeigen = false; - foreach ($rows as $begegnung) { - if (!empty($begegnung->zeitpunkt)) { - $zeitpunkt_anzeigen = true; - break; - } - } + if (count($rows) > 0) { + $zeitpunkt_anzeigen = false; + foreach ($rows as $begegnung) { + if (!empty($begegnung->zeitpunkt)) { + $zeitpunkt_anzeigen = true; + break; + } + } - if (strlen($titel) > 0) { - ?> -
- - -
- veranstaltung_id . "\">"; - echo $titel; - if (!empty($veranstaltung) && ($bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"')) != null) { - if (!empty($veranstaltung->logo_url)) { - if (strpos($veranstaltung->logo_url, "://") === false) - $logo_url = "http://" . $veranstaltung->logo_url; - else - $logo_url = $veranstaltung->logo_url; - echo "" . $bild . ""; - } - else - echo $bild; - } - ?> -
- 0) { + ?> +
+ + + +
+ veranstaltung_id . "\">"; + echo $titel; + if (!empty($veranstaltung) && ($bild = bildHTML("mannschaftswettbewerbe/logo", $veranstaltung->veranstaltung_id, 0, 0, 0, 0, 'border="0" hspace="8" style="vertical-align:bottom"')) != null) { + if (!empty($veranstaltung->logo_url)) { + if (!str_contains($veranstaltung->logo_url, "://")) + $logo_url = "http://" . $veranstaltung->logo_url; + else + $logo_url = $veranstaltung->logo_url; + echo "" . $bild . ""; + } else + echo $bild; + } + ?> +
+
+ + ?> -
- - - - - - +
-
+ + + + + + - punktetyp == 0) { - ?> - - - - - + punktetyp == 0) { + ?> + + + + + heim_punkte != null || $row->gast_punkte != null) ? true : false; + $k = 0; + $monat = "..."; + $spieltag = 0; + $spielort_name = ""; + foreach ($rows as $row) { + $ergebnis_vorhanden = $row->heim_punkte != null || $row->gast_punkte != null; // if ($monat == NULL) // $monat = substr($row->zeitpunkt, 0, 7); - if ($zeitfenster == 0 && $veranstaltung != null) { - if ($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) { - if ($spieltag != $row->spieltag || $spielort_name != $row->spielort_name) { - $spieltag = $row->spieltag; - $spielort_name = $row->spielort_name; - ?> + if ($zeitfenster == 0 && $veranstaltung != null) { + if ($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) { + if ($spieltag != $row->spieltag || $spielort_name != $row->spielort_name) { + $spieltag = $row->spieltag; + $spielort_name = $row->spielort_name; + ?> + + + + + + + zeitpunkt, 0, 7)) { // Freundschaftsspiel + $monat = substr($row->zeitpunkt, 0, 7); + if (strlen($monat) == 0) + $monatsbezeichnung = "N/A"; + else { + $monatsname = array(Text::_('COM_SPORTSMANAGER_JANUARY'), Text::_('COM_SPORTSMANAGER_FEBRUARY'), Text::_('COM_SPORTSMANAGER_MARCH'), Text::_('COM_SPORTSMANAGER_APRIL'), Text::_('COM_SPORTSMANAGER_MAY'), Text::_('COM_SPORTSMANAGER_JUNE'), Text::_('COM_SPORTSMANAGER_JULY'), Text::_('COM_SPORTSMANAGER_AUGUST'), Text::_('COM_SPORTSMANAGER_SEPTEMBER'), Text::_('COM_SPORTSMANAGER_OCTOBER'), Text::_('COM_SPORTSMANAGER_NOVEMBER'), Text::_('COM_SPORTSMANAGER_DECEMBER')); + $monatsbezeichnung = $monatsname[substr($monat, 5, 2) - 1] . " " . substr($monat, 0, 4); + } + /* ?> - - - - zeitpunkt, 0, 7)) { // Freundschaftsspiel - $monat = substr($row->zeitpunkt, 0, 7); - if (strlen($monat) == 0) - $monatsbezeichnung = "N/A"; - else { - $monatsname = array(JText::_('COM_SPORTSMANAGER_JANUARY'), JText::_('COM_SPORTSMANAGER_FEBRUARY'), JText::_('COM_SPORTSMANAGER_MARCH'), JText::_('COM_SPORTSMANAGER_APRIL'), JText::_('COM_SPORTSMANAGER_MAY'), JText::_('COM_SPORTSMANAGER_JUNE'), JText::_('COM_SPORTSMANAGER_JULY'), JText::_('COM_SPORTSMANAGER_AUGUST'), JText::_('COM_SPORTSMANAGER_SEPTEMBER'), JText::_('COM_SPORTSMANAGER_OCTOBER'), JText::_('COM_SPORTSMANAGER_NOVEMBER'), JText::_('COM_SPORTSMANAGER_DECEMBER')); - $monatsbezeichnung = $monatsname[substr($monat, 5, 2) - 1] . " " . substr($monat, 0, 4); - } - /* ?> - - - - - - - - + + + + + - - - + heim_team_id) . "\">" . htmlentities_utf8(NichtLeererString($row->heim_name)) . ""; + if (!$row->zwischenergebnis && ((!$ergebnis_vorhanden && $row->verantwortlich_team_id == $row->heim_team_id) || $row->unbestaetigtes_ergebnis_team_id == $row->gast_team_id)) { + echo "
verantwortlich"; + if ($row->ergebnis_vorgeschlagen != null) + echo " seit " . FormatiertesDatum($row->ergebnis_vorgeschlagen, false, false) . ""; + else if ($row->verlegung_eingetragen != null) + echo " seit " . FormatiertesDatum($row->verlegung_eingetragen, false, false) . ""; + } + ?> + + + punktetyp == 0) { - ?> - + + - - - - -
+ Wettbewerb
+/- Tage
+/- Tage
+ unterteilung == 0)); + if (!empty($spielort_name)) + echo "
" . htmlentities_utf8($spielort_name); + ?> +
- unterteilung == 0)); - if (!empty($spielort_name)) - echo "
" . htmlentities_utf8($spielort_name); - ?> -
-
- - veranstaltung_id . '&id=' . $row->begegnung_id) . "\">" . FormatiertesDatum($row->zeitpunkt) . ""; - else if (($row->verschieberegel_erfuellt || $row->verlegung_eingetragen) && $row->berechtigt_fuer_team_eintragen > 0 && ($row->heim_punkte == 0 && $row->gast_punkte == 0)) - echo "veranstaltung_id . '&id=' . $row->begegnung_id . ($aus_uebersicht ? "&aus_uebersicht=1" : "")) . "\">" . ($row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt)) . ""; - else - echo $row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt); - ?> - -
- - spielort_name)) - echo htmlentities_utf8($row->spielort_name) . "
"; - echo htmlentities_utf8($row->bezeichnung); - if ($row->spieltag != null) - echo htmlentities_utf8(" (" . Rundenbezeichnung($row->spieltag, $row->unterteilung == 0) . ")"); - ?> -
- unterteilung != 0 && $veranstaltung->unterteilung != 1) || $zeitfenster != 0) && !empty($row->spielort_name)) { - ?> -
- - spielort_name)) - echo htmlentities_utf8($row->spielort_name) . "
"; - ?> -
- tisch) && (!$ergebnis_vorhanden || ($ergebnis_vorhanden && $row->zwischenergebnis))) - echo "
" . JText::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; - ?> -
+
+ + veranstaltung_id . '&id=' . $row->begegnung_id) . "\">" . FormatiertesDatum($row->zeitpunkt) . ""; + else if (($row->verschieberegel_erfuellt || $row->verlegung_eingetragen) && $row->berechtigt_fuer_team_eintragen > 0 && ($row->heim_punkte == 0 && $row->gast_punkte == 0)) + echo "veranstaltung_id . '&id=' . $row->begegnung_id . ($aus_uebersicht ? "&aus_uebersicht=1" : "")) . "\">" . ($row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt)) . ""; + else + echo $row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt); + ?> + +
+ + spielort_name)) + echo htmlentities_utf8($row->spielort_name) . "
"; + echo htmlentities_utf8($row->bezeichnung); + if ($row->spieltag != null) + echo htmlentities_utf8(" (" . Rundenbezeichnung($row->spieltag, $row->unterteilung == 0) . ")"); + ?> +
+ unterteilung != 0 && $veranstaltung->unterteilung != 1) || $zeitfenster != 0) && !empty($row->spielort_name)) { + ?> +
+ + spielort_name) . "
"; + ?> +
+ tisch) && (!$ergebnis_vorhanden || $row->zwischenergebnis)) + echo "
" . Text::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; + ?> +
- heim_team_id) . "\">" . htmlentities_utf8(NichtLeererString($row->heim_name)) . ""; - if (!$row->zwischenergebnis && ((!$ergebnis_vorhanden && $row->verantwortlich_team_id == $row->heim_team_id) || $row->unbestaetigtes_ergebnis_team_id == $row->gast_team_id)) { - echo "
verantwortlich"; - if ($row->ergebnis_vorgeschlagen != null) - echo " seit " . FormatiertesDatum($row->ergebnis_vorgeschlagen, false, false) . ""; - else if ($row->verlegung_eingetragen != null) - echo " seit " . FormatiertesDatum($row->verlegung_eingetragen, false, false) . ""; - } - ?> -
- gast_team_id) . "\">" . htmlentities_utf8(NichtLeererString($row->gast_name)) . ""; - if (!$row->zwischenergebnis && ((!$ergebnis_vorhanden && $row->verantwortlich_team_id == $row->gast_team_id) || $row->unbestaetigtes_ergebnis_team_id == $row->heim_team_id)) { - echo "
verantwortlich"; - if ($row->ergebnis_vorgeschlagen != null) - echo " seit " . FormatiertesDatum($row->ergebnis_vorgeschlagen, false, false) . ""; - else if ($row->verlegung_eingetragen != null) - echo " seit " . FormatiertesDatum($row->verlegung_eingetragen, false, false) . ""; - } - ?> -
+ gast_team_id) . "\">" . htmlentities_utf8(NichtLeererString($row->gast_name)) . ""; + if (!$row->zwischenergebnis && ((!$ergebnis_vorhanden && $row->verantwortlich_team_id == $row->gast_team_id) || $row->unbestaetigtes_ergebnis_team_id == $row->heim_team_id)) { + echo "
verantwortlich"; + if ($row->ergebnis_vorgeschlagen != null) + echo " seit " . FormatiertesDatum($row->ergebnis_vorgeschlagen, false, false) . ""; + else if ($row->verlegung_eingetragen != null) + echo " seit " . FormatiertesDatum($row->verlegung_eingetragen, false, false) . ""; + } + ?> +
bezeichnung); ?> - heim_punkte . ":" . $row->gast_punkte) : "_:_"; - ?> + if ($veranstaltung != null && $modus->punktetyp == 0) { + ?> + + heim_punkte . ":" . $row->gast_punkte) : "_:_"; + ?> + + berechtigt_fuer_team_eintragen > 0 && ($row->unbestaetigtes_ergebnis_id != null || ($row->heim_punkte == 0 && $row->gast_punkte == 0))) { + echo "veranstaltung_id . '&id=' . $row->begegnung_id . ($aus_uebersicht ? '&aus_uebersicht=1' : '')) . "\">" . ($ergebnis_vorhanden ? ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte) : "_:_") . ""; + } else if ($ergebnis_vorhanden) { + echo "veranstaltung_id . '&id=' . $row->begegnung_id) . "\">" . ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte) . ""; + } else { + echo "_:_"; + } + if ($row->unbestaetigtes_ergebnis_id != null) + echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; + ?>
- berechtigt_fuer_team_eintragen > 0 && ($row->unbestaetigtes_ergebnis_id != null || ($row->heim_punkte == 0 && $row->gast_punkte == 0))) { - echo "veranstaltung_id . '&id=' . $row->begegnung_id . ($aus_uebersicht ? '&aus_uebersicht=1' : '')) . "\">" . ($ergebnis_vorhanden ? ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte) : "_:_") . ""; - } - else if ($ergebnis_vorhanden) { - echo "veranstaltung_id . '&id=' . $row->begegnung_id) . "\">" . ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte) . ""; - } - else { - echo "_:_"; - } - if ($row->unbestaetigtes_ergebnis_id != null) - echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; - ?> -
- + + + + +   - -
-
- -
-   - - +
- - + - - - - + + - - - + + - - +
+ - + - > + > - teamname); ?>bezeichnung); ?> > - teamname); ?>teamname); ?> - + teamname); ?>bezeichnung); ?> > + teamname); ?>teamname); ?> + - > + > - bezeichnung); ?> > - teamname); ?>teamname); ?> - + bezeichnung); ?> > + teamname); ?>teamname); ?> +   + +   + <    + ?> + > + >
-
- - - -
- zeitpunkt); - if ($begegnung->spieltag != null) - echo ", " . htmlentities_utf8(Rundenbezeichnung($begegnung->spieltag, $veranstaltung->unterteilung == 0)); - if ($begegnung->unbestaetigtes_ergebnis_id != null) - echo $begegnung->zwischenergebnis ? JText::_('COM_SPORTSMANAGER_PROVISIONAL_RESULT') : JText::_('COM_SPORTSMANAGER_UNCONFIRMED_RESULT'); - if (!empty($begegnung->tisch)) - echo ", " . JText::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($begegnung->tisch); - ?> -
- -
- - - - - - -
- - - - - - - - - -
- team_id, 48, 48, 0, 0, 'border="0" align="right"'); - if ($bild == null && $heim_team->verein_id != null) - $bild = bildHTML("vereine", $heim_team->verein_id, 48, 48, 0, 0, 'border="0" align="right"'); - if ($bild != null) - echo $bild; - ?> - -

teamname); ?>

-
- team_id, 48, 48, 0, 0, 'border="0" align="left"'); - if ($bild != null) - echo $bild; - else if ($heim_team->verein_id != null) { - $bild = bildHTML("vereine", $gast_team->verein_id, 48, 48, 0, 0, 'border="0" align="left"'); - if ($bild != null) - echo $bild; - } - ?> - -

teamname); ?>

-
-
-

heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>

spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) echo "

(" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")

"; ?> -
- - 0) { - $bilder_anzeigen = false; - foreach ($spiele as $spiel) { - if (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 30, 40, 0, 0) != null || bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) { - $bilder_anzeigen = true; - break; - } - if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id)) && (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_mitglied_id, 30, 40, 0, 0) != null || bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) { - $bilder_anzeigen = true; - break; - } - if (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_mitglied_id, 30, 40, 0, 0) != null || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) { - $bilder_anzeigen = true; - break; - } - if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id)) && (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 30, 40, 0, 0) != null || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) { - $bilder_anzeigen = true; - break; - } - } - - ?> -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
teamspiel_nummer ?> - - - - - heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) { - ?> - - - -
" - align="center"> - heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 30, 40, 0, 0, 'border="1"'); - if ($bild == null) - $bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, 'border="1"', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) - echo $bild; - ?> - - heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_mitglied_id, 30, 40, 0, 0, 'border="1"'); - if ($bild == null) - $bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, 'border="1"', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) - echo $bild; - ?> -
-
- heim_spieler_1_id != null && $spiel->heim_spieler_1_id != 0) { - ?>heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); ?> - heim_spieler_2_id != null && $spiel->heim_spieler_2_id != 0) { - ?>
heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); ?> - -
ergebnis_detailliert); ?> - gast_spieler_1_id != null && $spiel->gast_spieler_1_id != 0) { - ?>gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); ?> - gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0) { - ?>
gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); ?> - -
- - - - - heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) { - ?> - - - -
" - align="center"> - gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_mitglied_id, 30, 40, 0, 0, 'border="1"'); - if ($bild == null) - $bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, 'border="1"', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) - echo $bild; - ?> - - gast_spieler_2_bild_ausblenden) && ($spiel->gast_spieler_2_mitglied_id != null || ($spiel->gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0))) { - $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 30, 40, 0, 0, 'border="1"'); - if ($bild == null) - $bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, 'border="1"', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) - echo $bild; - } - ?> -
-
-   - 0) { - if ($alleine_angezeigt && $veranstaltung->tabellenwertung >= -1 && $veranstaltung->tabellenwertung <= 11 && count($spieltage) > 1) { - ?> -
-
- - - -
- -
- - -
- team_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - else if (bildHTML("vereine", $team->verein_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - } - - $zusatzpunkte_anzeigen = false; - if ($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { - foreach ($teams as $team) { - if ($team->zusatzpunkte != 0) { - $zusatzpunkte_anzeigen = true; - break; - } - } - } - - ?> - - -
- - - - - - - - - - - - tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { - if ($alleine_angezeigt && $praesentation == 0) { - ?> - - - - tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { - if ($alleine_angezeigt && $praesentation == 0 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { - ?> - - - - tabellenwertung >= 21) { - ?> - - - tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { - ?> - - - - - - - gesamtpunkte); - $begegnungspunkte = $team->begegnungspunkte; - $zusatzpunkte = floatval($team->zusatzpunkte); - $punkte_quotient = $team->punkte_quotient; - $punkte_differenz = $team->punkte_differenz; - $punkte_gewonnen = $team->punkte_gewonnen; - $punkte_verloren = $team->punkte_verloren; - $spielpunkte_quotient = $team->spielpunkte_quotient; - $spielpunkte_differenz = $team->spielpunkte_differenz; - $spielpunkte_gewonnen = $team->spielpunkte_gewonnen; - $spielpunkte_verloren = $team->spielpunkte_verloren; - if ($veranstaltung->tabellenwertung >= 21) { - $buchholz1_wert = $team->buchholz1; - $buchholz2_wert = $team->buchholz2; - } - ?> - - - - - - - - - - tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { - $title = ""; - if ($alleine_angezeigt && $praesentation == 0) { - ?> - - - - tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { - $title = ""; - if ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) { - if ($alleine_angezeigt && $praesentation == 0) { - ?> - - - - tabellenwertung >= 21) { - ?> - - - tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { - ?> - - - - -
- - - - - - punktetyp == 0 ? JText::_('COM_SPORTSMANAGER_GOALS') : JText::_('COM_SPORTSMANAGER_SETS'); ?>
- -
- punktetyp == 0 ? JText::_('COM_SPORTSMANAGER_GOALS') : JText::_('COM_SPORTSMANAGER_SETS'); ?> - -
- -
- - -
- tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) - || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) - || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) - || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) - $tatsaechlicher_platz = $platz; - echo $tatsaechlicher_platz; - ?> - - - - - - - - - -
- team_id) . "\">" . htmlentities_utf8(NichtLeererString($team->teamname)) . ""; - ?> - - team_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) { - echo $bild; - } - else if ($team->verein_id != null) { - $bild = bildHTML("vereine", $team->verein_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - } - ?> -
- -
siege + $team->unentschieden + $team->niederlagen; ?>siege; ?>unentschieden; ?>niederlagen; ?> - - > - tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) - echo ($punkte_differenz >= 0 ? "+" : "") . $punkte_differenz; - else - echo $punkte_quotient == -1 ? "∞" : sprintf("%.2f", $punkte_quotient); - ?> - - - > - tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) - echo ($spielpunkte_differenz >= 0 ? "+" : "") . $spielpunkte_differenz; - else - echo $spielpunkte_quotient == -1 ? "∞" : sprintf("%.2f", $spielpunkte_quotient); - ?> - buchholz2; ?>buchholz1; ?>
- -
- - - -
- - -
- -   - 0) { - $bilder_anzeigen = false; - foreach ($teams as $team) { - if (bildHTML("mannschaften", $team->team_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - else if (bildHTML("vereine", $team->verein_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - } - - ?> - -
- - - - - platz == null; - $platz = -1; - $k = 0; - foreach ($teams - - as $team) { - if ($laufende_veranstaltung && $team->platz != $platz && $team->platz == null) { // ($team->platz == null || $platz == -1)) { - ?> - - - - - - - - - - - - letzter_spieltag); - ?> - - - - - - -
platz == null ? "offen" : "abgeschlossen"; ?> -
- platz != $platz) { - if ($team->platz != null) - echo $team->platz; - $platz = $team->platz; - } - ?> - - - - - - - - - -
- team_id) . "\">" . htmlentities_utf8(NichtLeererString($team->teamname)) . ""; - ?> - - team_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) { - echo $bild; - } - else if ($team->verein_id != null) { - $bild = bildHTML("vereine", $team->verein_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - } - ?> -
- -
- letzter_spieltag; - ?> - - zuletzt_gewonnen; - ?> - - -
- -
- - - -
- - -
- 0 || !$alleine_angezeigt) { - ?> -   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - ?> -
-
- - - -
- : - - -
- -
- -
- - - -
- bezeichnung); ?> -
- 0) { - $bilder_anzeigen = false; - foreach ($rows as $team) { - if (bildHTML("mannschaften", $team->team_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - else if ($team->verein_id != null && bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"') != null) { - $bilder_anzeigen = true; - break; - } - } - - $heimspielort_anzeigen = false; - foreach ($rows as $team) { - if (!empty($team->name)) { - $heimspielort_anzeigen = true; - break; - } - } - - $tischtyp_anzeigen = false; - foreach ($rows as $team) { - if (!empty($team->tischtyp)) { - $tischtyp_anzeigen = true; - break; - } - } - - $wettbewerb_anzeigen = false; - $team_name = null; - $team_veranstaltung_id = 0; - foreach ($rows as $team) { - if ($team->teamname == $team_name && $team->veranstaltung_id != $team_veranstaltung_id) { - $wettbewerb_anzeigen = true; - break; - } - $team_name = $team->teamname; - $team_veranstaltung_id = $team->veranstaltung_id; - } - - ?> - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- teamname)); ?> - - team_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - else if ($row->verein_id != null) { - $bild = bildHTML("vereine", $row->verein_id, 50, 50, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - } - - ?> -
- -
bezeichnung)) echo htmlentities_utf8($row->bezeichnung); ?>name)) echo htmlentities_utf8($row->name); ?>tischtyp)) echo htmlentities_utf8($row->tischtyp); ?>
- -   - - - - - - - - - - - - - - - -
- - > bezeichnung); ?> > teamname); ?> -   - - < -   - - > -
- -
- - - -
-
-

teamname); ?>

-
-
- - team_id, 0, 0, 240, 240, 'border="0"'); - if ($bild != null) { - ?> -
- - - -
-   - verein_id != null) { - $bild = bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"'); - if ($bild != null) { - ?> -
- - - -
-   - spieler_id])) { - foreach ($spielberechtigungen[$row->spieler_id] as $spielberechtigung) { - if ($spielberechtigung[2] == -1 || !empty($spielberechtigung[3])) { - $mitglied_dauerhaft = false; - break; - } - } - } - $mitglieder_ist_dauerhaft[$row->spieler_id] = $mitglied_dauerhaft; - if ($mitglied_dauerhaft) - $mitglieder_dauerhaft++; - else - $mitglieder_voruebergehend++; - } - - for ($mitglieder_modus = 0; $mitglieder_modus <= 1; $mitglieder_modus++) { - if (($mitglieder_modus == 0 && $mitglieder_dauerhaft > 0) - || ($mitglieder_modus == 1 && $mitglieder_voruebergehend > 0)) { - ?> -
- - - -
- -
- - spieler_id]) - || ($mitglieder_modus == 1 && $mitglieder_ist_dauerhaft[$row->spieler_id])) - continue; - if ($n % 3 == 0 && $n != 0) - echo ""; - - echo ""; - echo " -
get('pageclass_sfx') . "\">"; - echo ""; - echo ""; - if ($team_moderator) { - if (!empty($row->geburtsdatum)) { - echo ""; - } - if (!empty($row->strasse) || - !empty($row->plz) || !empty($row->ort)) { - echo ""; - } - if (!empty($row->telefon) || - !empty($row->mobil) || - !empty($row->email)) { - echo ""; - } - } - if (isset($spielberechtigungen[$row->spieler_id])) { - echo ""; - } - echo "
"; - if (empty($row->aktueller_verein_id)) - echo htmlentities_utf8($row->nachname . ", " . $row->vorname); - else { - ?>nachname . ", " . $row->vorname)); ?>spielernr)) - echo "
" . htmlentities_utf8($row->spielernr) . ""; - echo "
"; - echo "" . htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false)) . ""; - echo "
"; - if (!empty($row->strasse)) - echo "" . htmlentities_utf8($row->strasse) . "
"; - if (!empty($row->plz) || !empty($row->ort)) - echo "" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . ""; - echo "
"; - if (!empty($row->telefon)) - echo "" . htmlentities_utf8($row->telefon) . "
"; - if (!empty($row->mobil)) - echo "" . htmlentities_utf8($row->mobil) . "
"; - if (!empty($row->email)) { - $replacement = JHTML::_('email.cloak', $row->email, 1, $row->email, 0); - echo "" . $replacement . ""; - } - echo "
"; - foreach ($spielberechtigungen[$row->spieler_id] as $spielberechtigung) { - echo ""; - if (isset($veranstaltungsbezeichnungen[$spielberechtigung[0]])) { - echo htmlentities_utf8($veranstaltungsbezeichnungen[$spielberechtigung[0]]) . ": "; - } - if ($spielberechtigung[2] == -1) // Ohne Spielberechtigung - echo "Nicht spielberechtigt"; - else if (empty($spielberechtigung[3])) // Letzter Spieltag ohne Einschränkung - echo "Ab " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); - else if ($spielberechtigung[2] < 2) // Erster Spieltag ohne Einschränkung - echo "Bis " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); - else if ($spielberechtigung[2] == $spielberechtigung[3]) // Erster Spieltag und letzter Spieltag gleich - echo "Während " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); - else - echo htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)) . " bis " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); - echo "
"; - } - echo "
get('pageclass_sfx') . "\">"; - $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->mitglied_von_team_id, 90, 120, 0, 0, 'border="1"'); - if ($bild == null) - $bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) { - ?> - - - - -
- "; - $n++; - } - ?> -
-   - - -
- - - -
- Informationen -
- -
- - - - - - verein_id != null) { - ?> - - - - - veranstalterbezeichnung != null) { - ?> - - - - - tischtyp) || !empty($team->tischeigenschaften)) { - ?> - - - - - heimspiel_wochentag >= 1 && $team->heimspiel_wochentag <= 7) { - ?> - - - - - name)) { - ?> - - - - - nichtraucherschutz != 0) { - ?> - - - - - 0 && $ansprechpartner_anzeigen) { - ?> - - - - - heimspielort_name)) { - ?> - - - - - 0) { - ?> - - - - - -
- zusatzpunkte != 0) { - ?> -
: - zusatzpunkte); ?>
:vereinsname); ?>
: - veranstalterbezeichnung); ?>
: - - tischtyp)) - echo htmlentities_utf8($team->tischtyp); - if (!empty($team->tischeigenschaften)) { - if (!empty($team->tischtyp)) - echo "
"; - echo htmlentities_utf8($team->tischeigenschaften); - } - ?> -
: - heimspiel_wochentag - 1] . " ab " . sprintf("%2d:%02d", floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100) . " " . JText::_('COM_SPORTSMANAGER_HOUR'); - ?> -
: - url; - if (!empty($heimspielort_url) && strpos($heimspielort_url, "://") === false) - $heimspielort_url = "http://" . $heimspielort_url; - if (!empty($heimspielort_url)) - echo "" . htmlentities_utf8($team->name) . ""; - else - echo htmlentities_utf8($team->name); - $anschrift = $team->strasse . (!empty($team->strasse) && (!empty($team->plz) || !empty($team->ortsname) || !empty($team->ortsteil)) ? ", " : "") . $team->plz . (!empty($team->plz) ? " " : "") . $team->ortsname . (!empty($team->ortsname) && !empty($team->ortsteil) ? "-" : "") . $team->ortsteil; - echo (!empty($team->name) ? "
" : "") . htmlentities_utf8($anschrift); - ?> -
: - nichtraucherschutz]); - ?> -
: - - = 2) - echo JText::_('COM_SPORTSMANAGER_REPRESENTATION') . ": "; - echo htmlentities_utf8($row->vorname . " " . $row->nachname); - if (strlen($row->email) > 0) - echo ", " . JHTML::_('email.cloak', $row->email); - if ($details_anzeigen && $row->telefon) - echo ", " . htmlentities_utf8($row->telefon); - if ($details_anzeigen && $row->mobil) - echo ", " . htmlentities_utf8($row->mobil); - echo "
"; - $nummer++; - } - ?> -
Heimspielstätte: - heimspielort_name); ?> -
: - bezeichnung) . "
"; - ?> -
-   - - 0) { - $zeitpunkt_anzeigen = false; - foreach ($begegnungen as $begegnung) { - if (!empty($begegnung->zeitpunkt)) { - $zeitpunkt_anzeigen = true; - break; - } - } - $bilder_anzeigen = false; - foreach ($begegnungen as $begegnung) { - if (bildHTML("mannschaften", $begegnung->gegner_id, 28, 28, 0, 0)) { - $bilder_anzeigen = true; - break; - } - else if ($begegnung->gegner_verein_id != null && bildHTML("vereine", $begegnung->gegner_verein_id, 28, 28, 0, 0)) { - $bilder_anzeigen = true; - break; - } - } - $heimspielort_anzeigen = false; - foreach ($begegnungen as $begegnung) { - if (!empty($begegnung->heimspielort_name)) { - $heimspielort_anzeigen = true; - break; - } - } - - ?> - veranstaltung_id) { - if ($veranstaltung_id != -1) { - ?> - -   - veranstaltung_id; - ?> -
+
+
- - -
- -
- - unterteilung == 0 || $row->unterteilung == 1) { - ?> - - - - - - - - spielpunkte_wertung_einzel != 2 || $row->spielpunkte_wertung_doppel != 2) { - ?> - - - - - heim_punkte != null || $row->gast_punkte != null) ? true : false; - ?> - - unterteilung == 0 || $row->unterteilung == 1) { - ?> - - - - - - + +
unterteilung == 0 ? "Spieltag" : "Runde"; ?>KontrahentPunkte
- spieltag, $row->unterteilung == 0, true)); - ?> - - veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . FormatiertesDatum($row->zeitpunkt) . ""; - else - echo $row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt); - if (!empty($row->tisch) && (!$ergebnis_vorhanden || ($ergebnis_vorhanden && $row->zwischenergebnis))) - echo "
" . JText::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; - echo "
" . htmlentities_utf8($row->auswaerts ? JText::_('COM_SPORTSMANAGER_AWAY_MATCH') : JText::_('COM_SPORTSMANAGER_HOME_MATCH')) . ($row->nichtraucherschutz != 0 ? htmlentities_utf8($row->nichtraucherschutz == 1 ? JText::_('COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_NO') : JText::_('COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_YES')) : "") . ""; - ?> -
- + zeitpunkt); + if ($begegnung->spieltag != null) + echo ", " . htmlentities_utf8(Rundenbezeichnung($begegnung->spieltag, $veranstaltung->unterteilung == 0)); + if ($begegnung->unbestaetigtes_ergebnis_id != null) + echo $begegnung->zwischenergebnis ? Text::_('COM_SPORTSMANAGER_PROVISIONAL_RESULT') : Text::_('COM_SPORTSMANAGER_UNCONFIRMED_RESULT'); + if (!empty($begegnung->tisch)) + echo ", " . Text::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($begegnung->tisch); + ?> +
+
- +
+
+ + + - - - - spielpunkte_wertung_einzel != 2 || $row->spielpunkte_wertung_doppel != 2) { - ?> - - - + - -
+ - + + + + + - - -
gegner_id) . "\">" . htmlentities_utf8(NichtLeererString($row->gegner)) . ""; - ?> + + team_id, 48, 48, 0, 0, 'border="0" style="text-align: right"'); + if ($bild == null && $heim_team->verein_id != null) + $bild = bildHTML("vereine", $heim_team->verein_id, 48, 48, 0, 0, 'border="0" style="text-align: right"'); + if ($bild != null) + echo $bild; + ?> + +

teamname); ?>

+
+ team_id, 48, 48, 0, 0, 'border="0" style="text-align: left"'); + if ($bild != null) + echo $bild; + else if ($heim_team->verein_id != null) { + $bild = bildHTML("vereine", $gast_team->verein_id, 48, 48, 0, 0, 'border="0" style="text-align: left"'); + if ($bild != null) + echo $bild; + } + ?> + +

teamname); ?>

- gegner_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - else if ($row->gegner_verein_id != null) { - $bild = bildHTML("vereine", $row->gegner_verein_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - } - ?> -
-
- heimspielort_url; - if (!empty($heimspielort_url) && strpos($heimspielort_url, "://") === false) - $heimspielort_url = "http://" . $heimspielort_url; - if (!empty($heimspielort_url)) - echo "" . htmlentities_utf8($row->heimspielort_name) . ""; - else - echo htmlentities_utf8($row->heimspielort_name); - $anschrift = $row->heimspielort_strasse . (!empty($row->heimspielort_strasse) && (!empty($row->heimspielort_plz) || !empty($row->heimspielort_ortsname) || !empty($row->heimspielort_ortsteil)) ? ", " : "") . $row->heimspielort_plz . (!empty($row->heimspielort_plz) ? " " : "") . $row->heimspielort_ortsname . (!empty($row->heimspielort_ortsname) && !empty($row->heimspielort_ortsteil) ? "-" : "") . $row->heimspielort_ortsteil; - if (!empty($anschrift)) - echo (!empty($row->heimspielort_name) ? "
" : "") . "" . htmlentities_utf8($anschrift) . ""; - - if ($row->spielort_id == 0 && !empty($row->tischtyp)) - echo "
" . htmlentities_utf8($row->tischtyp) . ""; - if ($row->spielort_id == 0 && !empty($row->tischeigenschaften)) - echo "
" . htmlentities_utf8($row->tischeigenschaften) . ""; - } - else { - echo htmlentities_utf8($row->heimspielort_name); - if ($row->spielort_id == 0 && !empty($row->tischtyp)) - echo "
" . htmlentities_utf8($row->tischtyp) . ""; - if ($row->spielort_id == 0 && !empty($row->tischeigenschaften)) - echo "
" . htmlentities_utf8($row->tischeigenschaften) . ""; - } - ?> -
- veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . ($row->auswaerts ? ($row->gast_punkte . ":" . $row->heim_punkte) : ($row->heim_punkte . ":" . $row->gast_punkte)) . ""; - if ($row->unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; - } - ?> -
- veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . ($row->auswaerts ? ($row->gast_spielpunkte . ":" . $row->heim_spielpunkte) : ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte)) . ""; - if ($row->unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; - } - ?> +
+

heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>

spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) echo "

(" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")

"; ?>
-   - team_id)); - } + - if ($team_moderator && !is_null($mitglieder_statistiken) && count($mitglieder_statistiken) > 0) { - $elo_einzel = false; - $elo_doppel = false; - foreach ($mitglieder_statistiken as $mitglied) { - if ($mitglied->elo_einzel_spiele != 0) - $elo_einzel = true; - if ($mitglied->elo_doppel_spiele != 0) - $elo_doppel = true; - if ($elo_einzel && $elo_doppel) - break; - } - ?> -
- - - -
- Mitgliederstatistik zum Wettbewerb -
+ 0) { + $bilder_anzeigen = false; + foreach ($spiele as $spiel) { + if (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 30, 40) != null || bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) { + $bilder_anzeigen = true; + break; + } + if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id)) && (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_mitglied_id, 30, 40) != null || bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) { + $bilder_anzeigen = true; + break; + } + if (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_mitglied_id, 30, 40) != null || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) { + $bilder_anzeigen = true; + break; + } + if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id)) && (bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 30, 40) != null || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) { + $bilder_anzeigen = true; + break; + } + } -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -
nachname) . ", " . htmlentities_utf8($row->vorname); ?>einzel_spiele; ?>einzel_punkte_gesamt > 0 ? round($row->einzel_punkte * 100 / $row->einzel_punkte_gesamt, 0) . "%" : "-"; ?>einzel_siege; ?>einzel_unentschieden; ?>einzel_niederlagen; ?>elo_einzel_spiele != 0 ? $row->elo_einzel : "-"; ?>doppel_spiele; ?>doppel_punkte_gesamt > 0 ? round($row->doppel_punkte * 100 / $row->doppel_punkte_gesamt, 0) . "%" : "-"; ?>doppel_siege; ?>doppel_unentschieden; ?>doppel_niederlagen; ?>elo_doppel_spiele != 0 ? $row->elo_doppel : "-"; ?>gesamt_spiele; ?>gesamt_punkte_gesamt > 0 ? round($row->gesamt_punkte * 100 / $row->gesamt_punkte_gesamt, 0) . "%" : "-"; ?>gesamt_siege; ?>gesamt_unentschieden; ?>gesamt_niederlagen; ?>
-   - -
- - - -
- -
- -
- - - - - - - - - - -
- - - - "> - - - -
-   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - $bilder_anzeigen = false; - foreach ($rows as $verein) { - if (bildHTML("vereine", $verein->verein_id, 28, 28, 0, 0) != null) { - $bilder_anzeigen = true; - break; - } - } - - if ($organisationAnzeigen) { - $organisation = $rows[0]->veranstalterbezeichnung; - ?> -
- - - -
- -
- -
- - - - - veranstalterbezeichnung != $organisation) { - $organisation = $row->veranstalterbezeichnung; - ?> -
-   - -
- - - -
- -
- -
- - - - - - - - - - -
- - - - - - - - -
- vereinsname)); ?> - - verein_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - ?> -
- -
vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?>
- -   - - - - - - - - - - - - - - - -
- - - > vereinsname); ?> -   - - < -   - - > -
- -
- - - -
-
-

vereinsname); ?>

-
-
- - verein_id, 0, 0, 240, 240, 'border="0"'); - if ($bild != null) { - ?> -
- - - -
-   - - -
- - - - - - veranstalterbezeichnung != null) { - ?> - - - - - url)) { - ?> - - - - - beschreibung)) { - ?> - - - - - - - */ - if (count($vereinsansprechpartner) > 0 && $ansprechpartner_anzeigen) { - ?> - - - - - -
- vereinssitz)) { - ?> -
:vereinssitz . (!empty($verein->vereinssitz_ortsteil) ? ("-" . $verein->vereinssitz_ortsteil) : "")); ?>
: - veranstalterbezeichnung); ?>
: - url, "://") === false) { - $verein_url_anzeige = $verein->url; - $verein_url = "http://" . $verein->url; - } - else { - $verein_url_anzeige = substr($verein->url, 0, 7) == "http://" ? substr($verein->url, 7) : $verein->url; - $verein_url = $verein->url; - } - echo "" . htmlentities_utf8($verein_url_anzeige) . ""; - ?> -
: - beschreibung)); ?>
Heimspielstätte: - heimspielort_url) > 0) - echo "heimspielort_url) . "\">" . htmlentities_utf8($verein->heimspielort_name) . ""; - else - echo htmlentities_utf8($verein->heimspielort_name); - - if (strlen($verein->heimspielort_anschrift) > 0) { - if (strlen($verein->heimspielort_anschrift_url) > 0) - echo "
heimspielort_anschrift_url) . "\">" . htmlentities_utf8($verein->heimspielort_anschrift) . ""; - else - echo "
" . htmlentities_utf8($verein->heimspielort_anschrift); - } - ?> -
: - = 2) - echo JText::_('COM_SPORTSMANAGER_REPRESENTATION') . ": "; - echo htmlentities_utf8($row->vorname . " " . $row->nachname); - if (strlen($row->email) > 0) - echo "," . JHTML::_('email.cloak', $row->email); - if ($details_anzeigen && $row->telefon) - echo ", " . htmlentities_utf8($row->telefon); - if ($details_anzeigen && $row->mobil) - echo ", " . htmlentities_utf8($row->mobil); - echo "
"; - $nummer++; - } - ?> -
-   - - 0) { - $heimspielort_anzeigen = false; - foreach ($aktuelle_teams as $team) { - if (!empty($team->name)) { - $heimspielort_anzeigen = true; - break; - } - } - ?> -
- - - -
- -
- - - - - - - - - - - - - - - - -
teamname); ?>wettbewerbe); ?> - name); - $anschrift = $team->strasse . (!empty($team->strasse) && (!empty($team->plz) || !empty($team->ortsname) || !empty($team->ortsteil)) ? ", " : "") . $team->plz . (!empty($team->plz) ? " " : "") . $team->ortsname . (!empty($team->ortsname) && !empty($team->ortsteil) ? "-" : "") . $team->ortsteil; - if (!empty($anschrift)) - echo "
" . htmlentities_utf8($anschrift) . ""; - if (!empty($team->tischtyp)) - echo "
" . htmlentities_utf8($team->tischtyp) . ""; - if (!empty($team->tischeigenschaften)) - echo "
" . htmlentities_utf8($team->tischeigenschaften) . ""; - ?> -
-   - 0) { - ?> -
- - - -
- -
- - "; - - echo ""; - echo " -
get('pageclass_sfx') . "\">"; - echo ""; - echo ""; - if ($vereins_moderator) { - if (!empty($row->geburtsdatum)) { - echo ""; - } - if (!empty($row->strasse) || - !empty($row->plz) || !empty($row->ort)) { - echo ""; - } - if (!empty($row->telefon) || - !empty($row->mobil) || - !empty($row->email)) { - echo ""; - } - } - echo "
"; - ?>nachname . ", " . $row->vorname); ?>spielernr)) - echo "
" . htmlentities_utf8($row->spielernr) . ""; - echo "
"; - echo "" . htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false)) . ""; - echo "
"; - if (!empty($row->strasse)) - echo "" . htmlentities_utf8($row->strasse) . "
"; - if (!empty($row->plz) || !empty($row->ort)) - echo "" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . ""; - echo "
"; - if (!empty($row->telefon)) - echo "" . htmlentities_utf8($row->telefon) . "
"; - if (!empty($row->mobil)) - echo "" . htmlentities_utf8($row->mobil) . "
"; - if (!empty($row->email)) { - $replacement = JHTML::_('email.cloak', $row->email, 1, $row->email, 0); - echo "" . $replacement . ""; - } - echo "
get('pageclass_sfx') . "\">"; - $bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) { - ?> - - - - -
- "; - $n++; - } - ?> -
- -   - -
- - - -
- - -
" - class="readonget('pageclass_sfx'); ?>"> - -
-   - 0) { - ?> -
- - - -
- -
- - - - - saisonbezeichnung) { - $saisonbezeichnung = $team->saisonbezeichnung; - ?> - - - - - - - - - - - - -
- -
teamname); ?>wettbewerbe); ?>
-   - -
- - - -
- -
- -
- - - - - - - - - - -
- - - - "> - - - -
-   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - $ortsname = $rows[0]->ortsname; - if (!empty($ortsname)) { - ?> -
- - - -
- -
- -
- - - - - ortsname != $ortsname) { - $ortsname = $row->ortsname; - ?> -
-   - - -
- - - -
- -
- - -
- - - - - - - - - - -
- - - - -
- name)); ?> -
-
ortsname)) echo htmlentities_utf8($row->ortsname . (!empty($row->ortsteil) ? ("-" . $row->ortsteil) : "")); ?>
- -   - - - - - - - - - - - - - - - -
- - - > name); ?> -   - - < -   - - > -
- -
- - - -
-
-

name); ?>

-
-
- -
- - - -
- -
- - - - - - url)) { - ?> - - - - - - - - - - beschreibung)) { - ?> - - - - - -
- strasse . (!empty($spielort->strasse) && (!empty($spielort->plz) || !empty($spielort->ortsname) || !empty($spielort->ortsteil)) ? ", " : "") . $spielort->plz . (!empty($spielort->plz) ? " " : "") . $spielort->ortsname . (!empty($spielort->ortsname) && !empty($spielort->ortsteil) ? "-" : "") . $spielort->ortsteil; - if (!empty($anschrift)) { - ?> -
Anschrift:
Webseite: - url, "://") === false) { - $spielort_url_anzeige = $spielort->url; - $spielort_url = "http://" . $spielort->url; - } - else { - $spielort_url_anzeige = substr($spielort->url, 0, 7) == "http://" ? substr($spielort->url, 7) : $spielort->url; - $spielort_url = $spielort->url; - } - echo "" . htmlentities_utf8($spielort_url_anzeige) . ""; - ?> -
:
: - beschreibung)); ?>
-   - - 0) { - $tischtyp_anzeigen = false; - foreach ($aktuelle_teams as $team) { - if (!empty($team->tischtyp)) { - $tischtyp_anzeigen = true; - break; - } - } - - ?> -
- - - -
- -
- - - - - - - - heimspiel_wochentag) { - if ($team->heimspiel_wochentag >= 1 && $team->heimspiel_wochentag <= 7) { - ?> - - - - - - - heimspiel_wochentag; - } - ?> - - - - - - - - -
- heimspiel_wochentag - 1]); - ?> -
teamname); ?> - tischtyp)) - echo htmlentities_utf8($team->tischtyp); - ?> - wettbewerbe); ?>
-   - 0; - - if (!empty($beschreibung)) { - ?> -
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0 || $statistik["einstufung_einzel"] > 0 || $statistik["einstufung_doppel"] > 0) && !empty($einstufungid)) || (count($veranstaltungen) > 0 && !empty($veranstaltungid)) || (count($veranstalter) > 0 && !empty($veranstalterid)); - ?> - -
-
- : - -
-
- - /> -
- -
- > - - - - 0 || $statistik["einstufung_einzel"] > 0 || $statistik["einstufung_doppel"] > 0)) { - ?> - > - - - - 1) { - ?> - > - - - - 0) { - ?> - > - - - - - -
- - - -
- 0) { - $bilder_anzeigen = false; - foreach ($rows as $spieler) { - if (bildHTML("spieler", !$details_anzeigen && $spieler->bild_ausblenden ? '' : $spieler->spieler_id, 30, 40, 0, 0, '', $spieler->geschlecht == 'M' ? 'm' : 'w') != null) { - $bilder_anzeigen = true; - break; - } - } - - ?> -
- - - - - - - - 0) { - ?> - - 0) { - ?> - - 0) { - ?> - - 0) { - ?> - - 1) { - ?> - - 0) { ?> - +
+
, - - - - - - - - Pseudonym
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
teamspiel_nummer ?> + + + + heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) { + ?> + + + +
" + style="text-align: center"> + heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 30, 40, 0, 0, 'border="1"'); + if ($bild == null) + $bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, 'border="1"', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) + echo $bild; + ?> + + heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_mitglied_id, 30, 40, 0, 0, 'border="1"'); + if ($bild == null) + $bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, 'border="1"', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) + echo $bild; + ?> +
+
+ heim_spieler_1_id != null && $spiel->heim_spieler_1_id != 0) { + ?>heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); ?> + heim_spieler_2_id != null && $spiel->heim_spieler_2_id != 0) { + ?>
heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); ?> + +
ergebnis_detailliert); ?> + gast_spieler_1_id != null && $spiel->gast_spieler_1_id != 0) { + ?>gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); ?> + gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0) { + ?>
gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); ?> + +
+ + + + heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) { + ?> + + + +
" + style="text-align: center"> + gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_mitglied_id, 30, 40, 0, 0, 'border="1"'); + if ($bild == null) + $bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, 'border="1"', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) + echo $bild; + ?> + + gast_spieler_2_bild_ausblenden) && ($spiel->gast_spieler_2_mitglied_id != null || ($spiel->gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0))) { + $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 30, 40, 0, 0, 'border="1"'); + if ($bild == null) + $bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, 'border="1"', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) + echo $bild; + } + ?> +
+
+
+   - - 0) { - ?> - - - - - 0) { - ?> - - - - - - + } - - - - - - + /** + * @param $veranstaltung + * @param $modus + * @param $teams + * @param $spieltag + * @param $spieltage + * @param $alleine_angezeigt + * @param int $praesentation + * @since 1.0.0 + */ + static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, int $praesentation = 0): void + { + global $params; - - - - -
- nachname . ", " . $row->vorname) : ($row->vorname . " " . $row->nachname))); ?> - - bild_ausblenden ? '' : $row->spieler_id, 30, 40, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) - echo $bild; - ?> + if (count($teams) > 0) { + if ($alleine_angezeigt && $veranstaltung->tabellenwertung >= -1 && $veranstaltung->tabellenwertung <= 11 && count($spieltage) > 1) { + ?> +
+
+ + + + +
+ +
+
+ + +
+ team_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } else if (bildHTML("vereine", $team->verein_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } + } + + $zusatzpunkte_anzeigen = false; + if ($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { + foreach ($teams as $team) { + if ($team->zusatzpunkte != 0) { + $zusatzpunkte_anzeigen = true; + break; + } + } + } + + ?> + + +
+ + + + + + + + + + + + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { + if ($alleine_angezeigt && $praesentation == 0) { + ?> + + + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { + if ($alleine_angezeigt && $praesentation == 0 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { + ?> + + + + tabellenwertung >= 21) { + ?> + + + tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { + ?> + + + + + + - + gesamtpunkte); + $zusatzpunkte = floatval($team->zusatzpunkte); + $punkte_quotient = $team->punkte_quotient; + $punkte_differenz = $team->punkte_differenz; + $punkte_gewonnen = $team->punkte_gewonnen; + $punkte_verloren = $team->punkte_verloren; + $spielpunkte_quotient = $team->spielpunkte_quotient; + $spielpunkte_differenz = $team->spielpunkte_differenz; + $spielpunkte_gewonnen = $team->spielpunkte_gewonnen; + $spielpunkte_verloren = $team->spielpunkte_verloren; + if ($veranstaltung->tabellenwertung >= 21) { + $buchholz1_wert = $team->buchholz1; + $buchholz2_wert = $team->buchholz2; + } + ?> + + + + + + + + + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { + $title = ""; + if ($alleine_angezeigt && $praesentation == 0) { + ?> + + + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { + $title = ""; + if ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) { + if ($alleine_angezeigt && $praesentation == 0) { + ?> + + + + tabellenwertung >= 21) { + ?> + + + tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) { + ?> + + + + +
+ + + + + + + + punktetyp == 0 ? Text::_('COM_SPORTSMANAGER_GOALS') : Text::_('COM_SPORTSMANAGER_SETS'); ?>
+ +
+ punktetyp == 0 ? Text::_('COM_SPORTSMANAGER_GOALS') : Text::_('COM_SPORTSMANAGER_SETS'); ?> + +
+ +
+ + + + +
+ tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) + || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) + || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) + || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) + $tatsaechlicher_platz = $platz; + echo $tatsaechlicher_platz; + ?> + + + + + + + + +
+ team_id) . "\">" . htmlentities_utf8(NichtLeererString($team->teamname)) . ""; + ?> + + team_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) { + echo $bild; + } else if ($team->verein_id != null) { + $bild = bildHTML("vereine", $team->verein_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + } + ?> +
+ +
siege + $team->unentschieden + $team->niederlagen; ?>siege; ?>unentschieden; ?>niederlagen; ?> + + > + tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) + echo ($punkte_differenz >= 0 ? "+" : "") . $punkte_differenz; + else + echo $punkte_quotient == -1 ? "∞" : sprintf("%.2f", $punkte_quotient); + ?> + + + > + tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) + echo ($spielpunkte_differenz >= 0 ? "+" : "") . $spielpunkte_differenz; + else + echo $spielpunkte_quotient == -1 ? "∞" : sprintf("%.2f", $spielpunkte_quotient); + ?> + buchholz2; ?>buchholz1; ?>
+
+ +
+ + + + +
+ + +
+
+ +   + 0) { + $bilder_anzeigen = false; + foreach ($teams as $team) { + if (bildHTML("mannschaften", $team->team_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } else if (bildHTML("vereine", $team->verein_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } + } + + ?> + +
+ + + + + + platz == null; + $platz = -1; + $k = 0; + foreach ($teams + + as $team) { + if ($laufende_veranstaltung && $team->platz != $platz && $team->platz == null) { + ?> + + + + + + + + + + + + letzter_spieltag); + ?> + + + + + + +
+
+ +
+ platz != $platz) { + if ($team->platz != null) + echo $team->platz; + $platz = $team->platz; + } + ?> + + + + + + + + + +
+ team_id) . "\">" . htmlentities_utf8(NichtLeererString($team->teamname)) . ""; + ?> + + team_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) { + echo $bild; + } else if ($team->verein_id != null) { + $bild = bildHTML("vereine", $team->verein_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + } + ?> +
+ +
+ letzter_spieltag; + ?> + + zuletzt_gewonnen; + ?> + + +
+
+ +
+ + + + +
+ + +
+
+ 0 || !$alleine_angezeigt) { + ?> +   + +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0) { + ?> +
+
+ + + + +
+ + + +
+
+ +
+ +
+ + + + +
+ bezeichnung); ?> +
+
+ 0) { + $bilder_anzeigen = false; + foreach ($rows as $team) { + if (bildHTML("mannschaften", $team->team_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } else if ($team->verein_id != null && bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"') != null) { + $bilder_anzeigen = true; + break; + } + } + + $heimspielort_anzeigen = false; + foreach ($rows as $team) { + if (!empty($team->name)) { + $heimspielort_anzeigen = true; + break; + } + } + + $tischtyp_anzeigen = false; + foreach ($rows as $team) { + if (!empty($team->tischtyp)) { + $tischtyp_anzeigen = true; + break; + } + } + + $wettbewerb_anzeigen = false; + $team_name = null; + $team_veranstaltung_id = 0; + foreach ($rows as $team) { + if ($team->teamname == $team_name && $team->veranstaltung_id != $team_veranstaltung_id) { + $wettbewerb_anzeigen = true; + break; + } + $team_name = $team->teamname; + $team_veranstaltung_id = $team->veranstaltung_id; + } + + ?> + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + +
+ teamname)); ?> + + team_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + else if ($row->verein_id != null) { + $bild = bildHTML("vereine", $row->verein_id, 50, 50, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + } + + ?> +
+ +
bezeichnung)) echo htmlentities_utf8($row->bezeichnung); ?>name)) echo htmlentities_utf8($row->name); ?>tischtyp)) echo htmlentities_utf8($row->tischtyp); ?>
+
+ +   + + + + + + + + + + + + + + + +
+ + > bezeichnung); ?> > teamname); ?> + +   + + + < + +   + + + > +
+ +
+ + + + +
+
+

teamname); ?>

+
+
+
+ + team_id, 0, 0, 240, 240, 'border="0"'); + if ($bild != null) { + ?> +
+ + + + +
+
+   + verein_id != null) { + $bild = bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"'); + if ($bild != null) { + ?> +
+ + + + +
+
+   + spieler_id])) { + foreach ($spielberechtigungen[$row->spieler_id] as $spielberechtigung) { + if ($spielberechtigung[2] == -1 || !empty($spielberechtigung[3])) { + $mitglied_dauerhaft = false; + break; + } + } + } + $mitglieder_ist_dauerhaft[$row->spieler_id] = $mitglied_dauerhaft; + if ($mitglied_dauerhaft) + $mitglieder_dauerhaft++; + else + $mitglieder_voruebergehend++; + } + + for ($mitglieder_modus = 0; $mitglieder_modus <= 1; $mitglieder_modus++) { + if (($mitglieder_modus == 0 && $mitglieder_dauerhaft > 0) + || ($mitglieder_modus == 1 && $mitglieder_voruebergehend > 0)) { + ?> +
+ + + + +
+
+ +
+ + + spieler_id]) + || ($mitglieder_modus == 1 && $mitglieder_ist_dauerhaft[$row->spieler_id])) + continue; + if ($n % 3 == 0 && $n != 0) + echo ""; + + echo ""; + echo " +
get('pageclass_sfx') . "\">"; + echo ""; + echo ""; + if ($team_moderator) { + if (!empty($row->geburtsdatum)) { + echo ""; + } + if (!empty($row->strasse) || + !empty($row->plz) || !empty($row->ort)) { + echo ""; + } + if (!empty($row->telefon) || + !empty($row->mobil) || + !empty($row->email)) { + echo ""; + } + } + if (isset($spielberechtigungen[$row->spieler_id])) { + echo ""; + } + echo "
"; + if (empty($row->aktueller_verein_id)) + echo htmlentities_utf8($row->nachname . ", " . $row->vorname); + else { + ?>nachname . ", " . $row->vorname)); ?>spielernr)) + echo "
" . htmlentities_utf8($row->spielernr) . ""; + echo "
"; + echo "" . htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false)) . ""; + echo "
"; + if (!empty($row->strasse)) + echo "" . htmlentities_utf8($row->strasse) . "
"; + if (!empty($row->plz) || !empty($row->ort)) + echo "" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . ""; + echo "
"; + if (!empty($row->telefon)) + echo "" . htmlentities_utf8($row->telefon) . "
"; + if (!empty($row->mobil)) + echo "" . htmlentities_utf8($row->mobil) . "
"; + if (!empty($row->email)) { + $replacement = HTMLHelper::_('email.cloak', $row->email, 1, $row->email, 0); + echo "" . $replacement . ""; + } + echo "
"; + foreach ($spielberechtigungen[$row->spieler_id] as $spielberechtigung) { + echo ""; + if (isset($veranstaltungsbezeichnungen[$spielberechtigung[0]])) { + echo htmlentities_utf8($veranstaltungsbezeichnungen[$spielberechtigung[0]]) . ": "; + } + if ($spielberechtigung[2] == -1) // Ohne Spielberechtigung + echo "Nicht spielberechtigt"; + else if (empty($spielberechtigung[3])) // Letzter Spieltag ohne Einschränkung + echo "Ab " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); + else if ($spielberechtigung[2] < 2) // Erster Spieltag ohne Einschränkung + echo "Bis " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); + else if ($spielberechtigung[2] == $spielberechtigung[3]) // Erster Spieltag und letzter Spieltag gleich + echo "Während " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); + else + echo htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)) . " bis " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); + echo "
"; + } + echo "
get('pageclass_sfx') . "\">"; + $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->mitglied_von_team_id, 90, 120, 0, 0, 'border="1"'); + if ($bild == null) + $bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) { + ?> + + + + +
+ "; + $n++; + } + ?> +
+
+   + + +
+ + + + +
+ Informationen +
+
+ +
+ + + + + + + verein_id != null) { + ?> + + + + + veranstalterbezeichnung != null) { + ?> + + + + + tischtyp) || !empty($team->tischeigenschaften)) { + ?> + + + + + heimspiel_wochentag >= 1 && $team->heimspiel_wochentag <= 7) { + ?> + + + + + name)) { + ?> + + + + + nichtraucherschutz != 0) { + ?> + + + + + 0 && $ansprechpartner_anzeigen) { + ?> + + + + + heimspielort_name)) { + ?> + + + + + 0) { + ?> + + + + + +
+ zusatzpunkte != 0) { + ?> +
+ + : + zusatzpunkte); ?>
+ : + vereinsname); ?>
+ + : + veranstalterbezeichnung); ?>
+ + : + + tischtyp)) + echo htmlentities_utf8($team->tischtyp); + if (!empty($team->tischeigenschaften)) { + if (!empty($team->tischtyp)) + echo "
"; + echo htmlentities_utf8($team->tischeigenschaften); + } + ?> +
+ : + heimspiel_wochentag - 1] . " ab " . sprintf("%2d:%02d", floor($team->heimspiel_uhrzeit / 100), $team->heimspiel_uhrzeit % 100) . " " . Text::_('COM_SPORTSMANAGER_HOUR'); + ?> +
+ + : + url; + if (!empty($heimspielort_url) && !str_contains($heimspielort_url, "://")) + $heimspielort_url = "http://" . $heimspielort_url; + if (!empty($heimspielort_url)) + echo "" . htmlentities_utf8($team->name) . ""; + else + echo htmlentities_utf8($team->name); + $anschrift = $team->strasse . (!empty($team->strasse) && (!empty($team->plz) || !empty($team->ortsname) || !empty($team->ortsteil)) ? ", " : "") . $team->plz . (!empty($team->plz) ? " " : "") . $team->ortsname . (!empty($team->ortsname) && !empty($team->ortsteil) ? "-" : "") . $team->ortsteil; + echo "
" . htmlentities_utf8($anschrift); + ?> +
+ + : + nichtraucherschutz]); + ?> +
+ + : + + = 2) + echo Text::_('COM_SPORTSMANAGER_REPRESENTATION') . ": "; + echo htmlentities_utf8($row->vorname . " " . $row->nachname); + if (strlen($row->email) > 0) + echo ", " . HTMLHelper::_('email.cloak', $row->email); + if ($details_anzeigen && $row->telefon) + echo ", " . htmlentities_utf8($row->telefon); + if ($details_anzeigen && $row->mobil) + echo ", " . htmlentities_utf8($row->mobil); + echo "
"; + $nummer++; + } + ?> +
Heimspielstätte: + heimspielort_name); ?> +
+ : + bezeichnung) . "
"; + ?> +
+
+   + + 0) { + $zeitpunkt_anzeigen = false; + foreach ($begegnungen as $begegnung) { + if (!empty($begegnung->zeitpunkt)) { + $zeitpunkt_anzeigen = true; + break; + } + } + $bilder_anzeigen = false; + foreach ($begegnungen as $begegnung) { + if (bildHTML("mannschaften", $begegnung->gegner_id, 28, 28)) { + $bilder_anzeigen = true; + break; + } else if ($begegnung->gegner_verein_id != null && bildHTML("vereine", $begegnung->gegner_verein_id, 28, 28)) { + $bilder_anzeigen = true; + break; + } + } + $heimspielort_anzeigen = false; + foreach ($begegnungen as $begegnung) { + if (!empty($begegnung->heimspielort_name)) { + $heimspielort_anzeigen = true; + break; + } + } + + ?> + veranstaltung_id) { + if ($veranstaltung_id != -1) { + ?> +
+   + veranstaltung_id; + ?> +
+ + + + +
+
+ +
+ + + unterteilung == 0 || $row->unterteilung == 1) { + ?> + + + + + + + + spielpunkte_wertung_einzel != 2 || $row->spielpunkte_wertung_doppel != 2) { + ?> + + + + + heim_punkte != null || $row->gast_punkte != null; + ?> + + unterteilung == 0 || $row->unterteilung == 1) { + ?> + + + + + + + - - - 0) { - ?> - - 0) { - ?> - - 0) { - ?> - - 0) { - ?> - - 1) { - ?> - - 0) { - ?> - - - - 0) { - ?> - - - 0) { - ?> - - - + + + + spielpunkte_wertung_einzel != 2 || $row->spielpunkte_wertung_doppel != 2) { + ?> + + + - -
unterteilung == 0 ? "Spieltag" : "Runde"; ?> + KontrahentPunkte
+ spieltag, $row->unterteilung == 0, true)); + ?> + + veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . FormatiertesDatum($row->zeitpunkt) . ""; + else + echo $row->verlegung_eingetragen != null ? ("bisher " . FormatiertesDatum($row->zeitpunkt)) : FormatiertesDatum($row->zeitpunkt); + if (!empty($row->tisch) && (!$ergebnis_vorhanden || $row->zwischenergebnis)) + echo "
" . Text::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; + echo "
" . htmlentities_utf8($row->auswaerts ? Text::_('COM_SPORTSMANAGER_AWAY_MATCH') : Text::_('COM_SPORTSMANAGER_HOME_MATCH')) . ($row->nichtraucherschutz != 0 ? htmlentities_utf8($row->nichtraucherschutz == 1 ? Text::_('COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_NO') : Text::_('COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_YES')) : "") . ""; + ?> +
+ + + + + + + +
gegner_id) . "\">" . htmlentities_utf8(NichtLeererString($row->gegner)) . ""; + ?> + + gegner_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + else if ($row->gegner_verein_id != null) { + $bild = bildHTML("vereine", $row->gegner_verein_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + } + ?> +
geschlecht); ?>kategorie); ?>einstufung_allgemein_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_allgemein_id]) : "-"; ?>einstufung_einzel_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_einzel_id]) : "-"; ?>einstufung_doppel_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_doppel_id]) : "-"; ?>vereinsname != null ? htmlentities_utf8($row->vereinsname) : "-"; ?>veranstalterbezeichnung != null ? htmlentities_utf8($row->veranstalterbezeichnung) : "-"; ?>pseudonym != NULL ? htmlentities_utf8($row->pseudonym) : ""; ?>teamname != null ? htmlentities_utf8($row->teamname) : ""; ?>elo_einzel_spiele != 0 ? $row->elo_einzel : "-"; ?>elo_einzel_spiele; ?>elo_doppel_spiele != 0 ? $row->elo_doppel : "-"; ?>elo_doppel_spiele; ?> + heimspielort_url; + if (!empty($heimspielort_url) && !str_contains($heimspielort_url, "://")) + $heimspielort_url = "http://" . $heimspielort_url; + if (!empty($heimspielort_url)) + echo "" . htmlentities_utf8($row->heimspielort_name) . ""; + else + echo htmlentities_utf8($row->heimspielort_name); + $anschrift = $row->heimspielort_strasse . (!empty($row->heimspielort_strasse) && (!empty($row->heimspielort_plz) || !empty($row->heimspielort_ortsname) || !empty($row->heimspielort_ortsteil)) ? ", " : "") . $row->heimspielort_plz . (!empty($row->heimspielort_plz) ? " " : "") . $row->heimspielort_ortsname . (!empty($row->heimspielort_ortsname) && !empty($row->heimspielort_ortsteil) ? "-" : "") . $row->heimspielort_ortsteil; + if (!empty($anschrift)) + echo (!empty($row->heimspielort_name) ? "
" : "") . "" . htmlentities_utf8($anschrift) . ""; + + } else { + echo htmlentities_utf8($row->heimspielort_name); + } + + if ($row->spielort_id == 0 && !empty($row->tischtyp)) + echo "
" . htmlentities_utf8($row->tischtyp) . ""; + if ($row->spielort_id == 0 && !empty($row->tischeigenschaften)) + echo "
" . htmlentities_utf8($row->tischeigenschaften) . ""; + ?> +
+ veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . ($row->auswaerts ? ($row->gast_punkte . ":" . $row->heim_punkte) : ($row->heim_punkte . ":" . $row->gast_punkte)) . ""; + if ($row->unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; + } + ?> +
+ veranstaltung_id . '&teamid=' . $team->team_id . '&id=' . $row->begegnung_id) . "\">" . ($row->auswaerts ? ($row->gast_spielpunkte . ":" . $row->heim_spielpunkte) : ($row->heim_spielpunkte . ":" . $row->gast_spielpunkte)) . ""; + if ($row->unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; + } + ?> +
-   - -
- - - -
- -
-   - - - - - - - - - - - - - -
  - - < -   - - > -
- -
- - - -
-
-

vorname . " " . $spieler->nachname); ?>

-
-
- - bild_ausblenden ? '' : $spieler->spieler_id, 0, 0, 180, 240, 'border="1"', $spieler->geschlecht == 'M' ? 'm' : 'w'); - if ($bild != null) { - ?> -
- - - -
+ +   - + team_id)); + } -
- - - -

-
- JText::_('COM_SPORTSMANAGER_CATEGORY_MEN'), 'D' => JText::_('COM_SPORTSMANAGER_CATEGORY_WOMEN'), 'J' => JText::_('COM_SPORTSMANAGER_CATEGORY_JUNIORS'), 'S' => JText::_('COM_SPORTSMANAGER_CATEGORY_SENIORS')); - if (isset($kategorie_bezeichnung[$spieler->kategorie])) { - ?> - - - - - einstufung_allgemein_id != null) { - ?> - - - - - einstufung_einzel_id != null) { - ?> - - - - - einstufung_doppel_id != null) { - ?> - - - - - 0 && $spieler->elo_einzel_spiele != 0) { - ?> - - - - - 0 && $spieler->elo_doppel_spiele != 0) { - ?> - - - - - 0) { - ?> - - - - - - - - - - - - - - - - - - - spielernr != null && $spieler->spielernr != "") { - ?> - - - - - lizenznr != null && $spieler->lizenznr != "") { - ?> - - - - - lizenz != null && $spieler->lizenz != "" && $lizenz_anzeigen) { - ?> - - - - - pseudonym != NULL) { - ?> - - - elo_wertung && ($statistik["elo_einzel"] > 0 || $statistik["elo_doppel"] > 0)) { - ?> - 0) { - ?> - - - 0) { - ?> - - - - - - - - - -
:kategorie]); ?>
:einstufung_allgemein_id]); ?>
- :einstufung_einzel_id]); ?>
- :einstufung_doppel_id]); ?>
- : - elo_einzel_spiele == 1 ? JText::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_einzel) : JText::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_einzel, elo_einzel_spiele)); - ?> -
- : - elo_doppel_spiele == 1 ? JText::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_doppel) : JText::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_doppel, elo_doppel_spiele)); - ?> -
:
- : - vereinsname) . "
"; - ?> -
- : - veranstalterbezeichnung) . "
"; - ?> -
- 0) echo JText::_('COM_SPORTSMANAGER_NATIONAL') . " "; echo JText::_('COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT') ?>:spielernr); ?>
- 0) echo JText::_('COM_SPORTSMANAGER_INTERNATIONAL') . " "; echo JText::_('COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT') ?>:lizenznr); ?>
- :lizenz); ?>
Pseudonym:pseudonym); ?>
Elo-Wert Einzel:elo_einzel_spiele != 0 ? $spieler->elo_einzel : "ohne"; ?>
Gewertete Einzel-Spiele:elo_einzel_spiele != 0 ? $spieler->elo_einzel_spiele : "keine"; ?>
Elo-Wert Doppel:elo_doppel_spiele != 0 ? $spieler->elo_doppel : "ohne"; ?>
Gewertete Doppel-Spiele:elo_doppel_spiele != 0 ? $spieler->elo_doppel_spiele : "keine"; ?>
Erstmals gespielt:erstmals_gespielt != NULL ? htmlentities_utf8(FormatiertesDatum($spieler->erstmals_gespielt, false)) : "Nie"; ?>
Zuletzt gespielt:zuletzt_gespielt != NULL ? htmlentities_utf8(FormatiertesDatum($spieler->zuletzt_gespielt, false)) : "Nie"; ?>
-   - - 0) { - ?> -
- - - -

- -
-
- - - - - - saisonbezeichnung) { - $saisonbezeichnung = $platzierung->saisonbezeichnung; - ?> + if ($team_moderator && !is_null($mitglieder_statistiken) && count($mitglieder_statistiken) > 0) { + $elo_einzel = false; + $elo_doppel = false; + foreach ($mitglieder_statistiken as $mitglied) { + if ($mitglied->elo_einzel_spiele != 0) + $elo_einzel = true; + if ($mitglied->elo_doppel_spiele != 0) + $elo_doppel = true; + if ($elo_einzel && $elo_doppel) + break; + } + ?> +
+
- - - - - - - - - - - erster_tag, false, false)) . " - " . htmlentities_utf8(FormatiertesDatum($platzierung->letzter_tag, false, false)); ?> */ ?> - - -
- -
bezeichnung != null ? htmlentities_utf8($platzierung->bezeichnung) : ""; ?>platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?>teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?>
-   - 0) { - ?> -
- - - -

- -
-
- - - - - - - - - saisonbezeichnung) { - $saisonbezeichnung = $platzierung->saisonbezeichnung; - ?> - - - - - - - - - - - - - - - - -
- -
turnierbezeichnung != null ? htmlentities_utf8($platzierung->turnierbezeichnung) : ""; ?>beginn == null ? "" : htmlentities_utf8(FormatiertesDatum($platzierung->beginn, false)); ?>turnierort != null ? htmlentities_utf8($platzierung->turnierort) : ""; ?>disziplin != null ? htmlentities_utf8($platzierung->disziplin) : ""; ?>platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?>teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?>
-
-   - 0) { - ?> -
- - - -

- -
- - - - - saisonbezeichnung) { - $saisonbezeichnung = $team->saisonbezeichnung; - ?> - - - - - - - - - - - - -
- -
teamname); ?>wettbewerbe); ?>
-   - 0) { - $n = count($spieler_elo_verlauf_einzel); - - $erstes = max($n - 100, 0); - $elo_anzeigen = false; - for ($i = $n - 1; $i >= $erstes; $i--) { - $spiel = $spieler_elo_verlauf_einzel[$i]; - if (isset($spiel["h1r"])) { - $elo_anzeigen = true; - break; - } - } - ?> -
- - - -

-
- -
- - - - - - - - - - - = $erstes; $i--) { - $spiel = $spieler_elo_verlauf_einzel[$i]; - ?> - - - spieler_id) { - ?> - - - - - - - - - - - - - - - - -
+
-
- -
-
- - "> - " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; - if ($elo_wertung) { - ?> -
- - +
+ Mitgliederstatistik zum Wettbewerb - - "> - " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
0 ? "+" : "") . $r_delta; - } else echo "-"; ?> - - "> - " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
- - "> - " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
0 ? "+" : "") . $r_delta; - } else echo "-"; ?>
- ($elo_detailliert ? 100 : 8)) { - ?> -
- - - -
- - -
- -   - + +
- if (count($spieler_elo_verlauf_doppel) > 0) { - $n = count($spieler_elo_verlauf_doppel); +
+ + + + + + + + + + + + + + + + + + + + + + + + = $erstes; $i--) { - $spiel = $spieler_elo_verlauf_doppel[$i]; - if (isset($spiel["h1r"])) { - $elo_anzeigen = true; - break; - } - } - ?> -
+ + + + + + + + + + + + + + + + +
- - - -

-
- -
- - - - - - - - - - - = $erstes; $i--) { - $spiel = $spieler_elo_verlauf_doppel[$i]; - ?> - - - spieler_id || $spiel["h2"] == $spieler->spieler_id) { - ?> - - - - - + $k = 0; + foreach ($mitglieder_statistiken as $row) { + ?> + + + - - - - - - + style="text-align: center">einzel_punkte_gesamt > 0 ? round($row->einzel_punkte * 100 / $row->einzel_punkte_gesamt) . "%" : "-"; ?> + + + + + + - - - -
+
-
- -
-
- - "> - / "> - " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
- - "> - / "> - " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
spieler_id ? ($spiel["h1rn"] - $spiel["h1r"]) : ($spiel["h2rn"] - $spiel["h2r"]); - echo ($r_delta > 0 ? "+" : "") . $r_delta; - } else echo "-"; ?>
nachname) . ", " . htmlentities_utf8($row->vorname); ?>einzel_spiele; ?> spieler_id ? $spiel["h1rn"] : $spiel["h2rn"]; else echo "-"; ?> - - "> - / "> - " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
- - "> - / "> - " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; - if ($elo_wertung) { - ?> -
- - -
spieler_id ? ($spiel["g1rn"] - $spiel["g1r"]) : ($spiel["g2rn"] - $spiel["g2r"]); - echo ($r_delta > 0 ? "+" : "") . $r_delta; - } else echo "-"; ?>einzel_siege; ?>einzel_unentschieden; ?>einzel_niederlagen; ?>elo_einzel_spiele != 0 ? $row->elo_einzel : "-"; ?>doppel_spiele; ?> spieler_id ? $spiel["g1rn"] : $spiel["g2rn"]; else echo "-"; ?>
- ($elo_detailliert ? 100 : 8)) { - ?> -
- - - -
- - -
- -   - doppel_punkte_gesamt > 0 ? round($row->doppel_punkte * 100 / $row->doppel_punkte_gesamt) . "%" : "-"; ?> + doppel_siege; ?> + doppel_unentschieden; ?> + doppel_niederlagen; ?> + + elo_doppel_spiele != 0 ? $row->elo_doppel : "-"; ?> + gesamt_spiele; ?> + gesamt_punkte_gesamt > 0 ? round($row->gesamt_punkte * 100 / $row->gesamt_punkte_gesamt) . "%" : "-"; ?> + gesamt_siege; ?> + gesamt_unentschieden; ?> + gesamt_niederlagen; ?> + + + + +   + +
+ + + + +
+ +
+
- function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $aus_uebersicht, $vorschlagendes_team_id) { - global $params; - global $view; - ?> -
teamname; ?> teamname ?> bezeichnung); ?> - :
+
+ + + + + + + + + + + +
+ + + "> + + +
+
+   + " method="post" name="adminForm" id="adminForm"> -
- - + + +
-
+ static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen): void + { + global $params; + + if (!empty($titel)) { ?> +
+
+
- + +
- : + ") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0) { + $bilder_anzeigen = false; + foreach ($rows as $verein) { + if (bildHTML("vereine", $verein->verein_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } + } + + if ($organisationAnzeigen) { + $organisation = $rows[0]->veranstalterbezeichnung; + ?> +
+ + + + +
+ +
+
+ +
+ + + + + + veranstalterbezeichnung != $organisation) { + $organisation = $row->veranstalterbezeichnung; + ?> +
+   + +
+ + + + +
+ +
+
+ +
+ + + + + + + + + + +
+ +
+ + + + + + + + +
+ vereinsname)); ?> + + verein_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + ?> +
+ +
vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?>
+ +   + + + + + + + + + + + + + + + +
+ + + > vereinsname); ?> + +   + + + < + +   + + + > +
+ +
+ + + + +
+
+

vereinsname); ?>

+
+
+
+ + verein_id, 0, 0, 240, 240, 'border="0"'); + if ($bild != null) { + ?> +
+ + + + +
+
+   + + +
+ + + + + + + veranstalterbezeichnung != null) { + ?> + + + + + url)) { + ?> + + + + + beschreibung)) { + ?> + + + + + + +*/ + if (count($vereinsansprechpartner) > 0 && $ansprechpartner_anzeigen) { + ?> + + + + + +
+ vereinssitz)) { + ?> +
+ + :vereinssitz . (!empty($verein->vereinssitz_ortsteil) ? ("-" . $verein->vereinssitz_ortsteil) : "")); ?>
+ + : + veranstalterbezeichnung); ?>
+ + : + url, "://")) { + $verein_url_anzeige = $verein->url; + $verein_url = "http://" . $verein->url; + } else { + $verein_url_anzeige = str_starts_with($verein->url, "http://") ? substr($verein->url, 7) : $verein->url; + $verein_url = $verein->url; + } + echo "" . htmlentities_utf8($verein_url_anzeige) . ""; + ?> +
+ + : + beschreibung)); ?>
Heimspielstätte: + heimspielort_url) > 0) + echo "heimspielort_url) . "\">" . htmlentities_utf8($verein->heimspielort_name) . ""; + else + echo htmlentities_utf8($verein->heimspielort_name); + + if (strlen($verein->heimspielort_anschrift) > 0) { + if (strlen($verein->heimspielort_anschrift_url) > 0) + echo "
heimspielort_anschrift_url) . "\">" . htmlentities_utf8($verein->heimspielort_anschrift) . ""; + else + echo "
" . htmlentities_utf8($verein->heimspielort_anschrift); + } + ?> +
+ + : + = 2) + echo Text::_('COM_SPORTSMANAGER_REPRESENTATION') . ": "; + echo htmlentities_utf8($row->vorname . " " . $row->nachname); + if (strlen($row->email) > 0) + echo "," . HTMLHelper::_('email.cloak', $row->email); + if ($details_anzeigen && $row->telefon) + echo ", " . htmlentities_utf8($row->telefon); + if ($details_anzeigen && $row->mobil) + echo ", " . htmlentities_utf8($row->mobil); + echo "
"; + $nummer++; + } + ?> +
+
+   + + 0) { + $heimspielort_anzeigen = false; + foreach ($aktuelle_teams as $team) { + if (!empty($team->name)) { + $heimspielort_anzeigen = true; + break; + } + } + ?> +
+ + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
+
teamname); ?>wettbewerbe); ?> + name); + $anschrift = $team->strasse . (!empty($team->strasse) && (!empty($team->plz) || !empty($team->ortsname) || !empty($team->ortsteil)) ? ", " : "") . $team->plz . (!empty($team->plz) ? " " : "") . $team->ortsname . (!empty($team->ortsname) && !empty($team->ortsteil) ? "-" : "") . $team->ortsteil; + if (!empty($anschrift)) + echo "
" . htmlentities_utf8($anschrift) . ""; + if (!empty($team->tischtyp)) + echo "
" . htmlentities_utf8($team->tischtyp) . ""; + if (!empty($team->tischeigenschaften)) + echo "
" . htmlentities_utf8($team->tischeigenschaften) . ""; + ?> +
+
+   + 0) { + ?> +
+ + + + +
+
+ +
+ + + "; + + echo ""; + echo " +
get('pageclass_sfx') . "\">"; + echo ""; + echo ""; + if ($vereins_moderator) { + if (!empty($row->geburtsdatum)) { + echo ""; + } + if (!empty($row->strasse) || + !empty($row->plz) || !empty($row->ort)) { + echo ""; + } + if (!empty($row->telefon) || + !empty($row->mobil) || + !empty($row->email)) { + echo ""; + } + } + echo "
"; + ?>nachname . ", " . $row->vorname); ?>spielernr)) + echo "
" . htmlentities_utf8($row->spielernr) . ""; + echo "
"; + echo "" . htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false)) . ""; + echo "
"; + if (!empty($row->strasse)) + echo "" . htmlentities_utf8($row->strasse) . "
"; + if (!empty($row->plz) || !empty($row->ort)) + echo "" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . ""; + echo "
"; + if (!empty($row->telefon)) + echo "" . htmlentities_utf8($row->telefon) . "
"; + if (!empty($row->mobil)) + echo "" . htmlentities_utf8($row->mobil) . "
"; + if (!empty($row->email)) { + $replacement = HTMLHelper::_('email.cloak', $row->email, 1, $row->email, 0); + echo "" . $replacement . ""; + } + echo "
get('pageclass_sfx') . "\">"; + $bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) { + ?> + + + + +
+ "; + $n++; + } + ?> +
+
+ +   + + +   + 0) { + ?> +
+ + + + +
+
+ +
+ + + + + + saisonbezeichnung) { + $saisonbezeichnung = $team->saisonbezeichnung; + ?> + + + + + + + + + + + + +
+ +
teamname); ?>wettbewerbe); ?>
+
+   + +
+ + + + +
+ +
+
+ +
+ + + + + + + + + + + +
+ +
+ + + "> + + +
+
+   + +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0) { + $ortsname = $rows[0]->ortsname; + if (!empty($ortsname)) { + ?> +
+ + + + +
+ +
+
+ +
+ + + + + + ortsname != $ortsname) { + $ortsname = $row->ortsname; + ?> +
+   + + +
+ + + + +
+ +
+
+ + +
+ + + + + + + + + + +
+ + + + +
+ name)); ?> +
+
ortsname)) echo htmlentities_utf8($row->ortsname . (!empty($row->ortsteil) ? ("-" . $row->ortsteil) : "")); ?>
+ +   + + + + + + + + + + + + + + + +
+ + + > name); ?> + +   + + + < + +   + + + > +
+ +
+ + + + +
+
+

name); ?>

+
+
+
+ +
+ + + + +
+
+ +
+ + + + + + + url)) { + ?> + + + + + + + + + + beschreibung)) { + ?> + + + + + +
+ strasse . (!empty($spielort->strasse) && (!empty($spielort->plz) || !empty($spielort->ortsname) || !empty($spielort->ortsteil)) ? ", " : "") . $spielort->plz . (!empty($spielort->plz) ? " " : "") . $spielort->ortsname . (!empty($spielort->ortsname) && !empty($spielort->ortsteil) ? "-" : "") . $spielort->ortsteil; + if (!empty($anschrift)) { + ?> +
Anschrift:
Webseite: + url, "://")) { + $spielort_url_anzeige = $spielort->url; + $spielort_url = "http://" . $spielort->url; + } else { + $spielort_url_anzeige = str_starts_with($spielort->url, "http://") ? substr($spielort->url, 7) : $spielort->url; + $spielort_url = $spielort->url; + } + echo "" . htmlentities_utf8($spielort_url_anzeige) . ""; + ?> +
+ + :
+ + : + beschreibung)); ?>
+
+   + + 0) { + $tischtyp_anzeigen = false; + foreach ($aktuelle_teams as $team) { + if (!empty($team->tischtyp)) { + $tischtyp_anzeigen = true; + break; + } + } + + ?> +
+ + + + +
+
+ +
+ + + + + + + + + heimspiel_wochentag) { + if ($team->heimspiel_wochentag >= 1 && $team->heimspiel_wochentag <= 7) { + ?> + + + + + + + heimspiel_wochentag; + } + ?> + + + + + + + + +
+
+ heimspiel_wochentag - 1]); + ?> +
teamname); ?> + tischtyp)) + echo htmlentities_utf8($team->tischtyp); + ?> + wettbewerbe); ?>
+
+   + +
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0 || $statistik["einstufung_einzel"] > 0 || $statistik["einstufung_doppel"] > 0) && !empty($einstufungid)) || (count($veranstaltungen) > 0 && !empty($veranstaltungid)) || (count($veranstalter) > 0 && !empty($veranstalterid)); + ?> + +
+
+ + +
+
+ + /> +
+ +
+ + > + + + 0 || $statistik["einstufung_einzel"] > 0 || $statistik["einstufung_doppel"] > 0)) { + ?> + > + + + + 1) { + ?> + > + + + + 0) { + ?> + > + + + + +
+
+ + + +
+ 0) { + $bilder_anzeigen = false; + foreach ($rows as $spieler) { + if (bildHTML("spieler", !$details_anzeigen && $spieler->bild_ausblenden ? '' : $spieler->spieler_id, 30, 40, 0, 0, '', $spieler->geschlecht == 'M' ? 'm' : 'w') != null) { + $bilder_anzeigen = true; + break; + } + } + + ?> +
+ + + + + + + + + 0) { + ?> + + 0) { + ?> + + 0) { + ?> + + 0) { + ?> + + 1) { + ?> + + + + 0) { + ?> + + + 0) { + ?> + + + + + + + + + + + + + + 0) { + ?> + + 0) { + ?> + + 0) { + ?> + + 0) { + ?> + + 1) { + ?> + + + + 0) { + ?> + + + 0) { + ?> + + + + + +
, + + + + + + + + + + + + + +
+ + + + + + + + +
+ nachname . ", " . $row->vorname) : ($row->vorname . " " . $row->nachname))); ?> + + bild_ausblenden ? '' : $row->spieler_id, 30, 40, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) + echo $bild; + ?> +
+ +
geschlecht); ?>kategorie); ?>einstufung_allgemein_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_allgemein_id]) : "-"; ?>einstufung_einzel_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_einzel_id]) : "-"; ?>einstufung_doppel_id != null ? htmlentities_utf8($einstufungen[$row->einstufung_doppel_id]) : "-"; ?>vereinsname != null ? htmlentities_utf8($row->vereinsname) : "-"; ?>veranstalterbezeichnung != null ? htmlentities_utf8($row->veranstalterbezeichnung) : "-"; ?>teamname != null ? htmlentities_utf8($row->teamname) : ""; ?>elo_einzel_spiele != 0 ? $row->elo_einzel : "-"; ?>elo_einzel_spiele; ?>elo_doppel_spiele != 0 ? $row->elo_doppel : "-"; ?>elo_doppel_spiele; ?>
+
+   + +
+ + + + +
+ +
+
+   + + + + + + + + + + + + + +
+   + + + < + +   + + + > +
+ +
+ + + + +
+
+

vorname . " " . $spieler->nachname); ?>

+
+
+
+ + bild_ausblenden ? '' : $spieler->spieler_id, 0, 0, 180, 240, 'border="1"', $spieler->geschlecht == 'M' ? 'm' : 'w'); + if ($bild != null) { + ?> +
+ + + + +
+
+   + + +
+ + + + +

+
+
+ + Text::_('COM_SPORTSMANAGER_CATEGORY_MEN'), 'D' => Text::_('COM_SPORTSMANAGER_CATEGORY_WOMEN'), 'J' => Text::_('COM_SPORTSMANAGER_CATEGORY_JUNIORS'), 'S' => Text::_('COM_SPORTSMANAGER_CATEGORY_SENIORS')); + if (isset($kategorie_bezeichnung[$spieler->kategorie])) { + ?> + + + + + einstufung_allgemein_id != null) { + ?> + + + + + einstufung_einzel_id != null) { + ?> + + + + + einstufung_doppel_id != null) { + ?> + + + + + 0 && $spieler->elo_einzel_spiele != 0) { + ?> + + + + + 0 && $spieler->elo_doppel_spiele != 0) { + ?> + + + + + 0) { + ?> + + + + + + + + + + + + + + + + + + + spielernr != null && $spieler->spielernr != "") { + ?> + + + + + lizenznr != null && $spieler->lizenznr != "") { + ?> + + + + + lizenz != null && $spieler->lizenz != "" && $lizenz_anzeigen) { + ?> + + + + + pseudonym != NULL) { +?> + + +elo_wertung && ($statistik["elo_einzel"] > 0 || $statistik["elo_doppel"] > 0)) { +?> + 0) { + ?> + + + 0) { + ?> + + + + + + + + + +
+ + :kategorie]); ?>
+ + :einstufung_allgemein_id]); ?>
+ + :einstufung_einzel_id]); ?>
+ + :einstufung_doppel_id]); ?>
+ + : + elo_einzel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_einzel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_einzel)); + ?> +
+ + : + elo_doppel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_doppel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_doppel)); + ?> +
+ + :
+ + : + vereinsname) . "
"; + ?> +
+ + : + veranstalterbezeichnung) . "
"; + ?> +
+ 0) echo Text::_('COM_SPORTSMANAGER_NATIONAL') . " "; + echo Text::_('COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT') ?>:spielernr); ?>
+ 0) echo Text::_('COM_SPORTSMANAGER_INTERNATIONAL') . " "; + echo Text::_('COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT') ?>:lizenznr); ?>
+ :lizenz); ?>
Pseudonym:pseudonym); ?>
Elo-Wert Einzel:elo_einzel_spiele != 0 ? $spieler->elo_einzel : "ohne"; ?>
Gewertete Einzel-Spiele:elo_einzel_spiele != 0 ? $spieler->elo_einzel_spiele : "keine"; ?>
Elo-Wert Doppel:elo_doppel_spiele != 0 ? $spieler->elo_doppel : "ohne"; ?>
Gewertete Doppel-Spiele:elo_doppel_spiele != 0 ? $spieler->elo_doppel_spiele : "keine"; ?>
Erstmals gespielt:erstmals_gespielt != NULL ? htmlentities_utf8(FormatiertesDatum($spieler->erstmals_gespielt, false)) : "Nie"; ?>
Zuletzt gespielt:zuletzt_gespielt != NULL ? htmlentities_utf8(FormatiertesDatum($spieler->zuletzt_gespielt, false)) : "Nie"; ?>
+
+   + + 0) { + ?> +
+ + + + +

+
+
+ +
+
+ + + + + + + saisonbezeichnung) { + $saisonbezeichnung = $platzierung->saisonbezeichnung; + ?> + + + + + + + + + + + + erster_tag, false, false)) . " - " . htmlentities_utf8(FormatiertesDatum($platzierung->letzter_tag, false, false)); ?> */ ?> + + +
+ +
bezeichnung != null ? htmlentities_utf8($platzierung->bezeichnung) : ""; ?>platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?>teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?>
+
+   + 0) { + ?> +
+ + + + +

+
+
+ +
+
+ + + + + + + + + + saisonbezeichnung) { + $saisonbezeichnung = $platzierung->saisonbezeichnung; + ?> + + + + + + + + + + + + + + + + +
+ +
turnierbezeichnung != null ? htmlentities_utf8($platzierung->turnierbezeichnung) : ""; ?>beginn == null ? "" : htmlentities_utf8(FormatiertesDatum($platzierung->beginn, false)); ?>turnierort != null ? htmlentities_utf8($platzierung->turnierort) : ""; ?>disziplin != null ? htmlentities_utf8($platzierung->disziplin) : ""; ?>platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?>teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?>
+
+
+   + 0) { + ?> +
+ + + + +

+
+
+ +
+ + + + + + saisonbezeichnung) { + $saisonbezeichnung = $team->saisonbezeichnung; + ?> + + + + + + + + + + + + +
+ +
teamname); ?>wettbewerbe); ?>
+
+   + 0) { + $n = count($spieler_elo_verlauf_einzel); + + $erstes = max($n - 100, 0); + $elo_anzeigen = false; + for ($i = $n - 1; $i >= $erstes; $i--) { + $spiel = $spieler_elo_verlauf_einzel[$i]; + if (isset($spiel["h1r"])) { + $elo_anzeigen = true; + break; + } + } + ?> +
+ + + + +
+

+
+
+ +
+ + + + + + + + + + + + = $erstes; $i--) { + $spiel = $spieler_elo_verlauf_einzel[$i]; + ?> + + + spieler_id) { + ?> + + + + + + + + + + + + + + + + +
+ + +
+
+ +
+
+ + "> + " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
+ + "> + " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
0 ? "+" : "") . $r_delta; + } else echo "-"; ?> + + "> + " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
+ + "> + " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
0 ? "+" : "") . $r_delta; + } else echo "-"; ?>
+
+ 8) { + ?> +
+ + + + +
+ + +
+
+ +   + 0) { + $n = count($spieler_elo_verlauf_doppel); + + $erstes = max($n - 100, 0); + $elo_anzeigen = false; + for ($i = $n - 1; $i >= $erstes; $i--) { + $spiel = $spieler_elo_verlauf_doppel[$i]; + if (isset($spiel["h1r"])) { + $elo_anzeigen = true; + break; + } + } + ?> +
+ + + + +
+

+
+
+ +
+ + + + + + + + + + + + = $erstes; $i--) { + $spiel = $spieler_elo_verlauf_doppel[$i]; + ?> + + + spieler_id || $spiel["h2"] == $spieler->spieler_id) { + ?> + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ + "> + / + "> + " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
+ + "> + / + "> + " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
spieler_id ? ($spiel["h1rn"] - $spiel["h1r"]) : ($spiel["h2rn"] - $spiel["h2r"]); + echo ($r_delta > 0 ? "+" : "") . $r_delta; + } else echo "-"; ?>spieler_id ? $spiel["h1rn"] : $spiel["h2rn"]; else echo "-"; ?> + + "> + / + "> + " . htmlentities_utf8($teamNamen[$spiel["tg"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
+ + "> + / + "> + " . htmlentities_utf8($teamNamen[$spiel["th"]]) . ""; + if ($elo_wertung) { + ?> +
+ + +
spieler_id ? ($spiel["g1rn"] - $spiel["g1r"]) : ($spiel["g2rn"] - $spiel["g2r"]); + echo ($r_delta > 0 ? "+" : "") . $r_delta; + } else echo "-"; ?>spieler_id ? $spiel["g1rn"] : $spiel["g2rn"]; else echo "-"; ?>
+
+ 8) { + ?> +
+ + + + +
+ + +
+
+ +   + +
teamname; ?> teamname ?> bezeichnung); ?> + :
+ +
+
+ + + + +
+
+ + + + + + + aktion == 1 || $aktion->aktion == 5 || $aktion->aktion == 10) // akzeptiert, von Moderator eingetragen oder Verschiebung abgelehnt + break; + $letzte_verlegung_aktionen[] = $aktion; + } + + $termine = array(); + if (count($letzte_verlegung_aktionen) > 0) { + $eingetragen = $letzte_verlegung_aktionen[0]->eingetragen; + foreach ($letzte_verlegung_aktionen as $aktion) { + if ($aktion->eingetragen != $eingetragen || ($aktion->aktion != 0) || $aktion->zeitpunkt == null) // aktion == 1 <=> Akzeptiert + break; + $termine[] = $aktion; + } + } + + $berechtigt_anfordern = $veranstaltung->initial_ohne_termin != 1 && (count($letzte_verlegung_aktionen) == 0 || $letzte_verlegung_aktionen[0]->aktion == 1); + $berechtigt_vorschlagen = ($veranstaltung->initial_ohne_termin != 2 || (count($letzte_verlegung_aktionen) != 0 && $letzte_verlegung_aktionen[0]->aktion != 1)) && (!$veranstaltung->keine_gegenvorschlaege || count($letzte_verlegung_aktionen) == 0 || $letzte_verlegung_aktionen[0]->aktion != 3 || $letzte_verlegung_aktionen[0]->team_id != $vorschlagendes_team_id) && (count($termine) == 0 || !$veranstaltung->keine_gegenvorschlaege || $letzte_verlegung_aktionen[0]->team_id == $vorschlagendes_team_id); + $berechtigt_ablehnen = count($letzte_verlegung_aktionen) != 0 && ($letzte_verlegung_aktionen[0]->aktion == 0 || $letzte_verlegung_aktionen[0]->aktion == 3 || $letzte_verlegung_aktionen[0]->aktion == 4) && ((($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 3) && $berechtigt_fuer_akzeptieren) || (($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 2) && $berechtigt_vorschlagen)); + + if ($berechtigt_vorschlagen) { + $anzahl_moegliche_termine = $veranstaltung->termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; + ?> + + + + + + + kommentar)) { + ?> + + + + + + + + + + termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; + for ($termin = 1; + $termin <= count($termine); + $termin++) { + ?> + + + + + kommentar)) { + ?> + + + + + +
+ : + + zeitpunkt != null ? FormatiertesDatum($begegnung->zeitpunkt) : "N/A"; ?> +
+ + . : + + + + + + + + + + +
+ : + + kommentar); ?> +
+ + + +
+ + . : + + zeitpunkt)); ?> + +
+ : + + kommentar); ?> +
+
+
+
+ + + + + + + + + + + + + + + "/> +
+   + +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ +
+ + + + +
+ + turnierbezeichnung) . (!empty($disziplin->turnierort) ? (" in " . htmlentities_utf8($disziplin->turnierort)) : "") . ": " . htmlentities_utf8($disziplin->disziplin); ?> +
+
+ +
+ + + + + + + + - aktion == 1 || $aktion->aktion == 5 || $aktion->aktion == 10) // akzeptiert, von Moderator eingetragen oder Verschiebung abgelehnt - break; - array_push($letzte_verlegung_aktionen, $aktion); - } + voranmeldung != null) { + ?> + + + + + +
+ : + + beginn); ?> +
+ : + +
+ + : + + voranmeldung); + if (str_ends_with($datum, "23:59")) + $datum = substr($datum, 0, strlen($datum) - 6); + else + $datum .= " " . Text::_('COM_SPORTSMANAGER_HOUR'); + echo $datum; + ?> +
+
- $termine = array(); - if (count($letzte_verlegung_aktionen) > 0) { - $eingetragen = $letzte_verlegung_aktionen[0]->eingetragen; - foreach ($letzte_verlegung_aktionen as $aktion) { - if ($aktion->eingetragen != $eingetragen || ($aktion->aktion != 0) || $aktion->zeitpunkt == null) // aktion == 1 <=> Akzeptiert - break; - array_push($termine, $aktion); - } - } + +
Voranmeldung hinzufügen
+*/ - $berechtigt_anfordern = $veranstaltung->initial_ohne_termin != 1 && (count($letzte_verlegung_aktionen) == 0 || $letzte_verlegung_aktionen[0]->aktion == 1); - $berechtigt_vorschlagen = ($veranstaltung->initial_ohne_termin != 2 || (count($letzte_verlegung_aktionen) != 0 && $letzte_verlegung_aktionen[0]->aktion != 1)) && (!$veranstaltung->keine_gegenvorschlaege || count($letzte_verlegung_aktionen) == 0 || $letzte_verlegung_aktionen[0]->aktion != 3 || $letzte_verlegung_aktionen[0]->team_id != $vorschlagendes_team_id) && (count($termine) == 0 || !$veranstaltung->keine_gegenvorschlaege || $letzte_verlegung_aktionen[0]->team_id == $vorschlagendes_team_id); - $berechtigt_ablehnen = count($letzte_verlegung_aktionen) != 0 && ($letzte_verlegung_aktionen[0]->aktion == 0 || $letzte_verlegung_aktionen[0]->aktion == 3 || $letzte_verlegung_aktionen[0]->aktion == 4) && ((($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 3) && $berechtigt_fuer_akzeptieren) || (($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 2) && $berechtigt_vorschlagen)); + if (count($meldungenSpielerSortiert) > 0) { + $bilder_anzeigen_1 = false; + $bilder_anzeigen_2 = false; + foreach ($meldungenSpielerSortiert as $turniermeldung_id => $sortierung) { + $spieler = $meldungenSpielerNamen[$turniermeldung_id]; + $spielerIds = $meldungenSpielerIds[$turniermeldung_id]; + $spielerGeschlechter = $meldungenSpielerGeschlechter[$turniermeldung_id]; + $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$turniermeldung_id]; + if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_1 = true; + if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen_1 && ($disziplin->typ != 1 || $bilder_anzeigen_2)) + break; + } + ?> +
+ + get( 'pageclass_sfx' ); ?>"> + + +*/ + ?> - if ($berechtigt_vorschlagen) { - $anzahl_moegliche_termine = $veranstaltung->termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; - ?> - - + ?> - - - - kommentar)) { - ?> +
- . : - - - - - - - - - - -
+
+ +   + +
+
+ - - - - - - - - - termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; - for ($termin = 1; - $termin <= count($termine); - $termin++) { - ?> - - - - - kommentar)) { - ?> - - - - - -
- : - - kommentar); ?> -
- : - - -
- . : - - zeitpunkt)); ?> - -
- : - - kommentar); ?> -
- - -
- - - - - - - - - - - - - - - "/> - -   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- -
- - - -
- - turnierbezeichnung) . (!empty($disziplin->turnierort) ? (" in " . htmlentities_utf8($disziplin->turnierort)) : "") . ": " . htmlentities_utf8($disziplin->disziplin); ?> -
- -
- - - - - - - - - - voranmeldung != null) { - ?> - - - - - -
- : - - beginn); ?> -
- : - - -
- - : - - voranmeldung); - if (substr($datum, strlen($datum) - 5) == "23:59") - $datum = substr($datum, 0, strlen($datum) - 6); - else - $datum .= " " . JText::_('COM_SPORTSMANAGER_HOUR'); - echo $datum; - ?> -
- - - - Voranmeldung hinzufügen - - - */ - - if (count($meldungenSpielerSortiert) > 0) { - $bilder_anzeigen_1 = false; - $bilder_anzeigen_2 = false; - foreach ($meldungenSpielerSortiert as $turniermeldung_id => $sortierung) { - $spieler = $meldungenSpielerNamen[$turniermeldung_id]; - $spielerIds = $meldungenSpielerIds[$turniermeldung_id]; - $spielerGeschlechter = $meldungenSpielerGeschlechter[$turniermeldung_id]; - $spielerBilderAusblenden = $meldungenSpielerBilderAusblenden[$turniermeldung_id]; - if (isset($spieler[0]) && bildHTML("spieler", !isset($spielerIds[0]) || (!$details_anzeigen && $spielerBilderAusblenden[0]) ? '' : $spielerIds[0], 30, 40, 0, 0, '', $spielerGeschlechter[0] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_1 = true; - if (isset($spieler[1]) && bildHTML("spieler", !isset($spielerIds[1]) || (!$details_anzeigen && $spielerBilderAusblenden[1]) ? '' : $spielerIds[1], 30, 40, 0, 0, '', $spielerGeschlechter[1] == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen_1 && ($disziplin->typ != 1 || $bilder_anzeigen_2)) - break; - } - ?> -
- get( 'pageclass_sfx' ); ?>"> - - */ - ?> - - - $sortierung) { - if ($n % 3 == 0 && $n != 0) - echo ""; - - ?> - - - -
- - - - voranmeldungen_rangliste_id != 0) { - ?> - - - - - - - - +
- - - - - "; - if (!isset($spielerIds[1])) - echo htmlentities_utf8($spieler[1]); - else { - ?> - - - - - - - ") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- -
- -   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - ?> -
-
- - - -
- : - - -
- -
- - - - - - - - - - - - - - - -
- - - > bezeichnung); ?> -   - - - < -   - - - > -
- -
- - - -
-
-

bezeichnung); ?>

-
- -
- - - -
- bezeichnung); ?> -
- 0) { - // Ermitteln, ob ein Bild von einem der Spieler unter den ersten drei Plätzen vorhanden ist - $bilder_anzeigen = false; - $bilder_anzeigen_2 = false; - $platz = 1; - $tatsaechlicher_platz = 1; - foreach ($spielerstatistik_punkte as $row) { - if ($platz == 1 || $spielpunkte_gewonnen != $row->spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) - $tatsaechlicher_platz = $platz; - if (!$allein_angezeigt && $tatsaechlicher_platz > 3) - break; - if (bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen = true; - if ($spielerstatistik->typ == 3 && bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden_2 ? '' : $row->spieler_2_id, 57, 76, 0, 0, 'border="1"', $row->geschlecht_2 == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen && ($bilder_anzeigen_2 || $spielerstatistik->typ != 3)) - break; - $spielpunkte_gewonnen = $row->spielpunkte_gewonnen; - $spielpunkte_verloren = $row->spielpunkte_verloren; - $punkte_gewonnen = $row->punkte_gewonnen; - $punkte_verloren = $row->punkte_verloren; - $platz++; - } - - ?> - -
- - - - tabellenwertung > 0) { - ?> - - - - - - - - - - - - - spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) - $tatsaechlicher_platz = $platz; - - if (!$allein_angezeigt && $tatsaechlicher_platz > 3) - break; - ?> - - - - tabellenwertung != 0) { - ?> - - - - - - - - - - - - - spielpunkte_gewonnen; - $spielpunkte_verloren = $row->spielpunkte_verloren; - $punkte_gewonnen = $row->punkte_gewonnen; - $punkte_verloren = $row->punkte_verloren; - $platz++; - } - ?> -
- - - + - - - - + - - - - -
- - - - - - - - - - -
- aktueller_verein_id == null) - echo htmlentities_utf8($row->nachname . ", " . $row->vorname); - else { - ?> - nachname . ", " . $row->vorname); ?> - typ == 3 && $row->spieler_2_id != null) { - ?> -
- aktueller_verein_id_2 == null) - echo htmlentities_utf8($row->nachname_2 . ", " . $row->vorname_2); - else { - ?> - nachname_2 . ", " . $row->vorname_2); ?> - -
- bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" align="right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - ?> - - bild_ausblenden_2 ? '' : $row->spieler_2_id, 57, 76, 0, 0, 'border="1" align="right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - ?> -
-
leistungsindex, 0); ?> - siege + $row->niederlagen + $row->unentschieden; ?>tabellenwertung == 0 ? "" : "") . $row->spielpunkte_gewonnen . ($spielerstatistik->tabellenwertung == 0 ? "" : ""); ?>spielpunkte_verloren; ?>spielpunkte_gewonnen > 0 || $row->spielpunkte_verloren > 0) ? round($row->spielpunkte_gewonnen * 100 / ($row->spielpunkte_gewonnen + $row->spielpunkte_verloren), 0) . "%" : "-"; ?>punkte_gewonnen; ?>punkte_verloren; ?>siege; ?>unentschieden; ?>niederlagen; ?>
- - -
- - - -
- - -
- - -   - -
-
- -
-   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - ?> -
-
- - - -
- : - - -
- -
- -
- - - - - - - - - - - - -
- - - > bezeichnung); ?> -   - - < -   - - > -
- -
- - - -
-
-

bezeichnung); ?>

-
-
- -
- - - -
- bezeichnung); ?> -
- vereinsname)) { - $vereine_anzeigen = true; - break; - } - } - - $anzahl_eintraege = count($platzierungen); - $anzahl_spalten = 1; - $anzahl_zeilen = 1; - $n = $anzahl_eintraege; - while ($n > $anzahl_spalten) { - $n -= $anzahl_spalten; - $anzahl_spalten++; - $anzahl_zeilen++; - } - - if (!$allein_angezeigt && $anzahl_zeilen > 2) { - $anzahl_spalten = 2; - $anzahl_zeilen = 2; - } - - ?> -
- - - - - - - - - - - - - - - - - - - - -
- - - -
- - - + 0) { + ?> + +
+
- - - - - bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) - echo ""; - ?>
- " . $row->platz . ""; - ?> + + + +
- aktueller_verein_id)) - echo htmlentities_utf8($row->nachname) . "
" . htmlentities_utf8($row->vorname); - else { - ?> - nachname) . "
" . htmlentities_utf8($row->vorname); ?>
- -
" . $bild . "
- -
-
+ + + + - - - - - +
+ + + + + + + + + + + + + +
+ + + > bezeichnung); ?> +   + + + < +   + + + > +
- $platz = 0; - $k = 0; - foreach ($platzierungen as $row) { - $platz_aktuell = $row->platz; - if (!$allein_angezeigt && $platz_aktuell > 3) - break; - ?> - - - - - - - - -
- aktueller_verein_id)) - echo htmlentities_utf8($row->nachname . ", " . $row->vorname); - else { - ?> - nachname . ", " . $row->vorname); ?> - -
vereinsname != NULL ? htmlentities_utf8($row->vereinsname) : "Kein Verein"; ?> - -
- bild_ausblenden) && (($bild = bildHTML("spieler", $row->spieler_id, $platz > 3 ? 30 : 57, $platz > 3 ? 40 : 76, 0, 0, 'border="1" align="right" hspace="8" vspace="2"')) != NULL)) - echo $bild; ?> -
- - - - - - -
- - - -
- - -
- -   - heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null - || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) - $bilder_anzeigen_1 = true; - if (($spiel->heim_spieler_2_id != null && bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null) - || ($spiel->gast_spieler_2_id != null && bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen_1 && $bilder_anzeigen_2) - break; - } - ?> -
- - - - - - - $spiel) { - if (!$allein_angezeigt && $index == 3) - break; - ?> - - - - - - - - - - -
-
- zeitpunkt)); ?> - - - +
+
- - - - - -
- ergebnis != 2) { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> +
+
+

bezeichnung); ?>

+
- ergebnis != 2) { - if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - else { - if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - ?> - - ergebnis != 2) { - if ($spiel->heim_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - else { - if ($spiel->gast_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - ?> -
- -
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis != 2 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> - - - - - - - - - - -
- ergebnis == 2) { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> -
- ergebnis == 2) { - if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - else { - if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - ?> - - ergebnis == 2) { - if ($spiel->heim_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - else { - if ($spiel->gast_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; - } - ?> -
- -
- - 3) { - ?> -
- - - -
- - -
- -   - heim_spieler_1_bild_ausblenden) && bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40, 0, 0) != null) - || (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40, 0, 0) != null)) - $bilder_anzeigen_1 = true; - if ((($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40, 0, 0) != null)) - || ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40, 0, 0) != null)) - $bilder_anzeigen_2 = true; - if ($bilder_anzeigen_1 && $bilder_anzeigen_2) - break; - } - ?> -
- - - - - - - $spiel) { - ?> - - - - - - - - - - -
-
- zeitpunkt)); ?> -
- - individualwettbewerb_id]); ?> - -
- - - - - - - - - - -
- ergebnis != 2) { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> -
- ergebnis != 2) { - if (($details_anzeigen || !$spiel->heim_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40, 0, 0)) != null) - echo $bild; - } - else { - if (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40, 0, 0)) != null) - echo $bild; - } - ?> - - ergebnis != 2) { - if ($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40, 0, 0)) != null) - echo $bild; - } - else { - if ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40, 0, 0)) != null) - echo $bild; - } - ?> -
- -
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis != 2 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> - - - - - - - - - - -
- ergebnis == 2) { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> -
- ergebnis == 2) { - if (($details_anzeigen || !$spiel->heim_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40, 0, 0)) != null) - echo $bild; - } - else { - if (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40, 0, 0)) != null) - echo $bild; - } - ?> - - ergebnis == 2) { - if ($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40, 0, 0)) != null) - echo $bild; - } - else { - if ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40, 0, 0)) != null) - echo $bild; - } - ?> -
- -
- -   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- - - - - - - - - - - - - - -
- - - - - > -   - - < -   - - > -
- -
- - - -
-
-

-
- -
- - - -
- -
- 0) { - ?> -
- - - - - - 3) - break; - ?> - - - - - - -
Elo
- elo_doppel : $row->elo_einzel; - if ($elo != $elo_aktuell) { - $elo = $elo_aktuell; - echo $platz; - } - ?> - - + +
+
- -
- aktueller_verein_id)) - echo htmlentities_utf8($row->nachname . ", " . $row->vorname); - else { - ?> - - nachname . ", " . $row->vorname); ?> - - - bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" align="right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; ?> + + bezeichnung); ?>
-
- - -
- - - -
- - -
- -   - -
-
- - - -
") !== false ? $beschreibung : htmlentities_utf8($beschreibung); ?>
- 0) { - ?> -
-
- - - -
- : - - -
- -
- -
- - - - -
- - - > bezeichnung); ?> -
- -
- - - - streichergebnisse != 0) { - ?> - - - - -
-
-

bezeichnung); ?>

-
- - : streichergebnisse > 0 ? (100 - $rangliste->streichergebnisse . "% " . JText::_('COM_SPORTSMANAGER_POSSIBLE_PARTICIPATION')) : (($rangliste->streichergebnisse == -1 ? JText::_('COM_SPORTSMANAGER_BEST_RESULT') : ("Die besten " . abs($rangliste->streichergebnisse) . " Turnierergebnisse" . JText::_('COM_SPORTSMANAGER_BEST_RESULTS'))))); ?> -
- -
- - - - streichergebnisse > 0) { - ?> - - - - -
-

bezeichnung); ?>

-
- streichergebnisse)); ?> -
- -   - 0) { - ?> - -
- - - - - - platz > 3) - break; - ?> - - + if (count($spielerstatistik_punkte) > 0) { + // Ermitteln, ob ein Bild von einem der Spieler unter den ersten drei Plätzen vorhanden ist + $bilder_anzeigen = false; + $bilder_anzeigen_2 = false; + $platz = 1; + $tatsaechlicher_platz = 1; + $spielpunkte_gewonnen = null; + $spielpunkte_verloren = null; + $punkte_gewonnen = null; + $punkte_verloren = null; + foreach ($spielerstatistik_punkte as $row) { + if ($platz == 1 || $spielpunkte_gewonnen != $row->spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) + $tatsaechlicher_platz = $platz; + if (!$allein_angezeigt && $tatsaechlicher_platz > 3) + break; + if (bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen = true; + if ($spielerstatistik->typ == 3 && bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden_2 ? '' : $row->spieler_2_id, 57, 76, 0, 0, 'border="1"', $row->geschlecht_2 == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen && ($bilder_anzeigen_2 || $spielerstatistik->typ != 3)) + break; + $spielpunkte_gewonnen = $row->spielpunkte_gewonnen; + $spielpunkte_verloren = $row->spielpunkte_verloren; + $punkte_gewonnen = $row->punkte_gewonnen; + $punkte_verloren = $row->punkte_verloren; + $platz++; + } - + + + tabellenwertung != 0) { + ?> + + + + + + + + + + + + + spielpunkte_gewonnen; + $spielpunkte_verloren = $row->spielpunkte_verloren; + $punkte_gewonnen = $row->punkte_gewonnen; + $punkte_verloren = $row->punkte_verloren; + $platz++; + } + ?> +
- platz; - ?> - - bild_ausblenden ? '' : $row->spieler_id, '#resize=75', 'border="1" align="left" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) - echo $bild; ?> - aktueller_verein_id == null) - echo htmlentities_utf8($row->nachname . ", " . $row->vorname); - else { - ?> + ?> + +
+ + + + + tabellenwertung > 0) { + ?> + + + + + + + + + + + + + spieler_id); ?>">vorname . " " . $row->nachname); ?> - - + $platz = 1; + $tatsaechlicher_platz = 1; + $k = 0; + foreach ($spielerstatistik_punkte as $row) { + if ($platz == 1 || $spielpunkte_gewonnen != $row->spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) + $tatsaechlicher_platz = $platz; - - - -
+ + + + + + + + + - + + + + + - + + + + + +
- punkte; ?> -
+ if (!$allein_angezeigt && $tatsaechlicher_platz > 3) + break; + ?> +
+ + + + + + + + + + +
+ aktueller_verein_id == null) + echo htmlentities_utf8($row->nachname . ", " . $row->vorname); + else { + ?> + nachname . ", " . $row->vorname); ?> + typ == 3 && $row->spieler_2_id != null) { + ?> +
+ aktueller_verein_id_2 == null) + echo htmlentities_utf8($row->nachname_2 . ", " . $row->vorname_2); + else { + ?> + nachname_2 . ", " . $row->vorname_2); ?> + +
+ bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" style="text-align: right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + ?> + + bild_ausblenden_2 ? '' : $row->spieler_2_id, 57, 76, 0, 0, 'border="1" style="text-align: right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + ?> +
+
+ leistungsindex); ?> + siege + $row->niederlagen + $row->unentschieden; ?>tabellenwertung == 0 ? "" : "") . $row->spielpunkte_gewonnen . ($spielerstatistik->tabellenwertung == 0 ? "" : ""); ?>spielpunkte_verloren; ?>spielpunkte_gewonnen > 0 || $row->spielpunkte_verloren > 0) ? round($row->spielpunkte_gewonnen * 100 / ($row->spielpunkte_gewonnen + $row->spielpunkte_verloren)) . "%" : "-"; ?>punkte_gewonnen; ?>punkte_verloren; ?>siege; ?>unentschieden; ?>niederlagen; ?>
+
- -
- - - -
- - -
- +
+ + + + +
+ + +
+
+ - ?> +   + get('pageclass_sfx'); ?>">  - +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0) { + ?> +
+
+ + + + +
+ + + +
+
+ +
+ + static function individualwettbewerb($individualwettbewerb, $spiele, $platzierungen, $allein_angezeigt, $vorheriger_individualwettbewerb_id, $naechster_individualwettbewerb_id, $details_anzeigen): void + { + global $params; -
-
- -
-   - +
+ + + + + + + + + + + + + +
+ + + > bezeichnung); ?> +   + + + < +   + + + > +
+
- static function ranglistenpunkte($rangliste, $rangliste_punkte, $turnierdisziplinen, $streichergebnisse, $vorherige_spieler_id, $naechste_spieler_id) { - global $params; +
+ + + + +
+
+

bezeichnung); ?>

+
+
+
+ +
+ + + + +
+ bezeichnung); ?> +
+
+ + if (!empty($platzierungen)) { + foreach ($platzierungen as $row) { + if (!empty($row->vereinsname)) { + break; + } + } + + $anzahl_eintraege = count($platzierungen); + $anzahl_spalten = 1; + $anzahl_zeilen = 1; + $n = $anzahl_eintraege; + while ($n > $anzahl_spalten) { + $n -= $anzahl_spalten; + $anzahl_spalten++; + $anzahl_zeilen++; + } + + if (!$allein_angezeigt && $anzahl_zeilen > 2) { + $anzahl_spalten = 2; + $anzahl_zeilen = 2; + } + + ?> +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) + echo ""; + ?> +
+ " . $row->platz . ""; + ?> +
+ aktueller_verein_id)) + echo htmlentities_utf8($row->nachname) . "
" . htmlentities_utf8($row->vorname); + else { + ?> + nachname) . "
" . htmlentities_utf8($row->vorname); ?>
+ +
" . $bild . "
+ +
+
+
+ + + + + + +platz; +if (!$allein_angezeigt && $platz_aktuell > 3) + break; +?> + + + + + +
+ + + + + +
+aktueller_verein_id)) + echo htmlentities_utf8($row->nachname . ", " . $row->vorname); +else { + ?> +nachname . ", " . $row->vorname); ?> + +
vereinsname != NULL ? htmlentities_utf8($row->vereinsname) : "Kein Verein"; ?> + +
+bild_ausblenden) && (($bild = bildHTML("spieler", $row->spieler_id, $platz > 3 ? 30 : 57, $platz > 3 ? 40 : 76, 0, 0, 'border="1" style="text-align: right" hspace="8" vspace="2"')) != NULL)) +echo $bild; ?> +
+
+ + +
+ + + + +
+ + +
+
+ +   + heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null + || bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w') != null) + $bilder_anzeigen_1 = true; + if (($spiel->heim_spieler_2_id != null && bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null) + || ($spiel->gast_spieler_2_id != null && bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w') != null)) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen_1 && $bilder_anzeigen_2) + break; + } + ?> +
+ + + + + + + + $spiel) { + if (!$allein_angezeigt && $index == 3) + break; + ?> + + + + + + + + + + +
+ + +
+ zeitpunkt)); ?> + + + + + + + + + + + +
+ ergebnis != 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?> +
+ ergebnis != 2) { + if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } else { + if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } + ?> + + ergebnis != 2) { + if ($spiel->heim_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } else { + if ($spiel->gast_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } + ?> +
+ +
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis != 2 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> + + + + + + + + + + +
+ ergebnis == 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?> +
+ ergebnis == 2) { + if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_id, 30, 40, 0, 0, '', $spiel->heim_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } else { + if (($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_1_bild_ausblenden ? '' : $spiel->gast_spieler_1_id, 30, 40, 0, 0, '', $spiel->gast_spieler_1_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } + ?> + + ergebnis == 2) { + if ($spiel->heim_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->heim_spieler_2_bild_ausblenden ? '' : $spiel->heim_spieler_2_id, 30, 40, 0, 0, '', $spiel->heim_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } else { + if ($spiel->gast_spieler_2_id != null && ($bild = bildHTML("spieler", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_id, 30, 40, 0, 0, '', $spiel->gast_spieler_2_geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; + } + ?> +
+ +
+
+ + 3) { + ?> +
+ + + + +
+ + +
+
+ +   + heim_spieler_1_bild_ausblenden) && bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40) != null) + || (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40) != null)) + $bilder_anzeigen_1 = true; + if ((($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40) != null)) + || ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40) != null)) + $bilder_anzeigen_2 = true; + if ($bilder_anzeigen_1 && $bilder_anzeigen_2) + break; + } + ?> +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ zeitpunkt)); ?> +
+ + individualwettbewerb_id]); ?> + +
+ + + + + + + + + + +
+ ergebnis != 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?> +
+ ergebnis != 2) { + if (($details_anzeigen || !$spiel->heim_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40)) != null) + echo $bild; + } else { + if (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40)) != null) + echo $bild; + } + ?> + + ergebnis != 2) { + if ($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40)) != null) + echo $bild; + } else { + if ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40)) != null) + echo $bild; + } + ?> +
+ +
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis != 2 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> + + + + + + + + + + +
+ ergebnis == 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?> +
+ ergebnis == 2) { + if (($details_anzeigen || !$spiel->heim_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_1_id, 30, 40)) != null) + echo $bild; + } else { + if (($details_anzeigen || !$spiel->gast_spieler_1_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_1_id, 30, 40)) != null) + echo $bild; + } + ?> + + ergebnis == 2) { + if ($spiel->heim_spieler_2_id != null && ($details_anzeigen || !$spiel->heim_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->heim_spieler_2_id, 30, 40)) != null) + echo $bild; + } else { + if ($spiel->gast_spieler_2_id != null && ($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($bild = bildHTML("spieler", $spiel->gast_spieler_2_id, 30, 40)) != null) + echo $bild; + } + ?> +
+ +
+
+ +   + +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ + + + + + + + + + + + + + +
+ + + - + > + +   + + + < + +   + + + > +
+ +
+ + + + +
+
+

+
+
+
+ +
+ + + + +
+ +
+
+ 0) { + ?> +
+ + + + + + + 3) + break; + ?> + + + + + + +
+ Elo
+ elo_doppel : $row->elo_einzel; + if ($elo != $elo_aktuell) { + $elo = $elo_aktuell; + echo $platz; + } + ?> + + + + + + +
+ aktueller_verein_id)) + echo htmlentities_utf8($row->nachname . ", " . $row->vorname); + else { + ?> + + nachname . ", " . $row->vorname); ?> + + + bild_ausblenden ? '' : $row->spieler_id, 57, 76, 0, 0, 'border="1" style="text-align: right" hspace="8" vspace="2"', $row->geschlecht == 'M' ? 'm' : 'w')) != null) + echo $bild; ?> +
+
+
+ + +
+ + + + +
+ + +
+
+ +   + - - - -
- - - Ranglisten > - - bezeichnung); ?> > - nachname . ", " . $rangliste_punkte->vorname); ?> -
+ if (!empty($titel)) { ?> +
+
+ + + + +
") ? $beschreibung : htmlentities_utf8($beschreibung); ?>
+
+ 0) { + ?> +
+
+ + + + +
+ + + +
+
+ +
+ - - - - streichergebnisse != 0) { - ?> - - - - -
-
-

bezeichnung . (empty($rangliste_punkte->platz) ? "" : (" " . $rangliste_punkte->platz . ". Platz")) . ": " . $rangliste_punkte->nachname . ", " . $rangliste_punkte->vorname . " - " . $rangliste_punkte->punkte . " Punkte"); ?>

+ static function rangliste($rangliste, $rangliste_punkte, $allein_angezeigt, $details_anzeigen): void + { + global $params; + + if ($allein_angezeigt) { + ?> +
+ + + + + +
+ + + > bezeichnung); ?> +
+
+ +
+ + + + + streichergebnisse != 0) { + ?> + + + + +
+
+

bezeichnung); ?>

+
+
+ + : streichergebnisse > 0 ? (100 - $rangliste->streichergebnisse . "% " . Text::_('COM_SPORTSMANAGER_POSSIBLE_PARTICIPATION')) : (($rangliste->streichergebnisse == -1 ? Text::_('COM_SPORTSMANAGER_BEST_RESULT') : ("Die besten " . abs($rangliste->streichergebnisse) . " Turnierergebnisse" . Text::_('COM_SPORTSMANAGER_BEST_RESULTS'))))); ?> +
+
+ +
+ + + + + streichergebnisse > 0) { + ?> + + + + +
+ +

bezeichnung); ?>

+
+ streichergebnisse)); ?> +
+
+ +   + 0) { + ?> + +
+ + + + + + + platz > 3) + break; + ?> + + + + + + + + +
+ +
+ platz; + ?> + + bild_ausblenden ? '' : $row->spieler_id, $row->geschlecht == 'M' ? 'm' : 'w', '#resize=75', 'border="1" style="text-align: left" hspace="8" vspace="2"')) != null) + echo $bild; ?> + aktueller_verein_id == null) + echo htmlentities_utf8($row->nachname . ", " . $row->vorname); + else { + ?> + + vorname . " " . $row->nachname); ?> + + + punkte; ?> +
+
+ + +
+ + + + +
+ + +
+
+ + +   + + + +
+ + + + +
+ + + Ranglisten > + + bezeichnung); ?> > + nachname . ", " . $rangliste_punkte->vorname); ?> +
-
- - : streichergebnisse > 0 ? (100 - $rangliste->streichergebnisse . "% " . JText::_('COM_SPORTSMANAGER_POSSIBLE_PARTICIPATION')) : (($rangliste->streichergebnisse == -1 ? JText::_('COM_SPORTSMANAGER_BEST_RESULT') : ("maximal " . abs($rangliste->streichergebnisse) . " " . JText::_('COM_SPORTSMANAGER_BEST_RESULTS'))))); ?> -
-   - 0) { - ?> -
- - - -
+
+ + + + + streichergebnisse != 0) { + ?> + + + + +
+
+

bezeichnung . (empty($rangliste_punkte->platz) ? "" : (" " . $rangliste_punkte->platz . ". Platz")) . ": " . $rangliste_punkte->nachname . ", " . $rangliste_punkte->vorname . " - " . $rangliste_punkte->punkte . " Punkte"); ?>

+
+
+ + : streichergebnisse > 0 ? (100 - $rangliste->streichergebnisse . "% " . Text::_('COM_SPORTSMANAGER_POSSIBLE_PARTICIPATION')) : (($rangliste->streichergebnisse == -1 ? Text::_('COM_SPORTSMANAGER_BEST_RESULT') : ("maximal " . abs($rangliste->streichergebnisse) . " " . Text::_('COM_SPORTSMANAGER_BEST_RESULTS'))))); ?> +
+
+   -
-
- - - - - - - - - - 0) { + ?> +
+
+ + + +
+
- $k = 0; - foreach ($turnierdisziplinen as $platzierung) { - ?> - - turnierbezeichnung != null ? htmlentities_utf8($platzierung->turnierbezeichnung) : ""; ?> - turnierort != null ? htmlentities_utf8($platzierung->turnierort) : ""; ?> - disziplin != null ? htmlentities_utf8($platzierung->disziplin) : ""; ?> - beginn == null ? "" : htmlentities_utf8(FormatiertesDatum($platzierung->beginn, false)); ?> - platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?> - teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?> - turnierdisziplin_id]) ? (" " . (empty($platzierung->punkte) ? "0" : $platzierung->punkte) . " ") : (empty($platzierung->punkte) ? "0" : $platzierung->punkte); ?> - - -
- -   - +
+ + + + + + + + + + + + $k = 0; + foreach ($turnierdisziplinen as $platzierung) { + ?> + + + + + + + + + + +
turnierbezeichnung != null ? htmlentities_utf8($platzierung->turnierbezeichnung) : ""; ?>turnierort != null ? htmlentities_utf8($platzierung->turnierort) : ""; ?>disziplin != null ? htmlentities_utf8($platzierung->disziplin) : ""; ?>beginn == null ? "" : htmlentities_utf8(FormatiertesDatum($platzierung->beginn, false)); ?>platz != null ? htmlentities_utf8($platzierung->platz) : ""; ?>teilnehmer != null ? htmlentities_utf8($platzierung->teilnehmer) : ""; ?>turnierdisziplin_id]) ? (" " . (empty($platzierung->punkte) ? "0" : $platzierung->punkte) . " ") : (empty($platzierung->punkte) ? "0" : $platzierung->punkte); ?>
+
+ +   + diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php index a8465dc..5d7f3ed 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php @@ -1,204 +1,218 @@ teambild = teamImage($team->team_id, $team->verein_id); - $teams[] = $team; - } - if ($veranstaltung == null) { - return $teams; - } - - return [ - 'veranstaltung' => $veranstaltung, - 'teams' => $teams, - ]; - } - - static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, $praesentation) { - foreach ($teams as $team) { - $team->teambild = teamImage($team->team_id, $team->verein_id); - } - - return [ - 'tabelle' => $teams, - 'modus' => $modus, - ]; - } - - static function tabelleEigeneAnzeigen($veranstaltung, $modus, $teams, $alleine_angezeigt, $praesentation) { - foreach($teams as $team) { - $team->teambild = teamImage($team->team_id, $team->verein_id); + static function mannschaften($veranstaltung, $rows): array + { + $teams = []; + foreach ($rows as $team) { + $team->teambild = teamImage($team->team_id, $team->verein_id); + $teams[] = $team; } - return [ - 'tabelle' => $teams, + if ($veranstaltung == null) { + return $teams; + } + + return [ + 'veranstaltung' => $veranstaltung, + 'teams' => $teams, + ]; + } + + static function tabelleAnzeigen($modus, $teams): array + { + foreach ($teams as $team) { + $team->teambild = teamImage($team->team_id, $team->verein_id); + } + + return [ + 'tabelle' => $teams, 'modus' => $modus, ]; } - static function _getPlayerDetails($game, $home_player_map, $away_player_map) { - // TODO dynamisch machen - $game->heim_spieler_1_vorname = isset($home_player_map[$game->heim_spieler_1_id]) - ? $home_player_map[$game->heim_spieler_1_id]->vorname - : NULL; - $game->heim_spieler_1_nachname = isset($home_player_map[$game->heim_spieler_1_id]) - ? $home_player_map[$game->heim_spieler_1_id]->nachname - : NULL; - $game->heim_spieler_1_bild = isset($home_player_map[$game->heim_spieler_1_id]) - ? $home_player_map[$game->heim_spieler_1_id]->bild - : NULL; + static function tabelleEigeneAnzeigen($modus, $teams): array + { + foreach ($teams as $team) { + $team->teambild = teamImage($team->team_id, $team->verein_id); + } + return [ + 'tabelle' => $teams, + 'modus' => $modus, + ]; + } - $game->heim_spieler_2_vorname = isset($home_player_map[$game->heim_spieler_2_id]) - ? $home_player_map[$game->heim_spieler_2_id]->vorname - : NULL; - $game->heim_spieler_2_nachname = isset($home_player_map[$game->heim_spieler_2_id]) - ? $home_player_map[$game->heim_spieler_2_id]->nachname - : NULL; - $game->heim_spieler_2_bild = isset($home_player_map[$game->heim_spieler_2_id]) - ? $home_player_map[$game->heim_spieler_2_id]->bild - : NULL; + static function _getPlayerDetails($game, $home_player_map, $away_player_map): void + { + // TODO dynamisch machen + $game->heim_spieler_1_vorname = isset($home_player_map[$game->heim_spieler_1_id]) + ? $home_player_map[$game->heim_spieler_1_id]->vorname + : NULL; + $game->heim_spieler_1_nachname = isset($home_player_map[$game->heim_spieler_1_id]) + ? $home_player_map[$game->heim_spieler_1_id]->nachname + : NULL; + $game->heim_spieler_1_bild = isset($home_player_map[$game->heim_spieler_1_id]) + ? $home_player_map[$game->heim_spieler_1_id]->bild + : NULL; - $game->gast_spieler_1_vorname = isset($away_player_map[$game->gast_spieler_1_id]) - ? $away_player_map[$game->gast_spieler_1_id]->vorname - : NULL; - $game->gast_spieler_1_nachname = isset($away_player_map[$game->gast_spieler_1_id]) - ? $away_player_map[$game->gast_spieler_1_id]->nachname - : NULL; - $game->gast_spieler_1_bild = isset($away_player_map[$game->gast_spieler_1_id]) - ? $away_player_map[$game->gast_spieler_1_id]->bild - : NULL; + $game->heim_spieler_2_vorname = isset($home_player_map[$game->heim_spieler_2_id]) + ? $home_player_map[$game->heim_spieler_2_id]->vorname + : NULL; + $game->heim_spieler_2_nachname = isset($home_player_map[$game->heim_spieler_2_id]) + ? $home_player_map[$game->heim_spieler_2_id]->nachname + : NULL; + $game->heim_spieler_2_bild = isset($home_player_map[$game->heim_spieler_2_id]) + ? $home_player_map[$game->heim_spieler_2_id]->bild + : NULL; - $game->gast_spieler_2_vorname = isset($away_player_map[$game->gast_spieler_2_id]) - ? $away_player_map[$game->gast_spieler_2_id]->vorname - : NULL; - $game->gast_spieler_2_nachname = isset($away_player_map[$game->gast_spieler_2_id]) - ? $away_player_map[$game->gast_spieler_2_id]->nachname - : NULL; - $game->gast_spieler_2_bild = isset($away_player_map[$game->gast_spieler_2_id]) - ? $away_player_map[$game->gast_spieler_2_id]->bild - : NULL; + $game->gast_spieler_1_vorname = isset($away_player_map[$game->gast_spieler_1_id]) + ? $away_player_map[$game->gast_spieler_1_id]->vorname + : NULL; + $game->gast_spieler_1_nachname = isset($away_player_map[$game->gast_spieler_1_id]) + ? $away_player_map[$game->gast_spieler_1_id]->nachname + : NULL; + $game->gast_spieler_1_bild = isset($away_player_map[$game->gast_spieler_1_id]) + ? $away_player_map[$game->gast_spieler_1_id]->bild + : NULL; - } + $game->gast_spieler_2_vorname = isset($away_player_map[$game->gast_spieler_2_id]) + ? $away_player_map[$game->gast_spieler_2_id]->vorname + : NULL; + $game->gast_spieler_2_nachname = isset($away_player_map[$game->gast_spieler_2_id]) + ? $away_player_map[$game->gast_spieler_2_id]->nachname + : NULL; + $game->gast_spieler_2_bild = isset($away_player_map[$game->gast_spieler_2_id]) + ? $away_player_map[$game->gast_spieler_2_id]->bild + : NULL; - static function adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus, $encrypted_pin, $count_verlegen_aktionen, $erneut_oeffnen, $aus_uebersicht) { - $heim_team->teambild = teamImage($heim_team->team_id, $heim_team->verein_id); - $gast_team->teambild = teamImage($gast_team->team_id, $gast_team->verein_id); - $heim_spieler_map = []; - $gast_spieler_map = []; - foreach ($heim_spieler as $player) { - $player->bild = playerImage($player->spieler_id, $player->geschlecht); - $heim_spieler_map[$player->spieler_id] = $player; - } - foreach ($gast_spieler as $player) { - $player->bild = playerImage($player->spieler_id, $player->geschlecht); - $gast_spieler_map[$player->spieler_id] = $player; - } - $begegnung->bezeichnung = $veranstaltung->bezeichnung; - $begegnung->veranstaltung_id = $veranstaltung->veranstaltung_id; - foreach ($spiele as $game) { - self::_getPlayerDetails($game, $heim_spieler_map, $gast_spieler_map); - } + } + + static function adminEditBegegnungSpielplan($bestaetigen, $veranstaltung, $begegnung, $heim_team, $gast_team, $spiele, $heim_spieler, $gast_spieler, $teamspiel_modus): array + { + $heim_team->teambild = teamImage($heim_team->team_id, $heim_team->verein_id); + $gast_team->teambild = teamImage($gast_team->team_id, $gast_team->verein_id); + $heim_spieler_map = []; + $gast_spieler_map = []; + foreach ($heim_spieler as $player) { + $player->bild = playerImage($player->spieler_id, $player->geschlecht); + $heim_spieler_map[$player->spieler_id] = $player; + } + foreach ($gast_spieler as $player) { + $player->bild = playerImage($player->spieler_id, $player->geschlecht); + $gast_spieler_map[$player->spieler_id] = $player; + } + $begegnung->bezeichnung = $veranstaltung->bezeichnung; + $begegnung->veranstaltung_id = $veranstaltung->veranstaltung_id; + foreach ($spiele as $game) { + self::_getPlayerDetails($game, $heim_spieler_map, $gast_spieler_map); + } $begegnung->spieltag = Rundenbezeichnung($begegnung->spieltag, $veranstaltung->unterteilung == 0); - return [ - 'bestaetigen' => $bestaetigen, - 'veranstaltung' => $veranstaltung, - 'begegnung' => $begegnung, - 'heim_team' => $heim_team, - 'gast_team' => $gast_team, - 'spiele' => $spiele, - 'heim_spieler' => $heim_spieler, - 'gast_spieler' => $gast_spieler, - 'modus' => $teamspiel_modus, - ]; - } + return [ + 'bestaetigen' => $bestaetigen, + 'veranstaltung' => $veranstaltung, + 'begegnung' => $begegnung, + 'heim_team' => $heim_team, + 'gast_team' => $gast_team, + 'spiele' => $spiele, + 'heim_spieler' => $heim_spieler, + 'gast_spieler' => $gast_spieler, + 'modus' => $teamspiel_modus, + ]; + } - static function mannschaftDetails($veranstaltung, $team, $mitglieder, $mailverteiler, $mitglieder_statistiken, $teamansprechpartner, $begegnungen, $vorheriges_team_id, $naechstes_team_id, $team_moderator, $details_anzeigen, $ansprechpartner_anzeigen, $weitere_veranstaltungen, $veranstaltungsbezeichnungen, $spielberechtigungen, $ansicht_vereinigt, $ist_vergangen) { - global $sportsmanager_joomla_path; - global $sportsmanager_joomla_url; - - $team->teambild = teamImage($team->team_id, $team->verein_id); - $team->color = getColorOfImage(str_replace($sportsmanager_joomla_url, $sportsmanager_joomla_path . '/', $team->teambild)); - foreach ($mitglieder as $m) { - $m->bild = playerImage($m->spieler_id, $m->geschlecht); - } - foreach ($begegnungen as $begegnung) { - $begegnung->heim_name = $begegnung->auswaerts == '1' ? $begegnung->gegner : $team->teamname; + static function mannschaftDetails($veranstaltung, $team, $mitglieder, $teamansprechpartner, $begegnungen, $ansprechpartner_anzeigen, $veranstaltungsbezeichnungen): array + { + global $sportsmanager_joomla_path; + global $sportsmanager_joomla_url; + + $team->teambild = teamImage($team->team_id, $team->verein_id); + $team->color = getColorOfImage(str_replace($sportsmanager_joomla_url, $sportsmanager_joomla_path . '/', $team->teambild)); + foreach ($mitglieder as $m) { + $m->bild = playerImage($m->spieler_id, $m->geschlecht); + } + foreach ($begegnungen as $begegnung) { + $begegnung->heim_name = $begegnung->auswaerts == '1' ? $begegnung->gegner : $team->teamname; $begegnung->heim_teamgruppe = $begegnung->auswaerts == '1' ? $begegnung->gegner_teamgruppe_id : $team->teamgruppe_id; - $begegnung->gast_name = $begegnung->auswaerts == '1' ? $team->teamname : $begegnung->gegner; + $begegnung->gast_name = $begegnung->auswaerts == '1' ? $team->teamname : $begegnung->gegner; $begegnung->gast_teamgruppe = $begegnung->auswaerts == '1' ? $team->teamgruppe_id : $begegnung->gegner_teamgruppe_id; - $begegnung->spielort_name = $begegnung->heimspielort_name; - $begegnung->heim_bild = $begegnung->auswaerts == '1' ? teamImage($begegnung->gegner_id, $begegnung->gegner_verein_id) : teamImage($team->team_id, $team->verein_id); - $begegnung->gast_bild = $begegnung->auswaerts == '1' ? teamImage($team->team_id, $team->verein_id) : teamImage($begegnung->gegner_id, $begegnung->gegner_verein_id); - $begegnung->bezeichnung = $veranstaltungsbezeichnungen[$begegnung->veranstaltung_id]; + $begegnung->spielort_name = $begegnung->heimspielort_name; + $begegnung->heim_bild = $begegnung->auswaerts == '1' ? teamImage($begegnung->gegner_id, $begegnung->gegner_verein_id) : teamImage($team->team_id, $team->verein_id); + $begegnung->gast_bild = $begegnung->auswaerts == '1' ? teamImage($team->team_id, $team->verein_id) : teamImage($begegnung->gegner_id, $begegnung->gegner_verein_id); + $begegnung->bezeichnung = $veranstaltungsbezeichnungen[$begegnung->veranstaltung_id]; $begegnung->spieltag = Rundenbezeichnung($begegnung->spieltag, $veranstaltung->unterteilung == 0); } if (getUserID() == 0 && $ansprechpartner_anzeigen) { - foreach ($teamansprechpartner as $ansprechpartner) { - unset($ansprechpartner->mobil); - unset($ansprechpartner->telefon); + foreach ($teamansprechpartner as $ansprechpartner) { + unset($ansprechpartner->mobil); + unset($ansprechpartner->telefon); } } $team->veranstaltung_name = $veranstaltungsbezeichnungen[$team->veranstaltung_id]; - return [ - 'team' => $team, - 'mitglieder' => $mitglieder, - 'kontakt' => $ansprechpartner_anzeigen ? $teamansprechpartner : NULL, - 'begegnungen' => $begegnungen - ]; - } + return [ + 'team' => $team, + 'mitglieder' => $mitglieder, + 'kontakt' => $ansprechpartner_anzeigen ? $teamansprechpartner : NULL, + 'begegnungen' => $begegnungen + ]; + } - static function JSON($data, $meta = NULL) { - $response = [ - 'data' => $data - ]; - if ($meta != NULL) { - $response['meta'] = $meta; - } - header('Content-Type: application/json; charset=utf-8', true); - echo json_encode($response); - jexit(); - } + #[NoReturn] static function JSON($data, $meta = NULL): void + { + $response = [ + 'data' => $data + ]; + if ($meta != NULL) { + $response['meta'] = $meta; + } + header('Content-Type: application/json; charset=utf-8'); + echo json_encode($response); + jexit(); + } - static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $allein_angezeigt, $filter_saison_id, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen) { - $rank = 1; - foreach ($spielerstatistik_punkte as $s) { - $s->spieler_bild = playerImage($s->spieler_id, $s->geschlecht); - $s->spieler_2_bild= playerImage($s->spieler_2_id, $s->geschlecht_2); - $s->quote = ($s->spielpunkte_gewonnen > 0 || $s->spielpunkte_verloren > 0) - ? round($s->spielpunkte_gewonnen * 100 / ($s->spielpunkte_gewonnen + $s->spielpunkte_verloren), 0) . '%' - : '-'; - $s->rank = '' . $rank; - $rank++; - } - self::JSON($spielerstatistik_punkte); - } + #[NoReturn] static function spielerstatistik($spielerstatistik_punkte): void + { + $rank = 1; + foreach ($spielerstatistik_punkte as $s) { + $s->spieler_bild = playerImage($s->spieler_id, $s->geschlecht); + $s->spieler_2_bild = playerImage($s->spieler_2_id, $s->geschlecht_2); + $s->quote = ($s->spielpunkte_gewonnen > 0 || $s->spielpunkte_verloren > 0) + ? round($s->spielpunkte_gewonnen * 100 / ($s->spielpunkte_gewonnen + $s->spielpunkte_verloren)) . '%' + : '-'; + $s->rank = '' . $rank; + $rank++; + } + self::JSON($spielerstatistik_punkte); + } - static function spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $sortierung, $vorheriger_spieler_id, $naechster_spieler_id, $elo_detailliert, $statistik, $beginn, $kategorie, $einstufungen, $filter, $veranstaltungid, $veranstalterid, $einstufungid, $unabhaengige_ansicht, $details_anzeigen) { - $letzte_einzel = []; - $spieler->bild = playerImage($spieler->spieler_id, $spieler->geschlecht); - for ($i = sizeof($spieler_elo_verlauf_einzel) - 1; $i >= max(sizeof($spieler_elo_verlauf_einzel)-10, 0); $i--) { - $e = $spieler_elo_verlauf_einzel[$i]; - $letzte_einzel[] = [ - 'datum' => $e['z'], + #[NoReturn] static function spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $elo_detailliert, $statistik, $einstufungen): void + { + $letzte_einzel = []; + $spieler->bild = playerImage($spieler->spieler_id, $spieler->geschlecht); + for ($i = sizeof($spieler_elo_verlauf_einzel) - 1; $i >= max(sizeof($spieler_elo_verlauf_einzel) - 10, 0); $i--) { + $e = $spieler_elo_verlauf_einzel[$i]; + $letzte_einzel[] = [ + 'datum' => $e['z'], 'spieler_1' => isset($spielerNamen[$e['h1']]) ? [ 'spieler_id' => $e['h1'], 'bild' => playerImage($e['h1'], 'M'), - 'vorname' => explode(', ',$spielerNamen[$e['h1']])[1], - 'nachname' => explode(', ',$spielerNamen[$e['h1']])[0], + 'vorname' => explode(', ', $spielerNamen[$e['h1']])[1], + 'nachname' => explode(', ', $spielerNamen[$e['h1']])[0], ] : NULL, 'spieler_team' => isset($e['th']) ? [ 'id' => $e['th'], 'name' => $teamNamen[$e['th']], - ]: NULL, + ] : NULL, 'gegner_1' => isset($spielerNamen[$e['g1']]) ? [ 'spieler_id' => $e['g1'], 'bild' => playerImage($e['g1'], 'M'), @@ -221,10 +235,10 @@ class JSON_sportsmanager { ]; } $letzte_doppel = []; - for ($i = sizeof($spieler_elo_verlauf_doppel) - 1; $i >= max(sizeof($spieler_elo_verlauf_doppel) - 10, 0); $i--) { - $d = $spieler_elo_verlauf_doppel[$i]; - $letzte_doppel[] = [ - 'datum' => $d['z'], + for ($i = sizeof($spieler_elo_verlauf_doppel) - 1; $i >= max(sizeof($spieler_elo_verlauf_doppel) - 10, 0); $i--) { + $d = $spieler_elo_verlauf_doppel[$i]; + $letzte_doppel[] = [ + 'datum' => $d['z'], 'spieler_1' => isset($spielerNamen[$d['h1']]) ? [ 'spieler_id' => $d['h1'], 'bild' => playerImage($d['h1'], 'M'), @@ -252,7 +266,7 @@ class JSON_sportsmanager { 'bild' => playerImage($d['g2'], 'M'), 'vorname' => explode(', ', $spielerNamen[$d['g2']])[1], 'nachname' => explode(', ', $spielerNamen[$d['g2']])[0], - ]: NULL, + ] : NULL, 'gegner_team' => isset($d['th']) && isset($d['tg']) ? [ 'id' => $d['tg'], @@ -268,11 +282,11 @@ class JSON_sportsmanager { 'ergebnis' => $d['s'], ]; } - self::JSON([ - 'spieler' => $spieler, + self::JSON([ + 'spieler' => $spieler, 'vereine' => $vereine, 'teams' => $teams, - 'veranstalter'=> $veranstalter, + 'veranstalter' => $veranstalter, 'ranglisten_platzierungen' => $ranglistenplatzierungen, 'turnier_platzierungen' => $turnierplatzierungen, 'statistik' => $statistik, @@ -285,53 +299,54 @@ class JSON_sportsmanager { ]); } - static function begegnungVerlegen($veranstaltung, $begegnung, $heim_team, $gast_team, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $aus_uebersicht, $vorschlagendes_team_id) { - $letzte_aktionen = array(); - foreach ($verlegen_aktionen as $aktion) { - if ($aktion->aktion == 1 || $aktion->aktion == 5 || $aktion == 10) { - break; - } - array_push($letzte_aktionen, $aktion); - } - $termine = array(); - if (count($letzte_aktionen) > 0) { - $eingetragen = $letzte_aktionen[0]->eingetragen; - foreach ($letzte_aktionen as $aktion) { - if ($aktion->eingetragen != $eingetragen || $aktion->aktion != 0 || $aktion->zeitpunkt == NULL) { - break; - } - array_push($termine, $aktion); - } - } + #[NoReturn] static function begegnungVerlegen($veranstaltung, $verlegen_aktionen, $berechtigt_fuer_akzeptieren, $vorschlagendes_team_id): void + { + $letzte_aktionen = array(); + foreach ($verlegen_aktionen as $aktion) { + if ($aktion->aktion == 1 || $aktion->aktion == 5 || $aktion == 10) { + break; + } + $letzte_aktionen[] = $aktion; + } + $termine = array(); + if (count($letzte_aktionen) > 0) { + $eingetragen = $letzte_aktionen[0]->eingetragen; + foreach ($letzte_aktionen as $aktion) { + if ($aktion->eingetragen != $eingetragen || $aktion->aktion != 0 || $aktion->zeitpunkt == NULL) { + break; + } + $termine[] = $aktion; + } + } - $berechtigt_anfordern = $veranstaltung->initial_ohne_termin != 1 && (count($letzte_aktionen) == 0 || $letzte_aktionen[0]->aktion == 1); - $berechtigt_vorschlagen = ($veranstaltung->initial_ohne_termin != 2 || (count($letzte_aktionen) != 0 && $letzte_aktionen[0]->aktion != 1)) - && (!$veranstaltung->keine_gegenvorschlaege || count($letzte_aktionen) == 0 || $letzte_aktionen[0]->aktion != 3 || $letzte_aktionen[0]->team_id != $vorschlagendes_team_id) - && (count($termine) == 0 || !$veranstaltung->keine_gegenvorschlaege || $letzte_aktionen[0]->team_id == $vorschlagendes_team_id); - $berechtigt_ablehnen = count($letzte_aktionen) != 0 && ($letzte_aktionen[0]->aktion == 0 || $letzte_aktionen[0]->aktion == 3 || $letzte_aktionen[0]->aktion == 4) - && ((($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 3) && $berechtigt_fuer_akzeptieren) || (($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 2) - && $berechtigt_vorschlagen)); + $berechtigt_anfordern = $veranstaltung->initial_ohne_termin != 1 && (count($letzte_aktionen) == 0 || $letzte_aktionen[0]->aktion == 1); + $berechtigt_vorschlagen = ($veranstaltung->initial_ohne_termin != 2 || (count($letzte_aktionen) != 0 && $letzte_aktionen[0]->aktion != 1)) + && (!$veranstaltung->keine_gegenvorschlaege || count($letzte_aktionen) == 0 || $letzte_aktionen[0]->aktion != 3 || $letzte_aktionen[0]->team_id != $vorschlagendes_team_id) + && (count($termine) == 0 || !$veranstaltung->keine_gegenvorschlaege || $letzte_aktionen[0]->team_id == $vorschlagendes_team_id); + $berechtigt_ablehnen = count($letzte_aktionen) != 0 && ($letzte_aktionen[0]->aktion == 0 || $letzte_aktionen[0]->aktion == 3 || $letzte_aktionen[0]->aktion == 4) + && ((($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 3) && $berechtigt_fuer_akzeptieren) || (($veranstaltung->ablehnen == 1 || $veranstaltung->ablehnen == 2) + && $berechtigt_vorschlagen)); - $response = []; - $anzahl_termine = $veranstaltung->termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; + $response = []; + $anzahl_termine = $veranstaltung->termine_maximal == 0 ? 3 : $veranstaltung->termine_maximal; - for ($termin = 1; $termin <= $anzahl_termine; $termin++) { - if (isset($termine[$termin-1])) { - $response[] = [ - 'begegnung_historie_id' => $termine[$termin-1]->begegnung_historie_id, - 'zeitpunkt' => $termine[$termin-1]->zeitpunkt - ]; - } - } + for ($termin = 1; $termin <= $anzahl_termine; $termin++) { + if (isset($termine[$termin - 1])) { + $response[] = [ + 'begegnung_historie_id' => $termine[$termin - 1]->begegnung_historie_id, + 'zeitpunkt' => $termine[$termin - 1]->zeitpunkt + ]; + } + } - self::JSON([ - 'termine' => $response, - 'berechtigt_anfordern' => $berechtigt_anfordern, - 'berechtigt_ablehnen' => $berechtigt_ablehnen, - 'berechtigt_akzeptieren' => $berechtigt_fuer_akzeptieren ? TRUE : FALSE, - 'termine_minimal' => $veranstaltung->termine_minimal, - 'termine_maximal' => $veranstaltung->termine_maximal, - ]); + self::JSON([ + 'termine' => $response, + 'berechtigt_anfordern' => $berechtigt_anfordern, + 'berechtigt_ablehnen' => $berechtigt_ablehnen, + 'berechtigt_akzeptieren' => (bool)$berechtigt_fuer_akzeptieren, + 'termine_minimal' => $veranstaltung->termine_minimal, + 'termine_maximal' => $veranstaltung->termine_maximal, + ]); - } + } } diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 134719a..945c845 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -4,2394 +4,2468 @@ */ // kein direkter Zugriff +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; + defined('_JEXEC') or die('Restricted access'); -require_once(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'views/sportsmanager/view_tools.php'); +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_tools.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; class HTML_sportsmanager_admin { - static function adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $unabhaengige_ansicht, $externe_datenbank) - { - global $params; + static function adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $externe_datenbank): void + { + global $params; - $filter_saison = null; - foreach ($saisons as $saison) - { - if ($filter_saison_id == $saison->saison_id) - { - $filter_saison = $saison->saisonbezeichnung; - break; - } - } - - ?> -
Sports - Manager + ?> + - - +
+ - + - + - + - + - + - + - + - + - + - + - + - 0) - { - ?> + 0) { + ?> - + - + - + - + - + - +
+ href=""> + href=""> + href=""> + href=""> + href=""> + href=""> + href=""> + href="">
+ href=""> + href=""> + href=""> + href=""> + href=""> + href=""> + href=""> + href="">
- 0) - { - ?> + 0) { + ?>
- : - - saison_id . "\" " . ($filter_saison_id == $saison->saison_id ? "selected" : "") . ">" . htmlentities_utf8($saison->saisonbezeichnung) . ""; - ?> + saison_id . "\" " . ($filter_saison_id == $saison->saison_id ? "selected" : "") . ">" . htmlentities_utf8($saison->saisonbezeichnung) . ""; + ?> -
- 0 && $statistik["teamspielmodi"] > 0 && $statistik["saisons"] > 0) - { - ?> + 0 && $statistik["teamspielmodi"] > 0 && $statistik["saisons"] > 0) { + ?> -
+ - +
- 0) - { - ?> + 0) { + ?> - - - - - - - - + + + + + + + + - + $k = 0; + foreach ($veranstaltungen as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + - - teams > 1) { ?> - - - - + + + - teams > 1) { ?> - - - + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + - - teams == 0 && !$beschraenkter_zugriff_veranstaltungen) { ?> + + teams == 0 && !$beschraenkter_zugriff_veranstaltungen) { ?> - + - +
- - - - + + + +
- bezeichnung); - } else - { - ?> + bezeichnung); + } else + { + ?> bezeichnung)); ?> kategorie); ?> reihenfolge); ?> veranstalterkuerzel) ? $row->veranstalterbezeichnung : $row->veranstalterkuerzel); ?>teams; ?> + teams; ?> begegnungen; ?> + teams > 1) { ?> + begegnungen; ?> begegnungen; ?>begegnungen; ?> erster_tag, $row->letzter_tag, true))); ?>Mannschaftswechsel status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> + href="veranstaltung_id . '&vorlage=1'); ?>"> + href="veranstaltung_id); ?>" + onclick="return confirm('');" + title="">
- +   - 0 && $statistik["saisons"] > 0) - { - ?> + 0 && $statistik["saisons"] > 0) { + ?> -
+ - +
- 0) - { - ?> + 0) { + ?> - - - - - - + + + + + - + $k = 0; + foreach ($turniere as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - + - + - +
- - + + +
- erster_tag, $row->letzter_tag, true))); - } - else - { - ?> + erster_tag, $row->letzter_tag, true))); + } else { + ?> erster_tag, $row->letzter_tag, true))); ?> - + - turnierbezeichnung); - if (!empty($row->disziplinen)) - { - ?> + turnierbezeichnung); + if (!empty($row->disziplinen)) { + ?>
disziplinen; ?> - +
kategorie); ?> turnierort); ?> veranstalterkuerzel) ? $row->veranstalterbezeichnung : $row->veranstalterkuerzel); ?>disziplinen_anzahl . " / " . $row->disziplinen_mit_meldung_anzahl; ?> + disziplinen_anzahl . " / " . $row->disziplinen_mit_meldung_anzahl; ?> + href="turnier_id . '&vorlage=1'); ?>"> + href="turnier_id); ?>" + onclick="return confirm('');" + title="">
- +   - 0) - { - ?> + 0) { + ?> -
+ - +
- 0) - { - ?> + 0) { + ?> - - - - - - + + + + + + - + $k = 0; + foreach ($ranglisten as $rangliste) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> - +
- - - + + +
bezeichnung)); ?> + href="rangliste_id); ?>">bezeichnung)); ?> kategorie); ?> reihenfolge); ?>turnierdisziplinen; ?> + turnierdisziplinen; ?> erster_tag, $rangliste->letzter_tag, true))); ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> + href="rangliste_id); ?>"> + href="rangliste_id); ?>" + onclick="return confirm('');" + title="">
- +   - 0 && $statistik["saisons"] > 0) - { - ?> + 0 && $statistik["saisons"] > 0) { + ?> -
+ - +
- 0) - { - ?> + 0) { + ?> - - - - - - + + + + + - + $k = 0; + foreach ($individualwettbewerbe as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + - - - + + - + - +
+ - - - + + +
- bezeichnung); - } else - { - ?> + bezeichnung); + } else + { + ?> bezeichnung)); ?> kategorie); ?> reihenfolge); ?> veranstalterkuerzel) ? $row->veranstalterbezeichnung : $row->veranstalterkuerzel); ?>spiele; ?> + spiele; ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?>status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + href="individualwettbewerb_id . '&vorlage=1'); ?>"> + href="individualwettbewerb_id); ?>" + onclick="return confirm('');" + title="">
- +   - 0) - { - ?> + 0) { + ?> -
+ - +
- 0) - { - ?> + 0) { + ?> - - - - - - + + + + + + - + $k = 0; + foreach ($spielerstatistiken as $spielerstatistik) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - +
- - - + + +
bezeichnung)); ?> + href="bestenliste_id); ?>">bezeichnung)); ?> kategorie); ?> reihenfolge); ?>veranstaltungen; ?> + veranstaltungen; ?> erster_tag, $spielerstatistik->letzter_tag, true))); ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + href="bestenliste_id); ?>"> + href="bestenliste_id); ?>" + onclick="return confirm('');" + title="">
- +   - -
- :
+ static function adminEinstellungen($einstellungen): void + { + global $params; + ?> +
+ :
-
- - - -
-
- - - - - - - - - - - - - - - - - - -
- : - - "/> -
- : - - -
- : - - -
- : - - -
- : - - + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - ?>"/> - - - - - +
+ + + "/> +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
  + +
+
Key + "/> +
+ aud)) { + echo _payload($einstellungen['api_push_key'])->aud; } - ?> - -
- : - - -
- : - - -
- : - - -
- : - - -
  -
API Einstellungen
Key - "/> -
Push-Serveraud)) - { - echo _payload($einstellungen['api_push_key'], true)->aud; - } + ?>"/>
+ +
Aktivierte Domain - -
+
+
+ -
-
- - - +
- -
+ static function adminDatenbank($einstellungen): void + { + global $params; + ?> +
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - -
- : - - "/> -
- : - - "/> -
- : - - "/> -
- : - - "/> -
- : - - "/> -
- : - - "/> -
- : - - "/> -
  +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + "/> +
+ + + "/> +
+ + + "/> +
+ + + "/> +
+ + + "/> +
+ + + "/> +
+ + + "/> +
 
+
+
+
-
-
- - - +
- -
- :
- - + ?> +
+ :
+
+ - + - + - + - + - + - + - + - + - + - + - +
+ href="">
+ href="">
+ href=""> + href=""> + href=""> + href="">
+ href=""> + href=""> + href=""> + href=""> + href=""> + href=""> + href="">
+ href="">
+ style="width: 100%">
- - - + - - + - + - - - - - + + + + - - + - +
: + + : + + :: + + :
::: + + : + : + : : + + :
  - +
- : - " + + " onchange="document.adminForm.spezialfilter.value = '';"/> - - + " . Text::_('COM_SPORTSMANAGER_PLAYERS_SEARCH_SPECIAL') . ""; + echo ""; + echo ""; + echo ""; + ?> - - + + onClick="if (document.adminForm.spezialfilter.value !== '') { document.adminForm.filter.value = ''; }"/>
- 0) { - $bilder_anzeigen = false; - foreach ($rows as $spieler) - { - if (bildHTML("spieler", $spieler->spieler_id, 30, 40, 0, 0) != null) - { - $bilder_anzeigen = true; - break; - } - } - ?> + if (!is_null($rows) && count($rows) > 0) { + $bilder_anzeigen = false; + foreach ($rows as $spieler) { + if (bildHTML("spieler", $spieler->spieler_id, 30, 40) != null) { + $bilder_anzeigen = true; + break; + } + } + ?> - - - - - - - + + + + + + + - + $k = 0; + foreach ($rows as $row) { + ?> - + +
- - + +
- + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + - + - aktueller_verein_id) || (!$beschraenkter_zugriff && $row->teamspiele == 0 && $row->turniermeldungen == 0 && $row->individualwettbewerbspiele == 0 && $row->individualwettbewerbausgangsplatzierungen == 0 && $row->teammitgliedschaften == 0)) - { - ?> + aktueller_verein_id)) { + ?> - + - +
+ - - - +
nachname . ", " . $row->vorname)); ?> - spieler_id, 30, 40, 0, 0, 'border="1"'); - if ($bild != null) - echo $bild; - ?> + + + spieler_id, 30, 40, 0, 0, 'border="1"'); + if ($bild != null) + echo $bild; + ?>
geschlecht); ?> geburtsjahr != null) echo $row->geburtsjahr; ?> kategorie); ?>vereinsname != null ? htmlentities_utf8($row->vereinsname) : JText::_('COM_SPORTSMANAGER_NONE'); ?>vereinsname != null ? htmlentities_utf8($row->vereinsname) : Text::_('COM_SPORTSMANAGER_NONE'); ?> spielernr != null ? htmlentities_utf8($row->spielernr) : ""; ?> lizenznr != null ? htmlentities_utf8($row->lizenznr) : ""; ?> - aktueller_verein_id)) { ?> - - - teamspiele == 0 && $row->turniermeldungen == 0 && $row->individualwettbewerbspiele == 0 && $row->individualwettbewerbausgangsplatzierungen == 0 && $row->teammitgliedschaften == 0) { ?> - - + aktueller_verein_id)) { ?> + + + teamspiele == 0 && $row->turniermeldungen == 0 && $row->individualwettbewerbspiele == 0 && $row->individualwettbewerbausgangsplatzierungen == 0 && $row->teammitgliedschaften == 0) { ?> + +
 
- -
- :
+ static function adminEditSpieler($row, $naechste_spielernr, $filter, $vereine, $vereinsmitgliedschaften, $beschraenkter_zugriff, $ansprechpartner_spielerdaten): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - - - nachname); - ?> -
- : - - - - vorname); - ?> -
- : - - - - lizenz); - ?> -
- : - - - - geschlecht != "M" ? JText::_('COM_SPORTSMANAGER_FEMALE') : JText::_('COM_SPORTSMANAGER_MALE'); - ?> -
- : - - - - - - geburtsdatum != null) - echo htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false, true)); - ?> -
- : - - -
- : - - -
- : - - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - 0) - { - ?> - - spielernr); - ?> -
- : - - - - lizenznr); - ?> -
- : - - -
- : - - spieler_id, 0, 0, 320, 240, 'border="1"') : null; - if (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3") - { - if ($bild != null) - { - ?> - -

-

-

- - -

- -
- : - - - - : - - JText::_('COM_SPORTSMANAGER_ACTIVE'), 2 => JText::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => JText::_('COM_SPORTSMANAGER_PASSIVE'), 0 => JText::_('COM_SPORTSMANAGER_BEATEN')); - foreach ($vereine as $verein) - { - if ($verein->verein_id == $vereinsmitgliedschaften[$i]->verein_id) - { - echo htmlentities_utf8($verein->vereinsname . ($verein->verein_ausgetreten ? " (" . JText::_('COM_SPORTSMANAGER_BEATEN_CLUB') . ")" : "") . (" (" . $werte[$vereinsmitgliedschaften[$i]->mitgliedsstatus] . ")")); - break; - } - } - } - ?> -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + + + nachname); + ?> +
+ + + + + vorname); + ?> +
+ + + + + lizenz); + ?> +
+ + + + + geschlecht != "M" ? Text::_('COM_SPORTSMANAGER_FEMALE') : Text::_('COM_SPORTSMANAGER_MALE'); + ?> +
+ + + + + + + geburtsdatum != null) + echo htmlentities_utf8(FormatiertesDatum($row->geburtsdatum, false)); + ?> +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + 0) { + ?> + + spielernr); + ?> +
+ + + + + lizenznr); + ?> +
+ + + +
+ + + spieler_id, 0, 0, 320, 240, 'border="1"') : null; + if (!$beschraenkter_zugriff || $ansprechpartner_spielerdaten == "1" || $ansprechpartner_spielerdaten == "3") { + if ($bild != null) { + ?> + +

+

+

+ + +

+ +
+ + + + + + + Text::_('COM_SPORTSMANAGER_ACTIVE'), 2 => Text::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => Text::_('COM_SPORTSMANAGER_PASSIVE'), 0 => Text::_('COM_SPORTSMANAGER_BEATEN')); + foreach ($vereine as $verein) { + if ($verein->verein_id == $vereinsmitgliedschaften[$i]->verein_id) { + echo htmlentities_utf8($verein->vereinsname . ($verein->verein_ausgetreten ? " (" . Text::_('COM_SPORTSMANAGER_BEATEN_CLUB') . ")" : "") . (" (" . $werte[$vereinsmitgliedschaften[$i]->mitgliedsstatus] . ")")); + break; + } + } + } + ?> +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
+ static function adminRemoveInaktiveSpieler($spieler, $filter): void + { + global $params; + ?> +
-
- - + + + + +
-
- - - + + + + +
- : - - - - - - +
- - -
-
+ + - -
+
+ + + + - - - - -
+ + + + + + + - - - - - -
+ + +
+
- - - nachname . ", " . $s->vorname) . htmlentities_utf8($s->spielernr != null && $s->spielernr != "" ? (" (" . $s->spielernr . ")") : ""); - ?> -
-
  -
-
+ as $s) + { + ?> +
+ + + nachname . ", " . $s->vorname) . htmlentities_utf8($s->spielernr != null && $s->spielernr != "" ? (" (" . $s->spielernr . ")") : ""); + ?> +
+
  +
+
+
+
- - + - -
+ static function adminSpielerZusammenlegen($spieler, $filter): void + { + global $params; + ?> +
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- - +
- -
+ static function adminExportSpieler($beschraenkter_zugriff, $ansprechpartner_exportieren, $veranstalter, $vereine): void + { + global $params; + ?> +
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + +
  -
-
+
+
+
+
- -
- -
- :
+ static function adminExportSpielerInternational(): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - + +
- : - - -
- - - -
  +
+ + + - -
+
+ + + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- -
- -
+ static function adminImportSpieler(): void + { + global $params; + ?> +
-
- - + +
-
- - - - - - + +
- : - - -
  +
+ + + - -
+
+ + + + + + + - -
+ : + + +
  -
-
+
+
+
+
- -
- vereinsname) - { - $verein_import_id = $verein->verein_id; - break; - } - } - } + $verein_import_id = 0; + if (!empty($verein_import) && !empty($vereine)) { + foreach ($vereine as $verein) { + if ($verein_import == $verein->vereinsname) { + $verein_import_id = $verein->verein_id; + break; + } + } + } - ?> -
+ ?> +
- - - - - + + + + +
-
- - + +
-
- - - - - - - - - - - - - - + +
- : - - -
- - -
- veranstalterbezeichnung) ? JText::_('COM_SPORTSMANAGER_CLUB_WITHOUT_ORGANISATION') : (JText::_('COM_SPORTSMANAGER_CLUBS') . $v->veranstalterbezeichnung)); - ?> - - + + - -
+
+ + + + + + + + + + + + + + + - - - - + + + + - -
+ + + +
+ + +
+ + + -
  + } + ?> + +
  -
-
+
+
+
+
- - +
- -
+ ?> +
- 0) - { - ?> - - + 0) { + ?> + +
- 0) - { - ?> + 0) { + ?> + style="width: 100%">
- + - + $k = 0; + foreach ($spieler as $s) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname . ", " . $s->vorname); ?>
  - + ?>
-
- -
+ ?> +
: Importinhalt prüfen
- - - - - namensgleich > 0) - { - ?> - - + + + + + namensgleich > 0) { + ?> + +
- 0 && $spieler[0]->namensgleich > 0) - { - ?> + 0 && $spieler[0]->namensgleich > 0) { + ?> + style="width: 100%">
- + - namensgleich == 0) - break; - ?> + $k = 0; + foreach ($spieler as $s) { + if ($s->namensgleich == 0) + break; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname . ", " . $s->vorname); ?>
  - 0 && $spieler[$spieler_anzahl - 1]->namensgleich == 0) - { - ?> + if ($spieler_anzahl > 0 && $spieler[$spieler_anzahl - 1]->namensgleich == 0) { + ?> + style="width: 100%">
- - - + + + - namensgleich > 0) - continue; - ?> + $k = 0; + foreach ($spieler as $s) { + if ($s->namensgleich > 0) + continue; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname . ", " . $s->vorname); ?> nachname_alt != null ? $s->nachname_alt : $s->nachname) . ", " . ($s->vorname_alt != null ? $s->vorname_alt : $s->vorname)); ?> - nachname_alt != null) - similar_text($s->nachname, $s->nachname_alt, $p1); - if ($s->vorname_alt != null) - similar_text($s->vorname, $s->vorname_alt, $p2); - echo htmlentities_utf8(floor($p1) . "% / " . floor($p2) . "%"); - ?> + nachname_alt != null) + similar_text($s->nachname, $s->nachname_alt, $p1); + if ($s->vorname_alt != null) + similar_text($s->vorname, $s->vorname_alt, $p2); + echo htmlentities_utf8(floor($p1) . "% / " . floor($p2) . "%"); + ?>
  - + ?>
- + - - + - - - + - + @@ -2400,36 +2474,36 @@ class HTML_sportsmanager_admin
- -
- :
- + ?> +
+ :
+
- +
- - + +
+ href="">
@@ -2437,1533 +2511,1524 @@ class HTML_sportsmanager_admin + style="width: 100%">
- - + + - - + - - +
: + :
- + + :
- + + :
  - 0 && $spieler_import[0]->namensgleich > 0) - { - ?> + 0 && $spieler_import[0]->namensgleich > 0) { + ?> + style="width: 100%">
- + - namensgleich == 0) - break; - ?> + $k = 0; + foreach ($spieler_import as $s) { + if ($s->namensgleich == 0) + break; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname . ", " . $s->vorname); ?>
  - $n && ($spieler_import[$n]->nachname_alt != null || $spieler_import[$n]->vorname_alt != null)) - { - ?> + if ($spieler_anzahl > $n && ($spieler_import[$n]->nachname_alt != null || $spieler_import[$n]->vorname_alt != null)) { + ?> + style="width: 100%">
- - - + + + - $n) - { - $s = $spieler_import[$n]; - if ($s->nachname_alt == null && $s->vorname_alt == null) - break; - ?> + $k = 0; + while ($spieler_anzahl > $n) { + $s = $spieler_import[$n]; + if ($s->nachname_alt == null && $s->vorname_alt == null) + break; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname . ", " . $s->vorname); ?> nachname_alt != null ? $s->nachname_alt : $s->nachname) . ", " . ($s->vorname_alt != null ? $s->vorname_alt : $s->vorname)); ?> - nachname_alt != null) - similar_text($s->nachname, $s->nachname_alt, $p1); - if ($s->vorname_alt != null) - similar_text($s->vorname, $s->vorname_alt, $p2); - echo htmlentities_utf8(floor($p1) . "% / " . floor($p2) . "%"); - ?> + nachname_alt != null) + similar_text($s->nachname, $s->nachname_alt, $p1); + if ($s->vorname_alt != null) + similar_text($s->vorname, $s->vorname_alt, $p2); + echo htmlentities_utf8(floor($p1) . "% / " . floor($p2) . "%"); + ?>
  - 0) - { - ?> + if (count($vereineManuell) > 0) { + ?> + style="width: 100%">
- + - + $k = 0; + foreach ($vereineManuell as $name) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
  - 0) - { - ?> + if (count($ausgetreteneVereineMitAktivenMitgliedern) > 0) { + ?> + style="width: 100%">
- + - + $k = 0; + foreach ($ausgetreteneVereineMitAktivenMitgliedern as $verein) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
  - + if (!empty($spielerHinzugefuegt)) { + ?> + style="width: 100%">
- - + + - + $k = 0; + foreach ($spielerHinzugefuegt as $s) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
  - -
- + ?> +
+
- + - +
+ href="">
- +
- 0) - { - ?> + $k = 0; + if (count($verteiler) > 0) { + ?> -
- + +
- - - + + + - + - - - + - + - +
- + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + bezeichnung)); ?> - bezeichnung)); - } - ?> + bezeichnung)); + } + ?> - + + verteiler); ?> X + href="verteiler_id); ?>" + onclick="return confirm('');" + title="">X
- 0) - { - ?> + $k = 0; + if (count($organisationen) > 0) { + ?> -
- + +
- - - + + + - + - - - +
- veranstalterbezeichnung); ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + veranstalterbezeichnung); ?> - veranstalter_id]) && !empty($organisationen_mailverteiler[$organisation->veranstalter_id])) - { - ?> - - + + veranstalter_id]) && !empty($organisationen_mailverteiler[$organisation->veranstalter_id])) { + ?> + + - veranstalter_id . "p"]) && !empty($organisationen_mailverteiler[$organisation->veranstalter_id . "p"])) - echo htmlentities_utf8($organisationen_mailverteiler[$organisation->veranstalter_id . "p"]); - ?> + veranstalter_id . "p"]) && !empty($organisationen_mailverteiler[$organisation->veranstalter_id . "p"])) + echo htmlentities_utf8($organisationen_mailverteiler[$organisation->veranstalter_id . "p"]); + ?>
  - 0) - { - ?> + $k = 0; + if (count($veranstaltungen) > 0) { + ?> -
- - saison_id) - echo htmlentities_utf8(JText::_('COM_SPORTSMANAGER_SEASON') . " " . $saison->saisonbezeichnung); - } - ?> + + + saison_id) + echo htmlentities_utf8(Text::_('COM_SPORTSMANAGER_SEASON') . " " . $saison->saisonbezeichnung); + } + ?>
- - - + + + - + - - - +
- bezeichnung); ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + bezeichnung); ?> - veranstaltung_id]) && !empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id])) - { - ?> - - + + veranstaltung_id]) && !empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id])) { + ?> + + - veranstaltung_id . "p"]) && !empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"])) - echo htmlentities_utf8($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"]); - ?> + veranstaltung_id . "p"]) && !empty($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"])) + echo htmlentities_utf8($veranstaltungen_mailverteiler[$veranstaltung->veranstaltung_id . "p"]); + ?>
- -
- :
+ static function adminEditVerteiler($row): void + { + global $params; + ?> +
+ :
-
- - - -
-
- - - - - - - - - - + + + - -
- : - - -
- : - - -
  +
  -
-
+ + + +
+ + + + - - + "/> - -
saisonbezeichnung); ?>
- + ?> +
saisonbezeichnung); ?>
+
+ href="">
- +
-
- + +
- +
- +
- +
- +
- + - - + + - + + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + - +
- zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : JText::_('COM_SPORTSMANAGER_NONE2')); - ?> + zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : Text::_('COM_SPORTSMANAGER_NONE2')); + ?> neuzugaenge); ?>neuzugaenge); ?>
- +   - 0) - { - ?> + 0) { + ?> -
- + +
- - + + - + + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + - +
- zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : JText::_('COM_SPORTSMANAGER_NONE2')); - ?> + zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : Text::_('COM_SPORTSMANAGER_NONE2')); + ?> mitglieder); ?>mitglieder); ?>
  - 0) - { - ?> + $k = 0; + if (count($rechnungen) > 0) { + ?> -
- + +
- - - - + + + + - + - - - - + + href="rechnung_id); ?>" + onclick="return confirm('');" + title="">X - +
+ $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + bezeichnung)); ?> - zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : JText::_('COM_SPORTSMANAGER_NONE2')); - ?> + + zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : Text::_('COM_SPORTSMANAGER_NONE2')); + ?> - notiz)); ?> + + notiz)); ?> mitglieder); ?>mitglieder); ?> X
- + static function adminEditRechnung($row, $veranstalter, $vereine): void + { + global $params; + ?>
- Mitgliederrechnung:
+ Mitgliederrechnung:
-
- - - -
-
- - - - - - - - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - -
- : - - -
- : - - -
- : - - zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : JText::_('COM_SPORTSMANAGER_NONE2')); - } - else - { - ?> - - +
+ + + zuordnungbezeichnung != null ? $row->zuordnungbezeichnung : Text::_('COM_SPORTSMANAGER_NONE2')); + } else { + ?> + + -
- : - - JText::_('COM_SPORTSMANAGER_ACTIVE'), 2 => JText::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => JText::_('COM_SPORTSMANAGER_PASSIVE')); - foreach ($werte as $wert => $bezeichnung) - { - if (pow(2, $wert) & $row->mitgliedsstatus) - array_push($mitgliedsstatus, $bezeichnung); - } - echo htmlentities_utf8(implode(", ", $mitgliedsstatus)); - } - else - { - ?> - - -
- : - - JText::_('COM_SPORTSMANAGER_CATEGORY_ALL'), 11 => JText::_('COM_SPORTSMANAGER_ALL_NO_JUNIOR'), 7 => JText::_('COM_SPORTSMANAGER_ALL_NO_SENIOR'), 3 => JText::_('COM_SPORTSMANAGER_ALL_NO_JUNIOR_SENIOR'), 4 => JText::_('COM_SPORTSMANAGER_CATEGORY_JUNIORS'), 8 => JText::_('COM_SPORTSMANAGER_CATEGORY_SENIORS')); - if ($row != null) - { - echo $wertungskategorie[$row->wertungskategorie]; - } - else - { - ?> - - -
  +
+ + + Text::_('COM_SPORTSMANAGER_ACTIVE'), 2 => Text::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => Text::_('COM_SPORTSMANAGER_PASSIVE')); + foreach ($werte as $wert => $bezeichnung) { + if (pow(2, $wert) & $row->mitgliedsstatus) + $mitgliedsstatus[] = $bezeichnung; + } + echo htmlentities_utf8(implode(", ", $mitgliedsstatus)); + } else { + ?> + + +
+ + + Text::_('COM_SPORTSMANAGER_CATEGORY_ALL'), 11 => Text::_('COM_SPORTSMANAGER_ALL_NO_JUNIOR'), 7 => Text::_('COM_SPORTSMANAGER_ALL_NO_SENIOR'), 3 => Text::_('COM_SPORTSMANAGER_ALL_NO_JUNIOR_SENIOR'), 4 => Text::_('COM_SPORTSMANAGER_CATEGORY_JUNIORS'), 8 => Text::_('COM_SPORTSMANAGER_CATEGORY_SENIORS')); + if ($row != null) { + echo $wertungskategorie[$row->wertungskategorie]; + } else { + ?> + + +
  -
-
+ + + + + + + + - - + "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href=""> + href=""> + href=""> + href="">
- 0) - { - $bilder_anzeigen = false; - foreach ($rows as $verein) - { - if (bildHTML("vereine", $verein->verein_id, 28, 28, 0, 0) != null) - { - $bilder_anzeigen = true; - break; - } - } + if (count($rows) > 0) { + $bilder_anzeigen = false; + foreach ($rows as $verein) { + if (bildHTML("vereine", $verein->verein_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } + } - if ($organisationAnzeigen) - { - $organisation = $rows[0]->veranstalterbezeichnung; - ?> + if ($organisationAnzeigen) { + $organisation = $rows[0]->veranstalterbezeichnung; + ?> -
- + +
- + - - - - + + + + - veranstalterbezeichnung != $organisation) - { - $organisation = $row->veranstalterbezeichnung; - ?> + $k = 0; + foreach ($rows as $row) { + if ($organisationAnzeigen) { + if ($row->veranstalterbezeichnung != $organisation) { + $organisation = $row->veranstalterbezeichnung; + ?>
 
- + style="width: 100%"> +
- - - - + + + + - + + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - + + href="verein_id); ?>" + onclick="return confirm('');" + title="">X - +
- +
- - - +
- vereinsname)); ?> + vereinsname)); ?> - verein_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - ?> + + + verein_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + ?>
mitglieder; ?> + mitglieder; ?> vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?>ausgetreten ? JText::_('COM_SPORTSMANAGER_YES') : JText::_('COM_SPORTSMANAGER_NO'); ?>ausgetreten ? Text::_('COM_SPORTSMANAGER_YES') : Text::_('COM_SPORTSMANAGER_NO'); ?> X
- +   - -
- :
+ static function adminEditVerein($row, $users, $veranstalter, $berechtigt_fuer_verein, $vereinsansprechpartner): void + { + global $params; + ?> +
+ :
" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data"> -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - -
- - / : - - - -
- : - - -
- : - - -
- : - - -
- Heimspielort-Name: - - -
- Heimspielort-Webseite: - - -
- Heimspielort-Anschrift: - - -
- Heimspielort-Anschrift-Webseite: - - -
- - : - - "/> -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - + + + - - - "; - } - ?> + + + + + + + + + + + + + + + + + + + + + -
- -
+ + : + + "/> +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
-
- : - - -
- : - - verein_id, 0, 0, 240, 240, 'border="0"')) != null) - { - ?> - -

-

-

- - -

- -
  -
-
+ + + + : + + + + + + + "; + } + ?> + +
+ +
+ + + + + + + + + + + + + + + + + + verein_id, 0, 0, 240, 240, 'border="0"')) != null) { + ?> + +

+

+

+ + +

+ + + + +   - - + + + + + + + + + + "/>
- -
+ static function adminVereineZusammenlegen($vereine): void + { + global $params; + ?> +
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- - +
- -
+ ?> +
'vereinsname); ?> - ':
- + ': +
+ href="">
+ href="verein_id); ?>">
- 0) - { - ?> + if (count($vereinsmitglieder) > 0) { + ?> - - - - + + + + - JText::_('COM_SPORTSMANAGER_ACTIVE'), 2 => JText::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => JText::_('COM_SPORTSMANAGER_PASSIVE'), 0 => JText::_('COM_SPORTSMANAGER_BEATEN')); - foreach ($vereinsmitglieder as $row) - { - ?> + $k = 0; + $mitgliedsstatus = array(1 => Text::_('COM_SPORTSMANAGER_ACTIVE'), 2 => Text::_('COM_SPORTSMANAGER_RESTRICTED'), 3 => Text::_('COM_SPORTSMANAGER_PASSIVE'), 0 => Text::_('COM_SPORTSMANAGER_BEATEN')); + foreach ($vereinsmitglieder as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
nachname)); ?> + href="verein_id . '&id=' . $row->mitglied_von_verein_id); ?>">nachname)); ?> vorname); ?> spielernr); ?> mitgliedsstatus]); ?> - aktueller_verein_id)) { ?> - - - X + aktueller_verein_id)) { ?> + + + X
- -
+ static function adminEditVereinsmitglied($row, $verein, $spieler): void + { + global $params; + ?> +
'vereinsname); ?> - ':
+ ':
-
- - + +
-
- - - - - - - - - - - - + +
- : - - nachname . ", " . $row->vorname); - } - else - { - ?> - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + - -
+ + + nachname . ", " . $row->vorname); + } else { + ?> + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href=""> + href="">
- 0) - { - $ortsname = $rows[0]->ortsname; - if (!empty($ortsname)) - { - ?> + if (count($rows) > 0) { + $ortsname = $rows[0]->ortsname; + if (!empty($ortsname)) { + ?> -
- + +
- + - - - - - - + + + + + + - ortsname != $ortsname) - { - $ortsname = $row->ortsname; - ?> + $k = 0; + foreach ($rows as $row) { + if ($row->ortsname != $ortsname) { + $ortsname = $row->ortsname; + ?>
  - +
- + style="width: 100%"> +
- + - - - - - - + + + + + + - + + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + href="spielort_id); ?>" + onclick="return confirm('');" + title="">X - +
- +
- name)); ?> + name)); ?>
@@ -3973,594 +4038,652 @@ class HTML_sportsmanager_admin
ortsname)) echo htmlentities_utf8($row->ortsname); ?> ortsteil)) echo htmlentities_utf8($row->ortsteil); ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> X
- +   - -
- :
+ static function adminEditSpielort($row): void + { + global $params; + ?> +
+ :
" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data"> -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - -
- : - - -
- - / - / : - - - - -
- : - - -
- : - - -
- : - - -
  -
-
+ + + + + + + + + + + +   + + + +
+ + + + - - + "/> - -
+ static function adminSpielorteZusammenlegen($spielorte): void + { + global $params; + ?> +
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- - +
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - + + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> - veranstaltungen == 0) { ?> + veranstaltungen == 0) { ?> - + - +
bezeichnung)); ?> + href="teamspiel_modus_id); ?>">bezeichnung)); ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> + href="teamspiel_modus_id); ?>"> X + href="teamspiel_modus_id); ?>" + onclick="return confirm('');" + title="">X
- -
- :
+ static function adminEditTeamspielmodus($row): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - punkte_sieg_einzel == $row->punkte_sieg_doppel) echo " style=\"display:none\""; ?>> - - - - - - - - - - - - - - - - spielpunkte_wertung_einzel == $row->spielpunkte_wertung_doppel) echo " style=\"display:none\""; ?>> - - - - - - - - - - - - JText::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "E1" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 6", "S1" => JText::_('COM_SPORTSMANAGER_RESULT_ONLY')); - $modus = $row != null ? explode("|", $row->modus) : null; - $spiele = $modus != null && isset($modus[0]) ? explode(",", $modus[0]) : array(); - for ($spiel_nr = 1; $spiel_nr <= 36; $spiel_nr++) - { - ?> - - - - - - JText::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "D7" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 7", "D8" => JText::_('COM_SPORTSMANAGER_DOUBLES') . " 8"); - $spieltyp_einzel = array("E1" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 6", "E7" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 7", "E8" => JText::_('COM_SPORTSMANAGER_SINGLES') . " 8"); - $verknuepfungen = $modus != null && isset($modus[1]) ? explode(",", $modus[1]) : array(); - for ($verknuepfung_nr = 1; $verknuepfung_nr <= 6; $verknuepfung_nr++) - { - ?> - - - - - - - + +
- : - - -
- : - - -
- : - - - -
- : - - -
- : - - -
- : - - -
- : - - - -
- : - - -
- : - - -
- : - - -
- : - - - - - - -
- - - - : - -
-
- Verknüpfung Nr. : - - - - - - - -
- - - - - -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + + punkte_sieg_einzel == $row->punkte_sieg_doppel) echo " style=\"display:none\""; ?>> + + + + + + + + + + + + + + + + spielpunkte_wertung_einzel == $row->spielpunkte_wertung_doppel) echo " style=\"display:none\""; ?>> + + + + + + + + + + + + Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "E1" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 6", "S1" => Text::_('COM_SPORTSMANAGER_RESULT_ONLY')); + $modus = $row != null ? explode("|", $row->modus) : null; + $spiele = $modus != null && isset($modus[0]) ? explode(",", $modus[0]) : array(); + for ($spiel_nr = 1; $spiel_nr <= 36; $spiel_nr++) { + ?> + + + + + + Text::_('COM_SPORTSMANAGER_DOUBLES') . " 1", "D2" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 2", "D3" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 3", "D4" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 4", "D5" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 5", "D6" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 6", "D7" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 7", "D8" => Text::_('COM_SPORTSMANAGER_DOUBLES') . " 8"); + $spieltyp_einzel = array("E1" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 1", "E2" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 2", "E3" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 3", "E4" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 4", "E5" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 5", "E6" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 6", "E7" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 7", "E8" => Text::_('COM_SPORTSMANAGER_SINGLES') . " 8"); + $verknuepfungen = $modus != null && isset($modus[1]) ? explode(",", $modus[1]) : array(); + for ($verknuepfung_nr = 1; $verknuepfung_nr <= 6; $verknuepfung_nr++) { + ?> + + + + + + + - -
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + : + + + + + + +
+ + + + + +
+
+ Verknüpfung Nr. : + + + + + + + +
+ + + + + +
+
  -
-
+
+
+
+
- - + "/> "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - veranstaltungen == 0) { ?> + veranstaltungen == 0) { ?> - + - +
bezeichnung)); ?> + href="verschieberegel_id); ?>">bezeichnung)); ?> X + href="verschieberegel_id); ?>" + onclick="return confirm('Willst du die Verschieberegel wirklich entfernen?');" + title="">X
- -
- :
+ static function adminEditVerschiebenModus($row): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
+ ?> +
-
- - + +
-
- - - - - - - - - - - - - + + +
-
-

- -

-
-
- - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + - - -
+
+

+ +

+
+
+ + + +
  -
-
+
+
+
+
- - +
- -
- :
- + ?> +
+ :
+
+ href="">
+ href=""> + href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - + + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + - ranglisten == 0 && $row->ranglistenturnierdisziplinen == 0) { ?> + ranglisten == 0 && $row->ranglistenturnierdisziplinen == 0) { ?> - + - +
systembezeichnung)); ?> + href="rangliste_system_id); ?>">systembezeichnung)); ?> rangliste_system_id]) echo "Fehlerhaft! "; - echo htmlentities_utf8($row->status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?>rangliste_system_id]) echo "Fehlerhaft! "; + echo htmlentities_utf8($row->status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + href="rangliste_system_id); ?>"> X + href="rangliste_system_id); ?>" + onclick="return confirm('');" + title="">X
- -
- :
+ static function adminEditRanglistensystem($row, $punkte, $typ): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - +
+
- : - - -
- : - - -
+ + - -
+
+ - - - - - - - - - + + + + + + + + + + + + + + + + - -
- + + - - - - - - - - +
- : - - -
-
- -
  +
+ + + +
+ + + + + + + + + + +
+ + + +
+
+ +
  -
-
+
+
+ + + + - - + "/>
- -
- :
+ static function adminRanglistensystemAuswertung($row, $teilnehmer, $multiplikator, $teilnehmerpunkte): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - + +
- : - - systembezeichnung); ?> -
- : - - status ? JText::_('COM_SPORTSMANAGER_YES') : JText::_('COM_SPORTSMANAGER_NO')); ?> -
- : - - funktion != null) - { - ?> - funktion); ?> -
-
- - - - -
- : - - -
- : - - "/> -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + - -
+ : + + systembezeichnung); ?> +
+ : + + status ? Text::_('COM_SPORTSMANAGER_YES') : Text::_('COM_SPORTSMANAGER_NO')); ?> +
+ : + + funktion != null) { + ?> + funktion); ?> +
+
+ + + + +
+ + + +
+ + + "/> +
  -
-
+
+
+
+
- - -
  - 0) - { - ?> + 0) { + ?> - - + + - $punkte) - { - ?> + $k = 0; + foreach ($teilnehmerpunkte as $platz => $punkte) { + ?> - - - +
- + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + - + +
  - -
- :
+ static function adminEditRangliste($rangliste, $systeme, $kategorien, $saisons): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - -
- : - - - - -
- : - - - -
- : - - -
- : - - lizenzen) && in_array($lizenz, $rangliste->lizenzen)) ? ' checked': ''; - echo '
'; - } - ?> -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + + +
+ + + +
+ : + + lizenzen) && in_array($lizenz, $rangliste->lizenzen)) ? ' checked' : ''; + echo '
'; + } + ?> +
+ + + +
+ + + +
vstyle="text-align: right"> + + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
+ ?> +
'bezeichnung); ?> - ':
- + ': +
+ href="">
+ href="rangliste_id); ?>"> + href="rangliste_id); ?>" + onclick="return confirm('');"> + href="rangliste_id); ?>" + onclick="return confirm('');">
- 0) - { - ?> + if (count($turnierdisziplinen) > 0) { + ?> - - - - + + + + - + $k = 0; + foreach ($turnierdisziplinen as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - + + href="rangliste_id . '&id=' . $row->rangliste_turnierdisziplin_id); ?>" + onclick="return confirm('');" + title="">X - +
turnierbezeichnung . (!empty($row->turnierort) ? (" in " . $row->turnierort) : "") . ": " . $row->disziplin); ?> + href="rangliste_id . '&id=' . $row->rangliste_turnierdisziplin_id); ?>">turnierbezeichnung . (!empty($row->turnierort) ? (" in " . $row->turnierort) : "") . ": " . $row->disziplin); ?> systembezeichnung != null ? $row->systembezeichnung : JText::_('COM_SPORTSMANAGER_RANKING_SETTING')); ?>systembezeichnung != null ? $row->systembezeichnung : Text::_('COM_SPORTSMANAGER_RANKING_SETTING')); ?> - wertung >= 0 ? ($row->wertung . "-fach") : ("1/" . abs($row->wertung) . "-fach"); - if ($row->doppel_teilwertung != 1) - echo ", DT: " . ($row->doppel_teilwertung == 0 ? JText::_('COM_SPORTSMANAGER_NONE2') : ("1/" . abs($row->doppel_teilwertung) . "-fach")); - ?> + wertung >= 0 ? ($row->wertung . "-fach") : ("1/" . abs($row->wertung) . "-fach"); + if ($row->doppel_teilwertung != 1) + echo ", DT: " . ($row->doppel_teilwertung == 0 ? Text::_('COM_SPORTSMANAGER_NONE2') : ("1/" . abs($row->doppel_teilwertung) . "-fach")); + ?> beginn); ?> X
- -
+ static function adminEditRanglisteTurnierdisziplin($rangliste, $ranglisteTurnierdisziplin, $turnierdisziplinen, $systeme): void + { + global $params; + ?> +
'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
- :
+ static function adminEditSpielerstatistik($spielerstatistik, $kategorien, $saisons): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - -
- : - - - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
+ ?> +
'bezeichnung); ?> - ':
- + ': +
+ href="">
+ href="bestenliste_id); ?>"> + href="bestenliste_id); ?>"> + href="bestenliste_id); ?>" + onclick="return confirm('');">
- 0) - { - ?> + if (count($veranstaltungen) > 0) { + ?> - - - + + + - + $k = 0; + foreach ($veranstaltungen as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="bestenliste_id . '&id=' . $row->bestenliste_veranstaltung_id); ?>" + onclick="return confirm('');" + title="">X - +
bezeichnung); ?> + href="bestenliste_id . '&id=' . $row->bestenliste_veranstaltung_id); ?>">bezeichnung); ?> erster_tag, false, false)); ?> letzter_tag, false, false)); ?> X
  - 0) - { - ?> + if (count($individualwettbewerbe) > 0) { + ?> - - + - + $k = 0; + foreach ($individualwettbewerbe as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="bestenliste_id . '&id=' . $row->bestenliste_individualwettbewerb_id); ?>" + onclick="return confirm('');" + title="">X - +
+
bezeichnung); ?> + href="bestenliste_id . '&id=' . $row->bestenliste_individualwettbewerb_id); ?>">bezeichnung); ?> saisonbezeichnung); ?> X
  - + static function adminEditSpielerstatistikVeranstaltung($spielerstatistik, $spielerstatistikVeranstaltung, $veranstaltungen): void + { + global $params; + ?>
Veranstaltung in Spielerstatistik 'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - + +
- : - - -
  +
+ + + - -
+
+ + + + + + + - -
+ + + +
  -
-
+
+
+
+
- - + "/>
- + static function adminEditSpielerstatistikIndividualwettbewerb($spielerstatistik, $spielerstatistikIndividualwettbewerb, $individualwettbewerbe): void + { + global $params; + ?>
Individualwettbewerb in Spielerstatistik 'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - + +
- : - - -
  +
+ + + - -
+
+ + + + + + + - -
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - - + + + - + - - + + href="moderator_id); ?>" + onclick="return confirm('Willst du den Moderator wirklich entfernen?');" + title="">X - +
name)); ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + name)); ?> username); ?>zugriffe; ?>zugriffe; ?> X
- + static function adminEditModerator($row, $zugriffe, $users): void + { + global $params; + ?>
- Moderator:
+ Moderator:
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- : - - - -
- JText::_('COM_SPORTSMANAGER_MANAGE_MODERATORS'), - "basiseinstellungen_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_BASIC_SETTING'), - "kategorien_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_CATEGORIES'), - "organisationen_aendern" => JText::_('COM_SPORTSMANAGER_MANAGING_ORGANISATIONS'), - "saisons_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_SEASONS'), - "spieler_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_PLAYERS'), - "spieler_lesen_erweiterte_daten" => JText::_('COM_SPORTSMANAGER_PRIVATE_PLAYER_DATA'), - "vereine_aendern" => JText::_('COM_SPORTSMANAGER_ASSOCIATIONS_MEMBERSHIPS_MANAGE'), - "einstufungen_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_CLASSIFICATIONS'), - "mannschaftsspielplaene_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_TEAM_PLANS'), - "verschieberegeln_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_RULES_POSTPONEMENT'), - "spielorte_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_VENUES'), - "mannschaftswettbewerb_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_TEAM_COMPETITIONS'), - "spielerstatistiken_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_PLAYER_STATISTICS'), - "turniere_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_TOURNAMENTS'), - "individualwettbewerbe_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_INDIVIDUAL_COMPETITIONS'), - "ranglistenwertungen_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_RANKING_VOTES'), - "ranglisten_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_RANKING'), - "rechnungen_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_MEMBERS_BILLS'), - "verteiler_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_DISTRIBUTIORS'), - "verteiler_lesen" => JText::_('COM_SPORTSMANAGER_READ_DISTRIBUTIORS'), - "termine_aendern" => JText::_('COM_SPORTSMANAGER_MANAGE_EVENTS'), - "termine_benachrichtigung" => JText::_('COM_SPORTSMANAGER_NOTIFICATION_APPOINTMENTS')); - foreach ($werte as $wert => $bezeichnung) - { - $auswahl = false; - if ($row != null) - { - foreach ($zugriffe as $zugriff) - { - if ($zugriff->zugriff == $wert) - { - $auswahl = true; - break; - } - } - } - ?> - " /> -
- -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + + +
+ Text::_('COM_SPORTSMANAGER_MANAGE_MODERATORS'), + "basiseinstellungen_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_BASIC_SETTING'), + "kategorien_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_CATEGORIES'), + "organisationen_aendern" => Text::_('COM_SPORTSMANAGER_MANAGING_ORGANISATIONS'), + "saisons_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_SEASONS'), + "spieler_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_PLAYERS'), + "spieler_lesen_erweiterte_daten" => Text::_('COM_SPORTSMANAGER_PRIVATE_PLAYER_DATA'), + "vereine_aendern" => Text::_('COM_SPORTSMANAGER_ASSOCIATIONS_MEMBERSHIPS_MANAGE'), + "einstufungen_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_CLASSIFICATIONS'), + "mannschaftsspielplaene_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_TEAM_PLANS'), + "verschieberegeln_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_RULES_POSTPONEMENT'), + "spielorte_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_VENUES'), + "mannschaftswettbewerb_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_TEAM_COMPETITIONS'), + "spielerstatistiken_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_PLAYER_STATISTICS'), + "turniere_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_TOURNAMENTS'), + "individualwettbewerbe_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_INDIVIDUAL_COMPETITIONS'), + "ranglistenwertungen_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_RANKING_VOTES'), + "ranglisten_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_RANKING'), + "rechnungen_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_MEMBERS_BILLS'), + "verteiler_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_DISTRIBUTIORS'), + "verteiler_lesen" => Text::_('COM_SPORTSMANAGER_READ_DISTRIBUTIORS'), + "termine_aendern" => Text::_('COM_SPORTSMANAGER_MANAGE_EVENTS'), + "termine_benachrichtigung" => Text::_('COM_SPORTSMANAGER_NOTIFICATION_APPOINTMENTS')); + foreach ($werte as $wert => $bezeichnung) { + $auswahl = false; + if ($row != null) { + foreach ($zugriffe as $zugriff) { + if ($zugriff->zugriff == $wert) { + $auswahl = true; + break; + } + } + } + ?> + +
+ +
  -
-
+
+
+
+
- - + "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - veranstaltungen == 0 && $row->turniere == 0 && $row->ranglisten == 0 && $row->bestenlisten == 0) { ?> + veranstaltungen == 0 && $row->turniere == 0 && $row->ranglisten == 0 && $row->bestenlisten == 0) { ?> - + - +
saisonbezeichnung)); ?> + href="saison_id); ?>">saisonbezeichnung)); ?> X + href="saison_id); ?>" + onclick="return confirm('');" + title="">X
- -
- :
+ static function adminEditSaison($row): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - + +
- : - - -
  +
+ + + - -
+
+ + + + + + - -
+ + + +
  -
-
+
+
+
+
- - + "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - - + + + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - veranstaltungen == 0 && $row->vereine == 0 && $row->turniere == 0 && $row->individualwettbewerbe == 0) { ?> + veranstaltungen == 0 && $row->vereine == 0 && $row->turniere == 0 && $row->individualwettbewerbe == 0) { ?> - + - +
KK
veranstalterbezeichnung)); ?> + href="veranstalter_id); ?>">veranstalterbezeichnung)); ?> kategorie); ?> veranstalterkuerzel); ?>X + href="veranstalter_id); ?>" + onclick="return confirm('');" + title="">X
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - - - - - + + + + + + - JText::_('COM_SPORTSMANAGER_GENERALLY'), 1 => JText::_('COM_SPORTSMANAGER_SINGLES'), 2 => JText::_('COM_SPORTSMANAGER_DOUBLES')); - $k = 0; - foreach ($rows as $row) - { - ?> + $typ = array(0 => Text::_('COM_SPORTSMANAGER_GENERALLY'), 1 => Text::_('COM_SPORTSMANAGER_SINGLES'), 2 => Text::_('COM_SPORTSMANAGER_DOUBLES')); + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - - - - + + + + + + href="einstufung_id); ?>" + onclick="return confirm('');" + title="">X - +
- +
bezeichnung)); ?> + href="einstufung_id); ?>">bezeichnung)); ?> typ]; ?>prioritaet; ?>elo_min)) echo $row->elo_min; ?>elo_max)) echo $row->elo_max; ?>ranglisten; ?>typ]; ?>prioritaet; ?>elo_min)) echo $row->elo_min; ?>elo_max)) echo $row->elo_max; ?>ranglisten; ?> X
- -
- :
+ static function adminEditEinstufung($row, $ranglisten): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - einstufung_rangliste_id != null) - array_push($ranglisten_beruecksichtigt, $rangliste->rangliste_id); - } - $n = count($ranglisten_beruecksichtigt); - } - for ($i = 0; $i <= $n + 3; $i++) - { - ?> - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - - -
- : - - - - : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + einstufung_rangliste_id != null) + $ranglisten_beruecksichtigt[] = $rangliste->rangliste_id; + } + $n = count($ranglisten_beruecksichtigt); + } + for ($i = 0; $i <= $n + 3; $i++) { + ?> + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ : + + + +
+ + + + + : + + +
  -
-
+
+
+
+
- - + "/>
- -
- :
+ static function adminEditVeranstalter($row, $berechtigt_fuer_veranstalter, $users, $kategorien): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - - - - - "; - } - ?> - -
- -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ : + + + + + + "; + } + ?> + +
+ +
+
  -
-
+
+
+
+
- - + "/>
- -
- :
+ static function adminEditVeranstaltung($row, $veranstalter, $spielmodus, $verschieberegeln, $kategorien, $saisons, $users, $berechtigt_fuer_veranstaltung, $vorlage): void + { + global $params; + ?> +
+ :
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - -
- : - - - - -
- : - - -
- : - - -
- : - - + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + + + +
+ + + +
+ + + +
+ + + -
- : - - -
- : - - -
- : - - -
- : - - - - - - "; - } - ?> - -
- -
-
- : - - veranstaltung_id, 0, 0, 720, 240, 'border="0"')) != null) - { - ?> - -

-

-

-

URL: - - -

-

URL: - -
- : - - veranstaltung_id, 0, 0, 600, 60, 'border="0"')) != null) - { - ?> - -

-

-

-

URL: - - -

-

URL: - -
  + 10 => Text::_('COM_SPORTSMANAGER_ONLY_DETAILED_RATING_POINT_DIFFERENCE'), + 11 => Text::_('COM_SPORTSMANAGER_ONLY_DETAILED_POINTS_AFTER_POINTSRATE'), + -1 => Text::_('COM_SPORTSMANAGER_KO_SIMPLE_FULL'), + -2 => Text::_('COM_SPORTSMANAGER_MANUAL_PRO_TEAMS') + ); + foreach ($typ as $typ_wert => $typ_bezeichnung) + echo ""; + ?> + +
+ + + +
+ + + +
+ + + +
+ : + + + + + + "; + } + ?> + +
+ +
+
+ + + veranstaltung_id, 0, 0, 720, 240, 'border="0"')) != null) { + ?> + +

+

+

+

+ + +

+

+ +
+ + + veranstaltung_id, 0, 0, 600, 60, 'border="0"')) != null) { + ?> + +

+

+

+

+ + +

+

URL: + +
 
+
+
+ -
-
- - - + "/>
- -
+ ?> +
'bezeichnung); ?> - ':
- + ': +
+ href="">
+ href="veranstaltung_id); ?>"> + href="veranstaltung_id); ?>"> + href="veranstaltung_id); ?>">
- 0) - { - $bilder_anzeigen = false; - foreach ($rows as $team) - { - if (bildHTML("mannschaften", $team->team_id, 28, 28, 0, 0) != null) - { - $bilder_anzeigen = true; - break; - } - else if ($team->verein_id != null && bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"') != null) - { - $bilder_anzeigen = true; - break; - } - } - ?> + if (count($rows) > 0) { + $bilder_anzeigen = false; + foreach ($rows as $team) { + if (bildHTML("mannschaften", $team->team_id, 28, 28) != null) { + $bilder_anzeigen = true; + break; + } else if ($team->verein_id != null && bildHTML("vereine", $team->verein_id, 0, 0, 240, 240, 'border="0"') != null) { + $bilder_anzeigen = true; + break; + } + } + ?> - - - - + + + + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - + - begegnungen == 0) { ?> + begegnungen == 0) { ?> - + - +
- +
- +
- - - +
teamname)); ?> - team_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - else if ($row->verein_id != null) - { - $bild = bildHTML("vereine", $row->verein_id, 28, 28, 0, 0, 'border="0"'); - if ($bild != null) - echo $bild; - } + + + team_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + else if ($row->verein_id != null) { + $bild = bildHTML("vereine", $row->verein_id, 28, 28, 0, 0, 'border="0"'); + if ($bild != null) + echo $bild; + } - ?> + ?>
verein_id != null ? htmlentities_utf8($row->vereinsname) : JText::_('COM_SPORTSMANAGER_NONE2'); ?>mitglieder_aktiv . " / " . ($row->mitglieder - $row->mitglieder_aktiv); ?> + verein_id != null ? htmlentities_utf8($row->vereinsname) : Text::_('COM_SPORTSMANAGER_NONE2'); ?>mitglieder_aktiv . " / " . ($row->mitglieder - $row->mitglieder_aktiv); ?> name)) echo htmlentities_utf8($row->name); ?>X + href="veranstaltung_id . '&id=' . $row->team_id); ?>" + onclick="return confirm('');" + title="">X
- -
+ static function adminEditMannschaft($veranstaltung, $row, $veranstaltungen, $vereine, $users, $berechtigt_fuer_team, $teamansprechpartner, $spielorte, $beschraenkter_zugriff_veranstaltungen): void + { + global $params; + ?> +
'bezeichnung); ?> - ':
+ ':
-
- - + + tabellenwertung <= 9) { + ?> + + + + + veranstaltung_id] = $v->bezeichnung . " (" . FormatiertesDatum($v->erster_tag, false, false) . " - " . FormatiertesDatum($v->letzter_tag, false, false) . ")"; + if ($row != null && $row->teamgruppe_id != null && $v->team_id != null) { + $veranstaltungen_beruecksichtigt[] = $v->veranstaltung_id; + $veranstaltungen_beruecksichtigt_begegnungen[] = $v->team_begegnungen; + $veranstaltungen_beruecksichtigt_moderator[] = $beschraenkter_zugriff_veranstaltungen ? $v->veranstaltung_moderator : 1; + } + } + $n = count($veranstaltungen_beruecksichtigt); + ?> + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
- - - - - tabellenwertung == -2) - { - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - tabellenwertung <= 9) - { - ?> - - - - - veranstaltung_id] = $v->bezeichnung . " (" . FormatiertesDatum($v->erster_tag, false, false) . " - " . FormatiertesDatum($v->letzter_tag, false, false) . ")"; - if ($row != null && $row->teamgruppe_id != null && $v->team_id != null) - { - array_push($veranstaltungen_beruecksichtigt, $v->veranstaltung_id); - array_push($veranstaltungen_beruecksichtigt_begegnungen, $v->team_begegnungen); - array_push($veranstaltungen_beruecksichtigt_moderator, $beschraenkter_zugriff_veranstaltungen ? $v->veranstaltung_moderator : 1); - } - } - $n = count($veranstaltungen_beruecksichtigt); - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - -
- : - - -
- : - - -
- : - - -
- : - - 0 || ($beschraenkter_zugriff_veranstaltungen && !$veranstaltungen_beruecksichtigt_moderator[$i]))) - { - echo htmlentities_utf8($veranstaltungen_bezeichnungen[$veranstaltungen_beruecksichtigt[$i]]); - echo ""; - } - else - { - ?> - - -
- - : - - "/> -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- - - +
+
+ + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - -
+
+ + + + + + tabellenwertung == -2) { + ?> - - - "; - } - ?> + + -
+ + + +
- -
+ + + +
-
- : - - -
- : - - team_id, 0, 0, 240, 240, 'border="0"')) != null) - { - ?> - -

-

-

- - -

- -
  + +
+ + + +
+ + + +
+ + + +
+ : + + + + +
+ + + +
+ + +
-
+ foreach ($typ as $typ_wert => $typ_bezeichnung) + echo ""; + ?> + +
+ + + +
+ + + 0 || ($beschraenkter_zugriff_veranstaltungen && !$veranstaltungen_beruecksichtigt_moderator[$i]))) { + echo htmlentities_utf8($veranstaltungen_bezeichnungen[$veranstaltungen_beruecksichtigt[$i]]); + echo ""; + } else { + ?> + + +
+ + : + + "/> +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + "; + } + ?> + +
+ +
+
+ + + +
+ : + + team_id, 0, 0, 240, 240, 'border="0"')) != null) { + ?> + +

+

+

+ + +

+ +
  + +
+
+ + + +
+ + + "/> - -
+ static function adminKopierenMannschaft($veranstaltung, $teams, $veranstaltungen): void + { + global $params; + ?> +
'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - - - - - - - - - + +
- : - - -
- team_id . "\">" . htmlentities_utf8($team->teamname) . "
"; - ?> -
- : - - -
- : - - -
- -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + - -
+ + + +
+ team_id . "\">" . htmlentities_utf8($team->teamname) . "
"; + ?> +
+ + + +
+ : + + +
+ +
  -
-
+
+
+
+
-
- -
+ static function adminVerknuepfenMannschaft($veranstaltung, $teams, $veranstaltungen): void + { + global $params; + ?> +
'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- team_id . "\">" . htmlentities_utf8($team->teamname) . "
"; - ?> -
- : - - -
- -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ team_id . "\">" . htmlentities_utf8($team->teamname) . "
"; + ?> +
+ : + + +
+ +
  -
-
+
+
+
+
- - +
- -
+ ?> +
'teamname); ?> - ':
- + ': +
- verein_id != 0) - { - ?> + verein_id != 0) { + ?> - + - +
+ href="veranstaltung_id); ?>">
+ href="team_id); ?>"> + href="team_id); ?>"> + href="team_id); ?>">
- 0) - { - $bilder_anzeigen = false; - foreach ($mitglieder as $row) - { - if (bildHTML("mannschaftsmitglieder", $row->mitglied_von_team_id, 30, 40, 0, 0) != null) - { - $bilder_anzeigen = true; - break; - } - else if (bildHTML("spieler", $row->spieler_id, 30, 40, 0, 0) != null) - { - $bilder_anzeigen = true; - break; - } - } - ?> + if (count($mitglieder) > 0) { + $bilder_anzeigen = false; + foreach ($mitglieder as $row) { + if (bildHTML("mannschaftsmitglieder", $row->mitglied_von_team_id, 30, 40) != null) { + $bilder_anzeigen = true; + break; + } else if (bildHTML("spieler", $row->spieler_id, 30, 40) != null) { + $bilder_anzeigen = true; + break; + } + } + ?> - - + + - + - + $k = 0; + foreach ($mitglieder as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - - + - +
- , + , - unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_FIRST_SHOWING') : JText::_('COM_SPORTSMANAGER_FIRST_ROUND'); ?> + unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_FIRST_SHOWING') : Text::_('COM_SPORTSMANAGER_FIRST_ROUND'); ?> - unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_LAST_PLAY_DAY') : JText::_('COM_SPORTSMANAGER_LAST_ROUND'); ?> + unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_LAST_PLAY_DAY') : Text::_('COM_SPORTSMANAGER_LAST_ROUND'); ?>
- +
- - - +
nachname . ", " . $row->vorname)); ?> - mitglied_von_team_id, 30, 40, 0, 0, 'border="1"'); - if ($bild != null) - echo $bild; - else - { - $bild = bildHTML("spieler", $row->spieler_id, 30, 40, 0, 0, 'border="1"'); - if ($bild != null) - echo $bild; - } + + + mitglied_von_team_id, 30, 40, 0, 0, 'border="1"'); + if ($bild != null) + echo $bild; + else { + $bild = bildHTML("spieler", $row->spieler_id, 30, 40, 0, 0, 'border="1"'); + if ($bild != null) + echo $bild; + } - ?> + ?>
spielernr); ?>anderes_team && $row->erster_spieltag != null) echo htmlentities_utf8(Rundenbezeichnung($row->erster_spieltag, $veranstaltung->unterteilung == 0, true)); ?>anderes_team && $row->letzter_spieltag != null) echo htmlentities_utf8(Rundenbezeichnung($row->letzter_spieltag, $veranstaltung->unterteilung == 0, true)); ?>anderes_team) echo JText::_('COM_SPORTSMANAGER_UNREPORTED'); else echo $row->ausgetreten ? JText::_('COM_SPORTSMANAGER_BEATEN') : JText::_('COM_SPORTSMANAGER_ACTIVE'); ?>anderes_team) echo Text::_('COM_SPORTSMANAGER_UNREPORTED'); else echo $row->ausgetreten ? Text::_('COM_SPORTSMANAGER_BEATEN') : Text::_('COM_SPORTSMANAGER_ACTIVE'); ?> - aktueller_verein_id)) { ?> - - - X + aktueller_verein_id)) { ?> + + + X
- -
nachname . ", " . $row->vorname) . "' "; ?> + static function adminEditMitglied($row, $team, $spieler, $spielberechtigungen, $veranstaltungsbezeichnungen, $veranstaltungen, $veranstaltungen_begegnungen, $entfernen): void + { + global $params; + ?> +
nachname . ", " . $row->vorname) . "' "; ?> in Mannschaft 'teamname); ?> - ':
+ ':
-
- - - -
-
- - - - + +
- : - - nachname . ", " . $row->vorname); - } - else - { - ?> - - - - - +
- - -
-
+ + + + + + + + + + + + + + + + - - - - -
+
+ + + + + - - - - - - - - - + ?> + + + +
+ : + + nachname . ", " . $row->vorname); + } else { + ?> + + + + + - - - - - -
+ + +
+
- - - nachname . ", " . $s->vorname) . htmlentities_utf8($s->spielernr != null && $s->spielernr != "" ? (" (" . $s->spielernr . ")") : ""); - $bild_vorhanden = bildHTML("spieler", $s->spieler_id, 0, 0, 180, 240) != null; - if ($bild_vorhanden || isset($spielberechtigungen[$s->spieler_id])) - { - ?> -
- - spieler_id])) - { - if ($bild_vorhanden) - echo "
"; - foreach ($spielberechtigungen[$s->spieler_id] as $index => $spielberechtigung) - { - if ($index != 0) - echo "
"; - echo htmlentities_utf8(isset($veranstaltungsbezeichnungen[$spielberechtigung[0]]) ? $veranstaltungsbezeichnungen[$spielberechtigung[0]] : JText::_('COM_SPORTSMANAGER_UKNOWN_EVENT')); - echo ", " . htmlentities_utf8(isset($veranstaltungsbezeichnungen[$spielberechtigung[4]]) ? $veranstaltungsbezeichnungen[$spielberechtigung[4]] : JText::_('COM_SPORTSMANAGER_UKNOWN_TEAM')); - if ($spielberechtigung[2] >= 2 || !empty($spielberechtigung[3])) - { - echo ": "; - if (empty($spielberechtigung[3])) // Letzter Spieltag ohne Einschränkung - echo JText::_('COM_SPORTSMANAGER_FROM') . " " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); - else if ($spielberechtigung[2] < 2) // Erster Spieltag ohne Einschränkung - echo JText::_('COM_SPORTSMANAGER_TO2') . " " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); - else if ($spielberechtigung[2] == $spielberechtigung[3]) // Erster Spieltag und letzter Spieltag gleich - echo JText::_('COM_SPORTSMANAGER_DURING') . " " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)); - else - echo htmlentities_utf8(Rundenbezeichnung($spielberechtigung[2], $spielberechtigung[1] == 0)) . " " . JText::_('COM_SPORTSMANAGER_TO') . " " . htmlentities_utf8(Rundenbezeichnung($spielberechtigung[3], $spielberechtigung[1] == 0)); - } - if ($spielberechtigung[5]) - echo ", " . JText::_('COM_SPORTSMANAGER_BEATEN'); - } - ?> -
- -
- -
- - 'bezeichnung); ?>': - - - - - - - mitglied_von_team_id)) echo ' style="display:none"'; ?>> - - - - mitglied_von_team_id)) echo ' style="display:none"'; ?>> - - - -
- : - - - -
- : - - erster_spieltag != null ? htmlentities_utf8(Rundenbezeichnung($v->erster_spieltag, $v->unterteilung == 0)) : JText::_('COM_SPORTSMANAGER_UNRESTRICTED'); - } - else - { - ?> - - - " erster_spieltag == 0 || (abs($v->erster_spieltag) >= 10000 && abs($v->erster_spieltag) < 20000)) echo 'style="visibility:hidden" '; ?>/> - erster_spieltag) < 20000) echo 'style="visibility:hidden" '; ?>/> - -
- : - - - - " letzter_spieltag == 0 || (abs($v->letzter_spieltag) >= 10000 && abs($v->letzter_spieltag) < 20000)) echo 'style="visibility:hidden" '; ?>/> - letzter_spieltag) < 20000) echo 'style="visibility:hidden" '; ?>/> - veranstaltung_id]) && count($veranstaltungen_begegnungen[$v->veranstaltung_id]) > 0) - { - echo "
"; - $termine = ""; - $n = 0; - foreach ($veranstaltungen_begegnungen[$v->veranstaltung_id] as $begegnung) - { - if (!empty($termine)) - $termine .= ", "; - if ($n == 3) - $termine .= "
"; - $termine .= Rundenbezeichnung($begegnung[0], $v->unterteilung == 0, false) . ": " . FormatiertesDatum($begegnung[1], false, false); - $n++; - } - echo "(" . $termine . ")"; - } - ?> -
-
+ +
+ + 'bezeichnung); ?>': + + + + + + + mitglied_von_team_id)) echo ' style="display:none"'; ?>> + + + + mitglied_von_team_id)) echo ' style="display:none"'; ?>> + + + +
+ + + + +
+ : + + erster_spieltag != null ? htmlentities_utf8(Rundenbezeichnung($v->erster_spieltag, $v->unterteilung == 0)) : Text::_('COM_SPORTSMANAGER_UNRESTRICTED'); + } else { + ?> + + + " erster_spieltag == 0 || (abs($v->erster_spieltag) >= 10000 && abs($v->erster_spieltag) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + erster_spieltag) < 20000) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + +
+ : + + + + " letzter_spieltag == 0 || (abs($v->letzter_spieltag) >= 10000 && abs($v->letzter_spieltag) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + letzter_spieltag) < 20000) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + veranstaltung_id]) && count($veranstaltungen_begegnungen[$v->veranstaltung_id]) > 0) { + echo "
"; + $termine = ""; + $n = 0; + foreach ($veranstaltungen_begegnungen[$v->veranstaltung_id] as $begegnung) { + if (!empty($termine)) + $termine .= ", "; + if ($n == 3) + $termine .= "
"; + $termine .= Rundenbezeichnung($begegnung[0], $v->unterteilung == 0) . ": " . FormatiertesDatum($begegnung[1], false, false); + $n++; + } + echo "(" . $termine . ")"; + } + ?> +
+
+ : + + mitglied_von_team_id, 0, 0, 320, 240, 'border="1"'); + if (!empty($bild)) { + ?> + +

+

+

+ + +

+ +
- : - - mitglied_von_team_id, 0, 0, 320, 240, 'border="1"'); - if (!empty($bild)) - { - ?> - -

-

-

- - -

- +
  +
  +
+ +
+
-
- - -
- - - + "/> - -
Spieler 'nachname . ", " . $spieler->vorname); ?>' in Mannschaft 'teamname); ?>': Entfernen
- - -
- - - - -
- - - - - - - - - - - - -
- : - - 1) { - ?> - Alle - - -
- bezeichnung); ?> - -
- : - - -
  -
-
+ static function adminBegegnungen($veranstaltung, $modus, $rows): void + { + global $params; - - - - -
- -
+ ?> +
'bezeichnung); ?> - ':
- + ': +
+ href="">
+ href="veranstaltung_id); ?>"> unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND_GENERATION'); ?> + href="veranstaltung_id); ?>">unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND_GENERATION'); ?> + href="veranstaltung_id); ?>"> + href="veranstaltung_id); ?>" + onclick="return confirm('');">
- 0) - { - ?> + if (count($rows) > 0) { + ?> - unterteilung == 0 || $veranstaltung->unterteilung == 1) - { - ?> + unterteilung == 0 || $veranstaltung->unterteilung == 1) { + ?> - - - - + + + + - + - heim_punkte != null || $row->gast_punkte != null) ? true : false; - ?> + $k = 0; + $spieltag = -1; + foreach ($rows as $row) { + $ergebnis_vorhanden = $row->heim_punkte != null || $row->gast_punkte != null; + ?> - unterteilung == 0 || $veranstaltung->unterteilung == 1) - { - ?> - - + - + style="text-align: center">heim_spielpunkte . " : " . $row->gast_spielpunkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?> + href="veranstaltung_id . '&id=' . $row->begegnung_id); ?>" + onclick="return confirm('');" + title="">X - +
- unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND'); ?> + unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND'); ?> - punktetyp == 0 ? JText::_('COM_SPORTSMANAGER_GOALS') : JText::_('COM_SPORTSMANAGER_SETS'); ?> + punktetyp == 0 ? Text::_('COM_SPORTSMANAGER_GOALS') : Text::_('COM_SPORTSMANAGER_SETS'); ?>
- - spieltag) - { - $spieltag = $row->spieltag; - echo htmlentities_utf8(Rundenbezeichnung($spieltag, $veranstaltung->unterteilung == 0, true)); - } - ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + unterteilung == 0 || $veranstaltung->unterteilung == 1) { + ?> + + + spieltag) { + $spieltag = $row->spieltag; + echo htmlentities_utf8(Rundenbezeichnung($spieltag, $veranstaltung->unterteilung == 0, true)); + } + ?> - zeitpunkt)); - if ($row->verlegung_eingetragen != null) - echo " **"; - else if ($row->verlegt != 0) - echo " *"; - if ($row->nichtraucherschutz == 0 && ((($row->heim_nichtraucherschutz == 1 || $row->heim_nichtraucherschutz == 2 || $row->heim_nichtraucherschutz == 3) && ($row->gast_nichtraucherschutz == 3 || $row->gast_nichtraucherschutz == 7 || $row->gast_nichtraucherschutz == 8)) || (($row->heim_nichtraucherschutz == 5 || $row->heim_nichtraucherschutz == 6 || $row->heim_nichtraucherschutz == 8) && ($row->gast_nichtraucherschutz == 1 || $row->gast_nichtraucherschutz == 4 || $row->gast_nichtraucherschutz == 5)))) - echo " !"; - ?> + href="veranstaltung_id . '&id=' . $row->begegnung_id); ?>"> + zeitpunkt)); + if ($row->verlegung_eingetragen != null) + echo " **"; + else if ($row->verlegt != 0) + echo " *"; + if ($row->nichtraucherschutz == 0 && ((($row->heim_nichtraucherschutz == 1 || $row->heim_nichtraucherschutz == 2 || $row->heim_nichtraucherschutz == 3) && ($row->gast_nichtraucherschutz == 3 || $row->gast_nichtraucherschutz == 7 || $row->gast_nichtraucherschutz == 8)) || (($row->heim_nichtraucherschutz == 5 || $row->heim_nichtraucherschutz == 6 || $row->heim_nichtraucherschutz == 8) && ($row->gast_nichtraucherschutz == 1 || $row->gast_nichtraucherschutz == 4 || $row->gast_nichtraucherschutz == 5)))) + echo " !"; + ?> - tisch) && (!$ergebnis_vorhanden || ($ergebnis_vorhanden && $row->zwischenergebnis))) - echo "
" . JText::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; - ?> + tisch) && (!$ergebnis_vorhanden || $row->zwischenergebnis)) + echo "
" . Text::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; + ?>
heim_name); ?> gast_name); ?>heim_punkte . " : " . $row->gast_punkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?> +
heim_punkte . " : " . $row->gast_punkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?>
heim_spielpunkte . " : " . $row->gast_spielpunkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?>
+ href="veranstaltung_id . '&id=' . $row->begegnung_id); ?>"> X
- -
+ static function adminEditBegegnung($veranstaltung, $row, $neuer_eintrag, $teams, $spielorte): void + { + global $params; + ?> +
'bezeichnung); ?> - ':
+ ':
-
-
- - + +
-
- - - - - unterteilung == 0 || $veranstaltung->unterteilung == 1) - { - ?> - - - + +
- : - - - - - - -
- unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND'); ?> - : - - + +
+ + + - -
+
+ + + + + + unterteilung == 0 || $veranstaltung->unterteilung == 1) { + ?> + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + + + + + +
+ unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND'); ?> + : + + - - " spieltag == 0 || (abs($row->spieltag) >= 10000 && abs($row->spieltag) < 20000)) echo 'style="visibility:hidden" '; ?>/> - spieltag) < 20000) echo 'style="visibility:hidden" '; ?>/> -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  + + " spieltag == 0 || (abs($row->spieltag) >= 10000 && abs($row->spieltag) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + spieltag) < 20000) echo 'style="visibility:hidden" '; ?> + aria-label=""/> +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - +   - 0) - { - ?> + static function adminVerlegenVerlauf($verlegen_aktionen): void + { + global $params; + if (count($verlegen_aktionen) > 0) { + ?> + style="width: 100%">
- - - - - - + + + + + + - + $k = 0; + $eingetragen = -1; + foreach ($verlegen_aktionen as $aktion) { + ?> - aktion != 0 || $eingetragen != $aktion->eingetragen) - { - switch ($aktion->aktion) - { - case 1: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_ACCEPTED_APPOINTMENT'); - break; - case 2: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_ORIGINAL_DATE'); - break; - case 3: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_DATE_REQUESTED'); - break; - case 4: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_SHIFT_REQUESTED'); - break; - case 5: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_MODIFIED_DATE_MODERATOR'); - break; - case 6: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_PROPOSED_RESULT'); - break; - case 7: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_ACCEPTED_RESULTS'); - break; - case 8: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_MODIFIED_RESULTS'); - break; - case 9: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_LIVE_RESULTS'); - break; - case 10: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_REJECTED_SHIFT'); - break; - default: - $aktion_beschreibung = JText::_('COM_SPORTSMANAGER_PROPOSED_APPOINTMENT'); - break; - } - ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + aktion != 0 || $eingetragen != $aktion->eingetragen) { + $aktion_beschreibung = match ($aktion->aktion) { + 1 => Text::_('COM_SPORTSMANAGER_ACCEPTED_APPOINTMENT'), + 2 => Text::_('COM_SPORTSMANAGER_ORIGINAL_DATE'), + 3 => Text::_('COM_SPORTSMANAGER_DATE_REQUESTED'), + 4 => Text::_('COM_SPORTSMANAGER_SHIFT_REQUESTED'), + 5 => Text::_('COM_SPORTSMANAGER_MODIFIED_DATE_MODERATOR'), + 6 => Text::_('COM_SPORTSMANAGER_PROPOSED_RESULT'), + 7 => Text::_('COM_SPORTSMANAGER_ACCEPTED_RESULTS'), + 8 => Text::_('COM_SPORTSMANAGER_MODIFIED_RESULTS'), + 9 => Text::_('COM_SPORTSMANAGER_LIVE_RESULTS'), + 10 => Text::_('COM_SPORTSMANAGER_REJECTED_SHIFT'), + default => Text::_('COM_SPORTSMANAGER_PROPOSED_APPOINTMENT'), + }; + ?> - + - eingetragen; - } - else - { - ?> + eingetragen; + } else { + ?> - + - +
eingetragen)); ?> team_id != null ? $aktion->team : JText::_('COM_SPORTSMANAGER_MODERATOR')); - if ($aktion->name != null) echo htmlentities_utf8(" (" . $aktion->name . ")"); ?>team_id != null ? $aktion->team : Text::_('COM_SPORTSMANAGER_MODERATOR')); + if ($aktion->name != null) echo htmlentities_utf8(" (" . $aktion->name . ")"); ?> verantwortlich_team_id != null) echo htmlentities_utf8($aktion->verantwortlich_team); ?> zeitpunkt != null) echo htmlentities_utf8(FormatiertesDatum($aktion->zeitpunkt)); ?> kommentar != null) echo htmlentities_utf8($aktion->kommentar); ?>
  - -
bezeichnung); ?>
+ ?> +
bezeichnung); ?>
-
- - + +
-
- - - - - tisch)) - { - ?> - - - - - unterteilung == 0 || $veranstaltung->unterteilung == 1) && $begegnung->spieltag != null) - { - ?> - - - - - - - - - - - - - - heim_spielpunkte != 0 || $begegnung->gast_spielpunkte != 0) - { - ?> - - - - - kommentar != null && !empty($begegnung->kommentar)) - { - ?> - - - - - - - - - - modus); - $spieltypen = isset($modus[0]) ? explode(",", $modus[0]) : array(); - $verknuepfungen = isset($modus[1]) ? explode(",", $modus[1]) : array(); - $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; - $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; - $spielpunkte_bedingung = $teamspiel_modus->spielpunkte_bedingung; - $spielernamen = $teamspiel_modus->spielernamen; +
+
- : - - zeitpunkt != null ? $begegnung->zeitpunkt : "N/A"; ?> -
- : - tisch); ?>
- unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND')); ?> - : - - spieltag, $veranstaltung->unterteilung == 0, true)); ?> -
- : - - teamname); ?> -
- : - - teamname); ?> - heimtausch) - { - ?> - - -
- : - heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>
- : - - kommentar); ?> -
- : - - -
+ + - -
+
+ + + + + + tisch)) { + ?> + + + + + unterteilung == 0 || $veranstaltung->unterteilung == 1) && $begegnung->spieltag != null) { + ?> + + + + + + + + + + + + + + heim_spielpunkte != 0 || $begegnung->gast_spielpunkte != 0) { + ?> + + + + + kommentar)) { + ?> + + + + + + + + + + modus); + $spieltypen = isset($modus[0]) ? explode(",", $modus[0]) : array(); + $verknuepfungen = isset($modus[1]) ? explode(",", $modus[1]) : array(); + $spielpunkte_wertung_einzel = $teamspiel_modus->spielpunkte_wertung_einzel; + $spielpunkte_wertung_doppel = $teamspiel_modus->spielpunkte_wertung_doppel; + $spielpunkte_bedingung = $teamspiel_modus->spielpunkte_bedingung; + $spielernamen = $teamspiel_modus->spielernamen; - if ($verknuepfungen != null) - { - foreach ($verknuepfungen as $verknuepfung) - { - $doppel = substr($verknuepfung, 0, 2); - $einzel1 = substr($verknuepfung, 2, 2); - $einzel2 = substr($verknuepfung, 4, 2); - $verknuepfungen_spieler[$doppel] = array($einzel1, $einzel2); - $verknuepfungen_spieler[$einzel1] = array($doppel); - $verknuepfungen_spieler[$einzel2] = array($doppel); - } - } - else - { - $verknuepfungen_spieler = array(); - } + if ($verknuepfungen != null) { + foreach ($verknuepfungen as $verknuepfung) { + $doppel = substr($verknuepfung, 0, 2); + $einzel1 = substr($verknuepfung, 2, 2); + $einzel2 = substr($verknuepfung, 4, 2); + $verknuepfungen_spieler[$doppel] = array($einzel1, $einzel2); + $verknuepfungen_spieler[$einzel1] = array($doppel); + $verknuepfungen_spieler[$einzel2] = array($doppel); + } + } else { + $verknuepfungen_spieler = array(); + } - $ergebnis_bestaetigen_zulaessig = !empty($bestaetigen) && !empty($begegnung->unbestaetigtes_ergebnis_id) && !$begegnung->zwischenergebnis && $begegnung->berechtigt_fuer_team_akzeptieren; - echo "\n"; - for ($spiel_nr = 1; $spiel_nr <= count($spieltypen); $spiel_nr++) - { - $spiel = null; - foreach ($spiele as $row) - { - if ($row->teamspiel_nummer == $spiel_nr) - $spiel = $row; - } - ?> - - + - - - - - - - - + + + + + + + + - -
+ : + + zeitpunkt != null ? $begegnung->zeitpunkt : "N/A"; ?> +
+ : + tisch); ?>
+ unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND')); ?> + : + + spieltag, $veranstaltung->unterteilung == 0, true)); ?> +
+ : + + teamname); ?> +
+ : + + teamname); ?> + heimtausch) { + ?> + + +
+ : + heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>
+ : + + kommentar); ?> +
+ + + +
  + if ($gast[0] == "D") { + // Späteres Gastspiel gefunden, an dem ein Spieler beteiligt ist + echo " case 'spiel_" . $i . "_gast_spieler_2_id':\n"; + for ($j = $i + 1; $j <= $n; $j++) { + $ziel = substr($spieltypen[$j - 1], 2, 2); + if ($gast == $ziel) + echo " document.adminForm.spiel_" . $j . "_gast_spieler_2_id.value = form.value;\n"; + else if (isset($verknuepfungen_spieler[$gast]) && in_array($ziel, $verknuepfungen_spieler[$gast]) && $verknuepfungen_spieler[$gast][1] == $ziel) + echo " document.adminForm.spiel_" . $j . "_gast_spieler_1_id.value = form.value;\n"; + } + echo " break;\n"; + } + } + } + } + echo " }\n" + . "}\n"; + } + if ($spielpunkte_bedingung != 0 && ($spielpunkte_wertung_einzel != 2 || $spielpunkte_wertung_doppel != 2)) { + echo "function spielpunkte_bedingung() {\n" + . " var spielpunkte_heim = 0;\n" + . " var spielpunkte_gast = 0;\n" + . " var spielpunkte_sieg_einzel = " . ($spielpunkte_wertung_einzel == 0 ? 2 : ($spielpunkte_wertung_einzel == 1 ? 3 : 1)) . ";\n" + . " var spielpunkte_sieg_doppel = " . ($spielpunkte_wertung_doppel == 0 ? 2 : ($spielpunkte_wertung_doppel == 1 ? 3 : 1)) . ";\n" + . " var spielpunkte_unentschieden_einzel = " . ($spielpunkte_wertung_einzel <= 1 ? 1 : 0) . ";\n" + . " var spielpunkte_unentschieden_doppel = " . ($spielpunkte_wertung_doppel <= 1 ? 1 : 0) . ";\n" + . " var punkte_heim;\n" + . " var punkte_gast;\n"; + $n = count($spieltypen); + for ($i = 1; $i <= $n; $i++) { + $spiel_einzel = $spieltypen[$i - 1][0] != "D"; + if (($spiel_einzel && $spielpunkte_wertung_einzel == 2) || (!$spiel_einzel && $spielpunkte_wertung_doppel == 2)) + continue; + echo " punkte_heim = document.adminForm.spiel_" . $i . "_heim_punkte.value != '' ? document.adminForm.spiel_" . $i . "_heim_punkte.value : 0;\n" + . " punkte_gast = document.adminForm.spiel_" . $i . "_gast_punkte.value != '' ? document.adminForm.spiel_" . $i . "_gast_punkte.value : 0;\n" + . " if (punkte_heim > punkte_gast)\n" + . " spielpunkte_heim += " . ($spiel_einzel ? "spielpunkte_sieg_einzel" : "spielpunkte_sieg_doppel") . ";\n" + . " else if (punkte_heim < punkte_gast)\n" + . " spielpunkte_gast += " . ($spiel_einzel ? "spielpunkte_sieg_einzel" : "spielpunkte_sieg_doppel") . ";\n" + . " else if (punkte_heim > 0) {\n" + . " spielpunkte_heim += " . ($spiel_einzel ? "spielpunkte_unentschieden_einzel" : "spielpunkte_unentschieden_doppel") . ";\n" + . " spielpunkte_gast += " . ($spiel_einzel ? "spielpunkte_unentschieden_einzel" : "spielpunkte_unentschieden_doppel") . ";\n" + . " }\n"; + } + if ($spielpunkte_bedingung > 0) + echo " return spielpunkte_heim >= " . $spielpunkte_bedingung . " || spielpunkte_gast >= " . $spielpunkte_bedingung . ";\n"; + else + echo " return spielpunkte_heim + spielpunkte_gast == " . abs($spielpunkte_bedingung) . ";\n"; + echo "}\n"; + } + if ($spielernamen != 0) { + echo "function spieler_eingetragen() {\n" + . " var punkte_heim;\n" + . " var punkte_gast;\n"; + $n = count($spieltypen); + for ($i = 1; $i <= $n; $i++) { + if ($spielernamen == 1) { + if ($spieltypen[$i - 1][0] != "D") + continue; + echo " punkte_heim = document.adminForm.spiel_" . $i . "_heim_punkte.value != '' ? document.adminForm.spiel_" . $i . "_heim_punkte.value : 0;\n" + . " punkte_gast = document.adminForm.spiel_" . $i . "_gast_punkte.value != '' ? document.adminForm.spiel_" . $i . "_gast_punkte.value : 0;\n" + . " if (punkte_heim != 0 || punkte_gast != 0) {\n" + . " if ((document.adminForm.spiel_" . $i . "_heim_spieler_1_id.value == 0 && document.adminForm.spiel_" . $i . "_heim_spieler_2_id.value != 0) || (document.adminForm.spiel_" . $i . "_heim_spieler_1_id.value != 0 && document.adminForm.spiel_" . $i . "_heim_spieler_2_id.value == 0))\n" + . " return false;\n" + . " if ((document.adminForm.spiel_" . $i . "_gast_spieler_1_id.value == 0 && document.adminForm.spiel_" . $i . "_gast_spieler_2_id.value != 0) || (document.adminForm.spiel_" . $i . "_gast_spieler_1_id.value != 0 && document.adminForm.spiel_" . $i . "_gast_spieler_2_id.value == 0))\n" + . " return false;\n" + . " }\n"; + } else { + if ($spieltypen[$i - 1][0] != "D" && $spieltypen[$i - 1][0] != "E") + continue; + echo " punkte_heim = document.adminForm.spiel_" . $i . "_heim_punkte.value != '' ? document.adminForm.spiel_" . $i . "_heim_punkte.value : 0;\n" + . " punkte_gast = document.adminForm.spiel_" . $i . "_gast_punkte.value != '' ? document.adminForm.spiel_" . $i . "_gast_punkte.value : 0;\n" + . " if (punkte_heim != 0 || punkte_gast != 0) {\n" + . " if (document.adminForm.spiel_" . $i . "_heim_spieler_1_id.value == 0 || document.adminForm.spiel_" . $i . "_gast_spieler_1_id.value == 0)\n" + . " return false;\n"; + if ($spieltypen[$i - 1][0] == "D") + echo " if (document.adminForm.spiel_" . $i . "_heim_spieler_2_id.value == 0 || document.adminForm.spiel_" . $i . "_gast_spieler_2_id.value == 0)\n" + . " return false;\n"; + echo " }\n"; + } + } + echo " return true;\n"; + echo "}\n"; + } + echo "\n"; + for ($spiel_nr = 1; $spiel_nr <= count($spieltypen); $spiel_nr++) { + $spiel = null; + foreach ($spiele as $row) { + if ($row->teamspiel_nummer == $spiel_nr) + $spiel = $row; + } + ?> +
  -
- - ( - ): - - - - - - - - - - - - - - - - - -
- - - - -
- - - -
- - - - - - - -
-
  +
+ + ( + ): + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +
+ + + + + + + +
+
  -
-
+
+
+ + + +
- - + class="button" /> - + /> - - + /> - - + "/> @@ -9274,1018 +9526,1061 @@ class HTML_sportsmanager_admin "/>

- > + >   - erster_tag != null ? substr($veranstaltung->erster_tag, 0, 4) : 0; - ?> -
+ static function adminBegegnungenGenerieren($veranstaltung, $rows): void + { + global $params; + $anzahlteams = count($rows); + $jahr = $veranstaltung->erster_tag != null ? substr($veranstaltung->erster_tag, 0, 4) : 0; + ?> +
'bezeichnung); ?> - ':
+ ':
-
- - + +
-
- - - - - - +
- . : - - - -
+ + - -
+
+ + + + + + + - - - - - - - + + + + + + - -
+ + + + +
- - : - - - - vs. - -
  + for ($teamnr = 1; $teamnr <= $anzahlteams; $teamnr += 2) { + ?> +
+ + : + + + + vs. + +
  -
-
+
+
+ + + + - - +
- erster_tag != null ? substr($veranstaltung->erster_tag, 0, 4) : 0; - ?> -
+ static function adminBegegnungenRundeErzeugen($veranstaltung, $rows, $row, $spielorte): void + { + global $params; + $anzahlteams = count($rows); + ?> +
'bezeichnung); ?> - ': unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND'); ?> + ': unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND'); ?> generieren
-
- - + +
-
- - - - - unterteilung == 0 || $veranstaltung->unterteilung == 1) - { - ?> - - - + +
- : - - - - - - - -
- unterteilung == 0 ? JText::_('COM_SPORTSMANAGER_GAMEDAY') : JText::_('COM_SPORTSMANAGER_ROUND'); ?> - : - - +
+ + + - -
+
+ + + + + + unterteilung == 0 || $veranstaltung->unterteilung == 1) { + ?> + + + - - - "> + " . Text::_('COM_SPORTSMANAGER_NONE2') . ""; + echo ""; + echo ""; + for ($i = 19999; $i >= 19992; $i--) { + echo ""; + } + ?> + + " spieltag == 0 || (abs($row->spieltag) >= 10000 && abs($row->spieltag) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + spieltag) < 20000) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + + + + - - - - - - - + + + + + + - -
+ + + + + + + + +
+ unterteilung == 0 ? Text::_('COM_SPORTSMANAGER_GAMEDAY') : Text::_('COM_SPORTSMANAGER_ROUND'); ?> + : + + - - " spieltag == 0 || (abs($row->spieltag) >= 10000 && abs($row->spieltag) < 20000)) echo 'style="visibility:hidden" '; ?>/> - spieltag) < 20000) echo 'style="visibility:hidden" '; ?>/> -
- - - - vs. - : - -
  + for ($teamnr = 1; $teamnr < $anzahlteams; $teamnr += 2) { + ?> +
+ + + + vs. + + +
  -
-
+
+
+
+
- - +
- -
- :
+ static function adminEditIndividualwettbewerb($row, $veranstalter, $kategorien, $saisons, $users, $berechtigt_fuer_individualwettbewerb, $vorlage): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - - - "; - } - ?> - -
- -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ : + + + + + + "; + } + ?> + +
+ +
+
  -
-
+
+
+
+
- - + "/>
- -
bezeichnung); ?>
- + ?> +
bezeichnung); ?>
+
- tabellenwertung) - { - ?> + tabellenwertung) { + ?> - +
+ href="">
+ href="individualwettbewerb_id); ?>"> + href="individualwettbewerb_id); ?>"> + href="individualwettbewerb_id); ?>">
- 0) - { - ?> + 0) { + ?> - - - - + + + + - + $k = 0; + foreach ($spiele as $spiel) { + ?> - + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + - + href="individualwettbewerb_id . '&id=' . $spiel->individualwettbewerb_spiel_id); ?>" + onclick="return confirm('');" + title="">X - +
- + + +
- zeitpunkt)); ?> + href="individualwettbewerb_id . '&id=' . $spiel->individualwettbewerb_spiel_id); ?>"> + zeitpunkt)); ?> - ergebnis != 2) - { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else - { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> + ergebnis != 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?>
ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis != 2 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> - ergebnis == 2) - { - echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); - if ($spiel->heim_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); - } - else - { - echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); - if ($spiel->gast_spieler_2_id != null) - echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); - } - ?> + ergebnis == 2) { + echo htmlentities_utf8(NichtLeererString($spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname)); + if ($spiel->heim_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname)); + } else { + echo htmlentities_utf8(NichtLeererString($spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname)); + if ($spiel->gast_spieler_2_id != null) + echo "
" . htmlentities_utf8(NichtLeererString($spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname)); + } + ?>
X
  - tabellenwertung && !empty($ausgangsplatzierungen)) - { - $anzahl_eintraege = count($ausgangsplatzierungen); - $anzahl_spalten = 1; - $anzahl_zeilen = 1; - $n = $anzahl_eintraege; - while ($n > $anzahl_spalten) - { - $n -= $anzahl_spalten; - $anzahl_spalten++; - $anzahl_zeilen++; - } + if ($individualwettbewerb->tabellenwertung && !empty($ausgangsplatzierungen)) { + $anzahl_eintraege = count($ausgangsplatzierungen); + $anzahl_spalten = 1; + $anzahl_zeilen = 1; + $n = $anzahl_eintraege; + while ($n > $anzahl_spalten) { + $n -= $anzahl_spalten; + $anzahl_spalten++; + $anzahl_zeilen++; + } - ?> + ?> + style="width: 100%">
- + - - - + - + - + - + - - - + - + - +
+ - +
+ - - - + + +
- - - spieler_id, $platz > 3 ? 30 : 57, $platz > 3 ? 40 : 76, 0, 0, 'border="1" hspace="8" vspace="2"')) != null) - echo ""; - ?> + spieler_id, 57, 76, 0, 0, 'border="1" hspace="8" vspace="2"')) != null) + echo ""; + ?> -
- " . $row->platz . ""; - ?> + + " . $row->platz . ""; + ?>
+ - nachname) . "
" . htmlentities_utf8($row->vorname); - ?> + nachname) . "
" . htmlentities_utf8($row->vorname); + ?>
" . $bild . "
" . $bild . "
- X + + X
- +
  - saetze; - $saetze = array(); - if ($row != null && !empty($row->ergebnis_detailliert)) - { - $details = explode(" ", $row->ergebnis_detailliert); - foreach ($details as $satz) - { - if (empty($satz)) - continue; - array_push($saetze, explode(":", $satz)); - } - } - ?> -
bezeichnung); ?>
+ $saetze_maximal = $individualwettbewerb->saetze; + $saetze = array(); + if ($row != null && !empty($row->ergebnis_detailliert)) { + $details = explode(" ", $row->ergebnis_detailliert); + foreach ($details as $satz) { + if (empty($satz)) + continue; + $saetze = array_merge($saetze, explode(":", $satz)); + } + } + ?> +
+ + bezeichnung); ?> +
-
-
- - + +
-
- - - - - - - - - - - - - - - - - - + + + +
- : - - - - - - -
- : - - - - - -
- vs. : - - - - - -
- : - - - - -
- -
  + +
+ + + - -
+
+ + + + + + + + + + + + + + + + -
+ + + + + + + +
+ : + + + + + +
+ vs. : + + + + + +
+ : + + +
-
+ for ($i = 0; $i <= $max_tore; $i++) + echo ""; + ?> + + +
+ +
  - - +
+
+
+
+ + + "/>
- -
bezeichnung); ?>
+ ?> +
bezeichnung); ?>
-
- - + +
-
- - - - - - - - - - + +
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- - +
- -
- :
+ static function adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - erster_tag == $row->letzter_tag) echo " style=\"display:none\""; ?>> - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - - " - class="button" onclick="letzter_tag_anzeigen();" id="button_mehrtaegig"/> -
- : - - - - -
- Berechtigte für Turnier: - - - - - - "; - } - ?> - -
- -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + erster_tag == $row->letzter_tag) echo " style=\"display:none\""; ?>> + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + " + class="button" onclick="letzter_tag_anzeigen();" + id="button_mehrtaegig"/> +
+ + + + + +
+ Berechtigte für Turnier: + + + + + + "; + } + ?> + +
+ +
+
  -
-
+
+
+
+
- - + "/> @@ -10585,1122 +10910,1168 @@ class HTML_sportsmanager_admin "/>
- + ?>
Turnierdisziplinen turnierbezeichnung . (!empty($turnier->turnierort) ? (" in " . $turnier->turnierort) : "") . " (" . FormatiertesDatum($turnier->erster_tag, false) . " - " . FormatiertesDatum($turnier->letzter_tag, false) . ")"); ?>
- +
+ href="">
Disziplin + href="turnier_id); ?>">Disziplin hinzufügen
- 0) - { - ?> + if (count($rows) > 0) { + ?> - - - + + - - + + - + $k = 0; + foreach ($rows as $row) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> + - + - +
DisziplinRVoranm. / Endpl. / + RVoranm. / Endpl. /
- disziplin); - } - else - { - ?> + disziplin); + } else { + ?> disziplin)); ?> - + kuerzel); ?> reihenfolge); ?>voranmeldungen . " / " . $row->meldungen . " / " . $row->spiele); ?> + voranmeldungen . " / " . $row->meldungen . " / " . $row->spiele); ?> beginn); ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> X + href="turnier_id . '&id=' . $row->turnierdisziplin_id); ?>" + onclick="return confirm('');" + title="">X
- -
turnierbezeichnung . " (" . FormatiertesDatum($turnier->erster_tag, false) . " - " . FormatiertesDatum($turnier->letzter_tag, false) . ")"); ?>
+ static function adminEditTurnierdisziplin($turnier, $row, $ranglisten, $systeme): void + { + global $params; + ?> +
turnierbezeichnung . " (" . FormatiertesDatum($turnier->erster_tag, false) . " - " . FormatiertesDatum($turnier->letzter_tag, false) . ")"); ?>
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - turnierdisziplin_id != null) - array_push($ranglisten_beruecksichtigt, $rangliste->rangliste_id); - } - $n = count($ranglisten_beruecksichtigt); - } - for ($i = 0; $i <= max(3, $n); $i++) - { - ?> - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - - - - - -
- : - - -
- : - - - : - -
- + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + turnierdisziplin_id != null) + $ranglisten_beruecksichtigt[] = $rangliste->rangliste_id; + } + $n = count($ranglisten_beruecksichtigt); + } + for ($i = 0; $i <= max(3, $n); $i++) { + ?> + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + + + +
+ - : - + + -
- : - - - - - - -
- : - - -
- : - - -
- : - - -
  + foreach ($wertungen as $wertung) { + echo ""; + } + ?> + +
+ + + + + + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - + "/>
- + static function adminExportTurniervoranmeldungen($turnierdisziplin, $ranglisten): void + { + global $params; + ?>
Turniervoranmeldungen exportieren turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" in " . $turnierdisziplin->turnierort) : "") . ": " . $turnierdisziplin->disziplin . " (" . FormatiertesDatum($turnierdisziplin->beginn) . ")"); ?>
-
- - + +
-
- - - - - - - - - - - - - typ != 0) - { - ?> - - - - - - - - - - - + +
- - - turnierbezeichnung); ?> -
- : - - disziplin); ?> -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + typ != 0) { + ?> + + + + + + + + + + + - -
+ + + turnierbezeichnung); ?> +
+ : + + disziplin); ?> +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- -
- -
turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
- + ?> +
turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
+
- 0 || count($meldungen[1]) > 0 || count($meldungen[2]) > 0 || count($meldungen[3]) > 0 || count($meldungen[10]) > 0 || count($meldungen[20]) > 0) - { - ?> + 0 || count($meldungen[1]) > 0 || count($meldungen[2]) > 0 || count($meldungen[3]) > 0 || count($meldungen[10]) > 0 || count($meldungen[20]) > 0) { + ?> - 0 || count($meldungen[1]) > 0) - { - ?> + 0 || count($meldungen[1]) > 0) { + ?> - 0 || count($meldungen[2]) > 0) - { - ?> + 0 || count($meldungen[2]) > 0) { + ?> - 0 || count($meldungen[3]) > 0) - { - ?> + 0 || count($meldungen[3]) > 0) { + ?> - 0 || count($meldungen[10]) > 0) - { - ?> + 0 || count($meldungen[10]) > 0) { + ?> - + - +
+ href="turnier_id); ?>">
+ href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>">
+ href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>" + onclick="return confirm('');">
+ href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>"> + href="turnierdisziplin_id); ?>">
+ style="width: 100%">
- - - + + + - + + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - + + - +
bezeichnung) ? $rundenstufen_details[$rundenstufe]->bezeichnung : rundenstufe($rundenstufe)); ?> + href="turnierdisziplin_id . '&rundenstufe=' . $rundenstufe); ?>">bezeichnung) ? $rundenstufen_details[$rundenstufe]->bezeichnung : rundenstufe($rundenstufe)); ?> - - - + + +
  - 0 || ($rundenstufe != 0 && $rundenstufe != 20 && count($spiele[$rundenstufe])) > 0) - { - ?> + 0 || ($rundenstufe != 0 && $rundenstufe != 20 && count($spiele[$rundenstufe])) > 0) { + ?> + style="width: 100%">
- 0) - { - ?> + if (count($meldungen[$rundenstufe]) > 0) { + ?> - - - - + + - + $k = 0; + $platz = -1; + foreach ($meldungen[$rundenstufe] as $meldung) { + ?> - - - - - +
+ + +
- platz) - { - $platz = $meldung->platz; - echo $platz != 0 ? $platz : JText::_('COM_SPORTSMANAGER_NONE'); - } - ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + + platz) { + $platz = $meldung->platz; + echo $platz != 0 ? $platz : Text::_('COM_SPORTSMANAGER_NONE'); + } + ?> - turniermeldung_id]); ?> + + + turniermeldung_id]); ?> X + href="turnierdisziplin_id . '&id=' . $meldung->turniermeldung_id); ?>" + onclick="return confirm('');" + title="">X
  - 0) - { - $ergebnis_detailliert_anzeigen = false; - foreach ($spiele[$rundenstufe] as $spiel) - { - if (!empty($spiel->ergebnis_detailliert)) - { - $ergebnis_detailliert_anzeigen = true; - break; - } - } - ?> + if ($rundenstufe != 0 && $rundenstufe != 20 && count($spiele[$rundenstufe]) > 0) { + $ergebnis_detailliert_anzeigen = false; + foreach ($spiele[$rundenstufe] as $spiel) { + if (!empty($spiel->ergebnis_detailliert)) { + $ergebnis_detailliert_anzeigen = true; + break; + } + } + ?> - - - - - - - + + + + + - + $runde = 0; + $k = 0; + foreach ($spiele[$rundenstufe] as $spiel) { + ?> - - - - + - - +
+ + + + - - + +
- runde) - { - $runde = $spiel->runde; - ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + + runde) { + $runde = $spiel->runde; + ?> - + - + - ergebnis == 1 ? NichtLeererString(htmlentities_utf8($meldungenSpielerNamen[$spiel->heim_meldung_id])) : NichtLeererString(htmlentities_utf8($meldungenSpielerNamen[$spiel->gast_meldung_id])); ?> + href="turnierdisziplin_id . '&id=' . $spiel->turnierspiel_id); ?>"> + ergebnis == 1 ? NichtLeererString(htmlentities_utf8($meldungenSpielerNamen[$spiel->heim_meldung_id])) : NichtLeererString(htmlentities_utf8($meldungenSpielerNamen[$spiel->gast_meldung_id])); ?> + ergebnis_detailliert)) echo str_replace(" ", " | ", $spiel->ergebnis == 1 ? $spiel->ergebnis_detailliert : runden_detailliert_invers($spiel->ergebnis_detailliert)); ?> ergebnis == 1 ? htmlentities_utf8($meldungenSpielerNamen[$spiel->gast_meldung_id]) : htmlentities_utf8($meldungenSpielerNamen[$spiel->heim_meldung_id]); ?> spiel_nummer != null) echo $spiel->spiel_nummer; ?> X + href="turnierdisziplin_id . '&id=' . $spiel->turnierspiel_id); ?>" + onclick="return confirm('');" + title="">X
  - -
turnierbezeichnung . (!empty($row->turnierort) ? (" in " . $row->turnierort) : "") . ": " . $row->disziplin . " (" . FormatiertesDatum($row->beginn) . ")"); ?>
+ static function adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter): void + { + global $params; + ?> +
turnierbezeichnung . (!empty($row->turnierort) ? (" in " . $row->turnierort) : "") . ": " . $row->disziplin . " (" . FormatiertesDatum($row->beginn) . ")"); ?>
- +
-
- - + +
-
- - - - - - - - - - - - - - - - - - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + + + + + + + + + - -
+ : + + +
+ : + + +
+ : + + +
+ : + + +
+ + + +
  -
-
+
+
+
+
- - +
- -
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" in " . $turnierdisziplin->turnierort) : "") . ": " . $turnierdisziplin->disziplin . " (" . FormatiertesDatum($turnierdisziplin->beginn) . ")"); ?>
+ static function adminEditTurnierdisziplinMeldung($meldung, $meldung_spieler, $turnierdisziplin, $spieler, $rundenstufen, $platzierungen, $weitere): void + { + global $params; + ?> +
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" in " . $turnierdisziplin->turnierort) : "") . ": " . $turnierdisziplin->disziplin . " (" . FormatiertesDatum($turnierdisziplin->beginn) . ")"); ?>
-
- - + +
-
- - - - - typ == 1) - { - ?> - - - - - - - - - - - + +
- : - - - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - -
- : - - - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - spieler_id != null) echo ' style="visibility:hidden"'; ?> /> - -
- : - - - - - - - - - -
- " . htmlentities_utf8(rundenstufe($rundenstufe)); - ?> - - - - : - - -
-
  +
+ + + - -
+
+ + + + + + typ == 1) { + ?> + + + + + + + + + + + - -
+ : + + + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + +
+ : + + + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + spieler_id != null) echo ' style="visibility:hidden"'; ?> + aria-label=""/> + +
+ : + + + + + + + + + +
+ " . htmlentities_utf8(rundenstufe($rundenstufe)); + ?> + + + + + + +
+
  -
-
+
+
+
+
- + - - - + + "/>
- -
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" " . JText::_('COM_SPORTSMANAGER_IN') . " " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
+ static function adminVerknuepfenTurnierdisziplinMeldung($disziplin, $meldungen): void + { + global $params; + ?> +
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" " . Text::_('COM_SPORTSMANAGER_IN') . " " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
-
- - + +
-
- 0) - { - $platzierung_anzeigen = false; - foreach ($meldungen[$rundenstufe] as $meldung) - { - if (!empty($meldung->platz)) - { - $platzierung_anzeigen = true; - break; - } - } - ?> +
+
+ + - -
+
+ + 0) { + $platzierung_anzeigen = false; + foreach ($meldungen[$rundenstufe] as $meldung) { + if (!empty($meldung->platz)) { + $platzierung_anzeigen = true; + break; + } + } + ?> + + + + + - - - - - - - - + - -
+ : + + + + + + + + + + + + + + + +
+ + + +
+ turniermeldung_id . "\">"; + ?> + + platz != 0 ? ($meldung->platz . ".") : ""; ?> + + typ == 0 ? NichtLeererString($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1)) : StringsZusammenfassen($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1), $meldung->verknuepft2 ? $meldung->name2 : hervorheben($meldung->name2))); + ?> +
+
- : + + : - - - - - - +
- - - -
+ - - - - - +
- turniermeldung_id . "\">"; - ?> + " . htmlentities_utf8(rundenstufe($rundenstufe)); + ?> - platz != 0 ? ($meldung->platz . ".") : ""; ?> - - typ == 0 ? NichtLeererString($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1)) : StringsZusammenfassen($meldung->verknuepft1 ? $meldung->name1 : hervorheben($meldung->name1), $meldung->verknuepft2 ? $meldung->name2 : hervorheben($meldung->name2))); - ?> +
- : - - - - - - - - -
- " . htmlentities_utf8(rundenstufe($rundenstufe)); - ?> - -
-
  +
  -
-
+
+
+ + + +
- - + - -
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" " . JText::_('COM_SPORTSMANAGER_IN') . " " . $turnierdisziplin->turnierort) : "") . ": " . $turnierdisziplin->disziplin . " (" . FormatiertesDatum($turnierdisziplin->beginn) . ")"); ?>
+ static function adminEditTurnierdisziplinRundenstufe($turnierdisziplin, $rundenstufe, $rundenstufen_details): void + { + global $params; + ?> +
turnierbezeichnung . (!empty($turnierdisziplin->turnierort) ? (" " . Text::_('COM_SPORTSMANAGER_IN') . " " . $turnierdisziplin->turnierort) : "") . ": " . $turnierdisziplin->disziplin . " (" . FormatiertesDatum($turnierdisziplin->beginn) . ")"); ?>
-
- - + +
-
- - - - - */ - ?> - - - - - typ != 7 && $rundenstufen_details->typ != 8 && $rundenstufen_details->typ != 9)) echo ' style="display:none"'; ?>> - - - - - - - - saetze == null) echo ' style="display:none"'; ?>> - - - - - + +
- : - - -
- : - - -
- : - - -
- : - - -
- : - - -
  +
+ + + - -
+
+ + + + + + typ != 7 && $rundenstufen_details->typ != 8 && $rundenstufen_details->typ != 9)) echo ' style="display:none"'; ?>> + + + + + + + + saetze == null) echo ' style="display:none"'; ?>> + + + + + - -
+ + + +
+ + + +
+ + + +
+ + + +
  -
-
+
+
+
+
- - +
- saetze : null; - $saetze = array(); - if ($row != null && !empty($row->ergebnis_detailliert)) - { - $details = explode(" ", $row->ergebnis_detailliert); - foreach ($details as $satz) - { - if (empty($satz)) - continue; - array_push($saetze, explode(":", $satz)); - } - } - ?> + $saetze_maximal = $rundenstufen_details != null ? $rundenstufen_details->saetze : null; + $saetze = array(); + if ($row != null && !empty($row->ergebnis_detailliert)) { + $details = explode(" ", $row->ergebnis_detailliert); + foreach ($details as $satz) { + if (empty($satz)) + continue; + $saetze = array_merge($saetze, explode(":", $satz)); + } + } + ?>
- Spiel turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
+ Spiel turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
-
- - - -
-
- - - - - - - - - - - - - - - - - - - -
- : - - -
- : - - -
- : - - - + + + +
+
+ + + + + + + + - - - - + + + + + + + + + + + + + + + + +
+ + + -
+ + + -
- - - -
- : - +
+ : + + + + +
+ + + +
+ : + + - + + " runde == 0 || (abs($row->runde) >= 10000 && abs($row->runde) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + runde) < 20000) echo 'style="visibility:hidden" '; ?> + aria-label=""/> - +
+ + + +
  - " runde == 0 || (abs($row->runde) >= 10000 && abs($row->runde) < 20000)) echo 'style="visibility:hidden" '; ?>/> - runde) < 20000) echo 'style="visibility:hidden" '; ?>/> +
+
+
+ -
- : - - -
  - -
-
- - - + "/>
- -
turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
+ static function adminEditTurnierdisziplinRunde($runde, $rundenstufe, $id, $disziplin): void + { + global $params; + ?> +
turnierbezeichnung . (!empty($disziplin->turnierort) ? (" in " . $disziplin->turnierort) : "") . ": " . $disziplin->disziplin . " (" . FormatiertesDatum($disziplin->beginn) . ")"); ?>
-
- - - -
-
- - - - - - - - - - - -
- : - - -
- : - +
+ + + + +
+
+ + + + + + + + + + + + +
+ : + + +
+ : + + - + + " = 10000 && abs($runde) < 20000)) echo 'style="visibility:hidden" '; ?> + aria-label=""/> + + aria-label=""/> - +
  - " = 10000 && abs($runde) < 20000)) echo 'style="visibility:hidden" '; ?>/> - /> +
+
+
+
-
  - -
-
- - - + @@ -12251,203 +12637,228 @@ class HTML_sportsmanager_admin
- -
- :
+ ?> +
+ :
-
- - + +
-
- - - - - - - - - - + +
- - - -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + - -
+ + + +
+ + + +
  -
-
+
+
+
+
- -
- -
- :
+ ?> +
+ :
-
- - - -
-
- - - - - - - -
- - - -
  +
+ + + + +
+
+ + + + + + + + +
+ + + +
 
+
+
+
-
-
- - -
- -
- :
+ ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - + +
- - - -
- - - -
- - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + +
  -
-
+
+
+
+
- -
- -
- :
- + ?> +
+ :
+
+ href="">
@@ -12455,136 +12866,142 @@ class HTML_sportsmanager_admin + style="width: 100%">
- - +
: + + :
  - 0) - { - ?> + 0) { + ?> + style="width: 100%">
- + - + $k = 0; + foreach ($nicht_importiere_bilder as $bild) { + if (empty($bild)) + continue; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
  - -
- :
+ ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - + +
- - - -
- - - -
- - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + - -
+ + + +
+ + + +
+ + +
  -
-
+
+
+
+
- -
- -
- :
- + ?> +
+ :
+
+ href="">
@@ -12592,153 +13009,144 @@ class HTML_sportsmanager_admin + style="width: 100%">
- - +
+ + :
  - 0) - { - ?> + 0) { + ?> + style="width: 100%">
- + - + $k = 0; + foreach ($nicht_importiere_bilder as $bild) { + if (empty($bild)) + continue; + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - +
  - + ?> - 0) - { - ?> - - + 0) { + ?> +
+ - + - + - + - + - + - + - +
+ href="">
+ href="&uebersicht=1"> + href="&uebersicht=1"> + href=""> () + href="">
+ href=""> + href=""> + href=""> + href=""> + href="">
- + if (!empty($jahre)) { + $filter_anzeigen = !empty($filter_veranstaltung) || !empty($filter_zusatz) || !empty($filter_land); + ?> -
-
- + +
+
-
-
- = 2) : ?> -
> - -
- -
-
- - = 2) : ?> -
> - -
- -
-
- - = 2) : ?> -
> - -
- + + bezeichnung) . "\"" . ($veranstaltung->bezeichnung == $filter_veranstaltung ? " selected" : "") . ">" . htmlentities_utf8($veranstaltung->bezeichnung) . ""; ?>
-
- -
- -
+ + = 2) : ?> +
> + +
+ +
+
+ + = 2) : ?> +
> + +
+ +
+
+ +
+ + +
termine"/> - beschreibung)) - $termine_beschreibung_anzeigen = true; - if (!empty($termin->ort)) - $termine_ort_anzeigen = true; - if (!empty($termin->land)) - $termine_land_anzeigen = true; - if ($termine_beschreibung_anzeigen && $termine_land_anzeigen) - break; - } + $symbole_anzeigen = !empty($termineSymbole); + $termine_beschreibung_anzeigen = false; + $termine_ort_anzeigen = false; + $termine_land_anzeigen = false; + foreach ($termine as $termin) { + if (!empty($termin->beschreibung)) + $termine_beschreibung_anzeigen = true; + if (!empty($termin->ort)) + $termine_ort_anzeigen = true; + if (!empty($termin->land)) + $termine_land_anzeigen = true; + if ($termine_beschreibung_anzeigen && $termine_land_anzeigen) + break; + } - if (!empty($termine)) - { - $termine_anzahl = count($termine); - if ($termine_anzahl >= 2 && $termine[0]->datumsdifferenz < 0 && $termine[$termine_anzahl - 1]->datumsdifferenz >= 0) - $link_kommende_zu_setzen = true; - else - $link_kommende_zu_setzen = false; + if (!empty($termine)) { + $termine_anzahl = count($termine); + if ($termine_anzahl >= 2 && $termine[0]->datumsdifferenz < 0 && $termine[$termine_anzahl - 1]->datumsdifferenz >= 0) + $link_kommende_zu_setzen = true; + else + $link_kommende_zu_setzen = false; - if ($link_kommende_zu_setzen) - { - ?> -
- - - -
- - -
- +
+ + + + +
+ + +
+
+ + ?>
- +
- - - + + + - - - - - - - - + + + + + + + + - JText::_('COM_SPORTSMANAGER_GENERALLY'), 1 => JText::_('COM_SPORTSMANAGER_SINGLES'), 2 => JText::_('COM_SPORTSMANAGER_DOUBLES')); - foreach ($termine as $termin) - { - ?> + foreach ($termine as $termin) { + ?> - + - + - + - + - - - + - + - + - +
- datumsdifferenz >= 0) - { - ?> + datumsdifferenz >= 0) { + ?>
- erster_tag, $termin->letzter_tag, true, $filter_jahr)); - } - else - { - ?> + erster_tag, $termin->letzter_tag, true, $filter_jahr)); + } else { + ?> href="termin_id); ?>">erster_tag, $termin->letzter_tag, true, $filter_jahr))); ?> - bestaetigt) - { - ?> -
- + bestaetigt) { + ?> +
+
- bezeichnung); - if (!empty($termin->zusaetze)) - { - ?> + bezeichnung); + if (!empty($termin->zusaetze)) { + ?>
zusaetze; ?> - +
- termin_id])) - { - foreach ($termineSymbole[$termin->termin_id] as $termin_symbol_id) - { - if (($bild = bildHTML("terminsymbole/", $termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) - echo $bild; - } - } - ?> + termin_id])) { + foreach ($termineSymbole[$termin->termin_id] as $termin_symbol_id) { + if (($bild = bildHTML("terminsymbole/", $termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) + echo $bild; + } + } + ?> beschreibung); ?> ort); ?> land); ?> - ergebnisse_url)) - { - echo "ergebnisse_url, "://") === false ? "http://" : "") . $termin->ergebnisse_url) . "\" target=\"_blank\">" . ($termin->ergebnisse_live ? JText::_('COM_SPORTSMANAGER_LIVE_') : "") . JText::_('COM_SPORTSMANAGER_RESULTS') . ""; - } - $info_dokument_dateiname = terminDokumentname($termin->termin_id); - if ($info_dokument_dateiname !== false) - { - if (!empty($termin->ergebnisse_url)) - echo "
"; - echo "termin_bezug_id) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - else if (!empty($termin->url)) - { - if (!empty($termin->ergebnisse_url)) - echo "
"; - echo "url, "://") === false ? "http://" : "") . $termin->url) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - if (!empty($termin->email)) - { - if ($info_dokument_dateiname !== false || !empty($termin->url)) - echo "  "; - else if (!empty($termin->ergebnisse_url)) - echo "
"; - echo JHTML::_('email.cloak', $termin->email, 1, JText::_('COM_SPORTSMANAGER_EMAIL'), 0); - } - ?> + +
+ ergebnisse_url)) { + echo "ergebnisse_url, "://") ? "http://" : "") . $termin->ergebnisse_url) . "\" target=\"_blank\">" . ($termin->ergebnisse_live ? Text::_('COM_SPORTSMANAGER_LIVE_') : "") . Text::_('COM_SPORTSMANAGER_RESULTS') . ""; + } + $info_dokument_dateiname = terminDokumentname($termin->termin_id); + if ($info_dokument_dateiname !== false) { + if (!empty($termin->ergebnisse_url)) + echo "
"; + echo "termin_bezug_id) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } else if (!empty($termin->url)) { + if (!empty($termin->ergebnisse_url)) + echo "
"; + echo "url, "://") ? "http://" : "") . $termin->url) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } + if (!empty($termin->email)) { + if ($info_dokument_dateiname !== false || !empty($termin->url)) + echo "  "; + else if (!empty($termin->ergebnisse_url)) + echo "
"; + echo HTMLHelper::_('email.cloak', $termin->email, 1, Text::_('COM_SPORTSMANAGER_EMAIL'), 0); + } + ?>
D " - href="termin_id); ?>">X + title="" + href="termin_id); ?>">X
  - -
- :
- + ?> +
+ :
+
+ href="">
- + if (!empty($terminaktionen)) { + ?> - - - - - - - - + + + + + + + + - JText::_('COM_SPORTSMANAGER_ADD'), 1 => JText::_('COM_SPORTSMANAGER_CHANGING'), 2 => JText::_('COM_SPORTSMANAGER_DELETE')); - $status = array(0 => JText::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => JText::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => JText::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => JText::_('COM_SPORTSMANAGER_DECLINED')); - $k = 0; - foreach ($terminaktionen as $terminaktion) - { - ?> + $aktion = array(0 => Text::_('COM_SPORTSMANAGER_ADD'), 1 => Text::_('COM_SPORTSMANAGER_CHANGING'), 2 => Text::_('COM_SPORTSMANAGER_DELETE')); + $status = array(0 => Text::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => Text::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => Text::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => Text::_('COM_SPORTSMANAGER_DECLINED')); + $k = 0; + foreach ($terminaktionen as $terminaktion) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - - +
aktion_zeitpunkt, true, false))); ?> - typ]; ?> + typ]; ?>
aktion_user_name); ?>
- status]); - if (!empty($terminaktion->moderation_user_id)) - { - ?> + status]); + if (!empty($terminaktion->moderation_user_id)) { + ?>
moderation_user_name); ?> - +
- erster_tag, $terminaktion->letzter_tag, true); - if (!$terminaktion->bestaetigt) - { - ?> -
- +
+ erster_tag, $terminaktion->letzter_tag, true); + if (!$terminaktion->bestaetigt) { + ?> +
+
- bezeichnung); - if (!empty($terminaktion->zusaetze)) - { - ?> + bezeichnung); + if (!empty($terminaktion->zusaetze)) { + ?>
zusaetze; ?> - +
ort); ?> land); ?> - ergebnisse_url)) - { - echo "ergebnisse_url, "://") === false ? "http://" : "") . $terminaktion->ergebnisse_url) . "\" target=\"_blank\">" . ($terminaktion->ergebnisse_live ? JText::_('COM_SPORTSMANAGER_LIVE_') : "") . JText::_('COM_SPORTSMANAGER_RESULTS') . ""; - } - $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); - if ($info_dokument_dateiname !== false) - { - if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo "termin_id) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - else if (!empty($terminaktion->url)) - { - if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo "url, "://") === false ? "http://" : "") . $terminaktion->url) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - if (!empty($terminaktion->email)) - { - if ($info_dokument_dateiname !== false || !empty($terminaktion->url)) - echo "  "; - else if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo JHTML::_('email.cloak', $terminaktion->email, 1, JText::_('COM_SPORTSMANAGER_EMAIL'), 0); - } - ?> +
+ ergebnisse_url)) { + echo "ergebnisse_url, "://") ? "http://" : "") . $terminaktion->ergebnisse_url) . "\" target=\"_blank\">" . ($terminaktion->ergebnisse_live ? Text::_('COM_SPORTSMANAGER_LIVE_') : "") . Text::_('COM_SPORTSMANAGER_RESULTS') . ""; + } + $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); + if ($info_dokument_dateiname !== false) { + if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo "termin_id) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } else if (!empty($terminaktion->url)) { + if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo "url, "://") ? "http://" : "") . $terminaktion->url) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } + if (!empty($terminaktion->email)) { + if ($info_dokument_dateiname !== false || !empty($terminaktion->url)) + echo "  "; + else if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo HTMLHelper::_('email.cloak', $terminaktion->email, 1, Text::_('COM_SPORTSMANAGER_EMAIL'), 0); + } + ?>
- -
+ static function adminTerminDetails($terminaktion, $terminaktionen, $nur_beantragte, $admin_uebersicht, $uebersicht, $externe_datenbank): void + { + global $params; + ?> +
-
- - - -
-
- - - - - - - - - zusaetze)) - { - ?> - - - - - ort)) - { - ?> - - - - - land)) - { - ?> - - - - - beschreibung)) - { - ?> - - - - - termin_id); - if ($info_dokument_dateiname !== false) - { - ?> - - - - - url)) - { - ?> - - - - - email)) - { - ?> - - - - - benachrichtigung_email); - if (!empty($benachrichtigung_emails)) - { - ?> - - - - - ergebnisse_url)) - { - ?> - - - - - - - - -
- : - - erster_tag, $terminaktion->letzter_tag, true); - if (!$terminaktion->bestaetigt) - echo " (" . JText::_('COM_SPORTSMANAGER_IN_PLANING') . ")"; - ?> -
- : - - bezeichnung); - ?> -
- : - - zusaetze); ?> -
- : - - ort); ?> -
- - / - - land); ?> -
- : - - beschreibung); ?> -
- : - - -
- : - - url, "://") === false) - { - $termin_url_anzeige = $terminaktion->url; - $termin_url = "http://" . $terminaktion->url; - } - else - { - $termin_url_anzeige = substr($terminaktion->url, 0, 7) == "http://" ? substr($terminaktion->url, 7) : $terminaktion->url; - $termin_url = $terminaktion->url; - } - echo "" . htmlentities_utf8($termin_url_anzeige) . ""; - ?> -
- : - - email, 1, $terminaktion->email, 0); - ?> -
- : - - $email) - { - $email_trimmed = trim($email); - echo ($index > 0 ? ", " : "") . JHTML::_('email.cloak', $email_trimmed, 1, $email_trimmed, 0); - } - ?> -
- ergebnisse_live) echo JText::_('COM_SPORTSMANAGER_LIVE_'); ?> - : - - ergebnisse_url, "://") === false) - { - $termin_url_anzeige = $terminaktion->ergebnisse_url; - $termin_url = "http://" . $terminaktion->ergebnisse_url; - } - else - { - $termin_url_anzeige = substr($terminaktion->ergebnisse_url, 0, 7) == "http://" ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; - $termin_url = $terminaktion->ergebnisse_url; - } - echo "" . htmlentities_utf8($termin_url_anzeige) . ""; - ?> -
  +
+ + + + +
+
+ + + + + + + + + + zusaetze)) { + ?> + + + + + ort)) { + ?> + + + + + land)) { + ?> + + + + + beschreibung)) { + ?> + + + + + termin_id); + if ($info_dokument_dateiname !== false) { + ?> + + + + + url)) { + ?> + + + + + email)) { + ?> + + + + + benachrichtigung_email); + if (!empty($benachrichtigung_emails)) { + ?> + + + + + ergebnisse_url)) { + ?> + + + + + + + - - - - - - - - - - - - - - aktion_kommentar)) - { - ?> - - - - - - - - moderation_kommentar)) - { - ?> - - - status == 2) - { - ?> - - + + + + + + + + + + + + + + aktion_kommentar)) { + ?> + + + + + + + + moderation_kommentar)) { + ?> + + + status == 2) { + ?> + + - - - - - - - - + + + + + + + + + +
+ : + + erster_tag, $terminaktion->letzter_tag, true); + if (!$terminaktion->bestaetigt) + echo " (" . Text::_('COM_SPORTSMANAGER_IN_PLANING') . ")"; + ?> +
+ : + + bezeichnung); + ?> +
+ : + + zusaetze); ?> +
+ : + + ort); ?> +
+ + / + + land); ?> +
+ : + + beschreibung); ?> +
+ : + + +
+ : + + url, "://")) { + $termin_url_anzeige = $terminaktion->url; + $termin_url = "http://" . $terminaktion->url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->url, "http://") ? substr($terminaktion->url, 7) : $terminaktion->url; + $termin_url = $terminaktion->url; + } + echo "" . htmlentities_utf8($termin_url_anzeige) . ""; + ?> +
+ : + + email, 1, $terminaktion->email, 0); + ?> +
+ : + + $email) { + $email_trimmed = trim($email); + echo ($index > 0 ? ", " : "") . HTMLHelper::_('email.cloak', $email_trimmed, 1, $email_trimmed, 0); + } + ?> +
+ ergebnisse_live) echo Text::_('COM_SPORTSMANAGER_LIVE_'); ?> + : + + ergebnisse_url, "://")) { + $termin_url_anzeige = $terminaktion->ergebnisse_url; + $termin_url = "http://" . $terminaktion->ergebnisse_url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->ergebnisse_url, "http://") ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; + $termin_url = $terminaktion->ergebnisse_url; + } + echo "" . htmlentities_utf8($termin_url_anzeige) . ""; + ?> +
  -
- : - - JText::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => JText::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => JText::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => JText::_('COM_SPORTSMANAGER_DECLINED')); - echo $status[$terminaktion->status]; ?> -
- : - - JText::_('COM_SPORTSMANAGER_ADD'), 1 => JText::_('COM_SPORTSMANAGER_CHANGING'), 2 => JText::_('COM_SPORTSMANAGER_DELETE')); - echo $aktion[$terminaktion->typ]; ?> -
- : - - aktion_zeitpunkt, true, false) . " von " . (empty($terminaktion->aktion_user_email) ? htmlentities_utf8($terminaktion->aktion_user_name) : JHTML::_('email.cloak', $terminaktion->aktion_user_email, 1, $terminaktion->aktion_user_name, 0)); ?> -
- : - - aktion_kommentar)); ?> -
- : - - moderation_zeitpunkt)) - echo JText::_('COM_SPORTSMANAGER_NOT_DONE'); - else - echo FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . (empty($terminaktion->moderation_user_email) ? htmlentities_utf8($terminaktion->moderation_user_name) : JHTML::_('email.cloak', $terminaktion->moderation_user_email, 1, $terminaktion->moderation_user_name, 0)); - ?> -
- : - - moderation_kommentar)); ?> -
  +
+ : + + Text::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => Text::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => Text::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => Text::_('COM_SPORTSMANAGER_DECLINED')); + echo $status[$terminaktion->status]; ?> +
+ : + + Text::_('COM_SPORTSMANAGER_ADD'), 1 => Text::_('COM_SPORTSMANAGER_CHANGING'), 2 => Text::_('COM_SPORTSMANAGER_DELETE')); + echo $aktion[$terminaktion->typ]; ?> +
+ : + + aktion_zeitpunkt, true, false) . " von " . (empty($terminaktion->aktion_user_email) ? htmlentities_utf8($terminaktion->aktion_user_name) : HTMLHelper::_('email.cloak', $terminaktion->aktion_user_email, 1, $terminaktion->aktion_user_name, 0)); ?> +
+ : + + aktion_kommentar)); ?> +
+ : + + moderation_zeitpunkt)) + echo Text::_('COM_SPORTSMANAGER_NOT_DONE'); + else + echo FormatiertesDatum($terminaktion->moderation_zeitpunkt, true, false) . " von " . (empty($terminaktion->moderation_user_email) ? htmlentities_utf8($terminaktion->moderation_user_name) : HTMLHelper::_('email.cloak', $terminaktion->moderation_user_email, 1, $terminaktion->moderation_user_name, 0)); + ?> +
+ : + + moderation_kommentar)); ?> +
  -
- : - - -
  +
+ + + +
 
+
+
+
-
-
- - status == 2 && !$externe_datenbank) - { - ?> - status == 2 && !$externe_datenbank) { + ?> + - typ == 0 || $terminaktion->typ == 1) - { - ?> + typ == 0 || $terminaktion->typ == 1) { + ?> - - + + - - + termin_moderieren"/> @@ -13452,490 +13821,498 @@ class HTML_sportsmanager_admin
- + if (!empty($terminaktionen)) { + ?>   + style="width: 100%">
- - - - - - - - + + + + + + + + - JText::_('COM_SPORTSMANAGER_ADD'), 1 => JText::_('COM_SPORTSMANAGER_CHANGING'), 2 => JText::_('COM_SPORTSMANAGER_DELETE')); - $status = array(0 => JText::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => JText::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => JText::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => JText::_('COM_SPORTSMANAGER_DECLINED')); - $k = 0; - foreach ($terminaktionen as $terminaktion) - { - ?> + $aktion = array(0 => Text::_('COM_SPORTSMANAGER_ADD'), 1 => Text::_('COM_SPORTSMANAGER_CHANGING'), 2 => Text::_('COM_SPORTSMANAGER_DELETE')); + $status = array(0 => Text::_('COM_SPORTSMANAGER_ACCEPTED'), 1 => Text::_('COM_SPORTSMANAGER_ARCHIVED'), 2 => Text::_('COM_SPORTSMANAGER_APPLIED_FOR'), 3 => Text::_('COM_SPORTSMANAGER_DECLINED')); + $k = 0; + foreach ($terminaktionen as $terminaktion) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> - - - +
aktion_zeitpunkt, true, false))); ?> - typ]; ?> + typ]; ?>
aktion_user_name); ?>
- status]); - if (!empty($terminaktion->moderation_user_id)) - { - ?> + status]); + if (!empty($terminaktion->moderation_user_id)) { + ?>
moderation_user_name); ?> - +
- erster_tag, $terminaktion->letzter_tag, true); - if (!$terminaktion->bestaetigt) - { - ?> -
- +
+ erster_tag, $terminaktion->letzter_tag, true); + if (!$terminaktion->bestaetigt) { + ?> +
+
- bezeichnung); - if (!empty($terminaktion->zusaetze)) - { - ?> + bezeichnung); + if (!empty($terminaktion->zusaetze)) { + ?>
zusaetze; ?> - +
ort); ?> land); ?> - ergebnisse_url)) - { - echo "ergebnisse_url, "://") === false ? "http://" : "") . $terminaktion->ergebnisse_url) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_RESULTS') . ""; - } - $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); - if ($info_dokument_dateiname !== false) - { - if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo "termin_id) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - else if (!empty($terminaktion->url)) - { - if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo "url, "://") === false ? "http://" : "") . $terminaktion->url) . "\" target=\"_blank\">" . JText::_('COM_SPORTSMANAGER_INFO') . ""; - } - if (!empty($terminaktion->email)) - { - if ($info_dokument_dateiname !== false || !empty($terminaktion->url)) - echo "  "; - else if (!empty($terminaktion->ergebnisse_url)) - echo "
"; - echo JHTML::_('email.cloak', $terminaktion->email, 1, JText::_('COM_SPORTSMANAGER_EMAIL'), 0); - } - ?> +
+ ergebnisse_url)) { + echo "ergebnisse_url, "://") ? "http://" : "") . $terminaktion->ergebnisse_url) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_RESULTS') . ""; + } + $info_dokument_dateiname = terminDokumentname($terminaktion->termin_id); + if ($info_dokument_dateiname !== false) { + if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo "termin_id) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } else if (!empty($terminaktion->url)) { + if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo "url, "://") ? "http://" : "") . $terminaktion->url) . "\" target=\"_blank\">" . Text::_('COM_SPORTSMANAGER_INFO') . ""; + } + if (!empty($terminaktion->email)) { + if ($info_dokument_dateiname !== false || !empty($terminaktion->url)) + echo "  "; + else if (!empty($terminaktion->ergebnisse_url)) + echo "
"; + echo HTMLHelper::_('email.cloak', $terminaktion->email, 1, Text::_('COM_SPORTSMANAGER_EMAIL'), 0); + } + ?>
- -
- :
+ static function adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - erster_tag == $termin->letzter_tag) echo " style=\"display:none\""; ?>> - - - - - - - - - - - + +
- : - - - - - " - class="button" onclick="letzter_tag_anzeigen();" id="button_mehrtaegig"/> -
- : - - - - -
- : - - - /> -
- : - - termin_symbol_id : 0; - ?> - + + - -
+
+ + + + - - - - - - - - - - - - - - - - - - - */ - ?> - - - - - - - - - - - - - - - - - - - - - aktion_kommentar)) - { - ?> - - - - - - - - - + + erster_tag == $termin->letzter_tag) echo " style=\"display:none\""; ?>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aktion_kommentar)) { + ?> + + + + + + + + + - -
+ + + - "; - } - ?> -
- : - - bezeichnungszusatz) . "\"" . (!empty($bezeichnungszusatz->termin_zusatz_id) ? " checked" : "") . " >" . htmlentities_utf8($bezeichnungszusatz->bezeichnungszusatz) . (!empty($bezeichnungszusatz->titel) ? (" - " . htmlentities_utf8($bezeichnungszusatz->titel)) : "") . "
"; - } - if (!empty($zusaetze)) - { - foreach ($zusaetze as $zusatz) - { - echo "zusatz) . "\" checked >" . htmlentities_utf8($zusatz->zusatz) . "
"; - } - } - ?> - -
- : - - -
- - / - - - /> -
- Beschreibung: - - -
- : - - termin_id) : false; - ?> - />URL: - -
- - : -
- : - - - : - -
- : - - -
- : - - -
- Ergebnisse (URL): - - - -
- Informationsstand: - - -
- : - - aktion_kommentar)); ?> -
- Kommentar - an - : - - -
  + + + " + class="button" onclick="letzter_tag_anzeigen();" + id="button_mehrtaegig"/> +
+ + + + + +
+ + + + + aria-label=""/> +
+ : + + termin_symbol_id : 0; + ?> + + "; + } + ?> +
+ + + bezeichnungszusatz) . "\"" . (!empty($bezeichnungszusatz->termin_zusatz_id) ? " checked" : "") . " >" . htmlentities_utf8($bezeichnungszusatz->bezeichnungszusatz) . (!empty($bezeichnungszusatz->titel) ? (" - " . htmlentities_utf8($bezeichnungszusatz->titel)) : "") . "
"; + } + if (!empty($zusaetze)) { + foreach ($zusaetze as $zusatz) { + echo "zusatz) . "\" checked >" . htmlentities_utf8($zusatz->zusatz) . "
"; + } + } + ?> + +
+ + + +
+ + / + + + /> +
+ : + + termin_id) : false; + ?> + + +
+ + +
+ + + + + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ : + + aktion_kommentar)); ?> +
+ + + +
  -
-
+
+
+
+
" + value="" class="button" - onclick="if (document.adminForm.bezeichnung_id.value != '0') document.adminForm.bezeichnung.value = document.adminForm.bezeichnung_id.options[document.adminForm.bezeichnung_id.selectedIndex].text; if (document.adminForm.land_id.value != '0') document.adminForm.land.value = document.adminForm.land_id.options[document.adminForm.land_id.selectedIndex].text; return true;"/> - + termin_save"/> "/> @@ -13945,224 +14322,217 @@ class HTML_sportsmanager_admin
- -
+ static function adminRemoveTermin($terminaktion, $nur_beantragte, $zugriffsebene, $admin_uebersicht): void + { + global $params; + ?> +
: Entfernen
-
- - + +
-
- - - - - - - - - zusaetze)) - { - ?> - - - - - ort)) - { - ?> - - - - - land)) - { - ?> - - - - - beschreibung)) - { - ?> - - - - - termin_id); - if ($info_dokument_dateiname !== false) - { - ?> - - - - - url)) - { - ?> - - - - - email)) - { - ?> - - - - - ergebnisse_url)) - { - ?> - - - - - - - + +
- : - - erster_tag, $terminaktion->letzter_tag, true); - if (!$terminaktion->bestaetigt) - echo " (" . JText::_('COM_SPORTSMANAGER_IN_PLANING') . ")"; - ?> -
- : - - bezeichnung); - ?> -
- : - - zusaetze); ?> -
- : - - ort); ?> -
- - / - - land); ?> -
- : - - beschreibung); ?> -
- : - - -
- : - - url, "://") === false) - { - $termin_url_anzeige = $terminaktion->url; - $termin_url = "http://" . $terminaktion->url; - } - else - { - $termin_url_anzeige = substr($terminaktion->url, 0, 7) == "http://" ? substr($terminaktion->url, 7) : $terminaktion->url; - $termin_url = $terminaktion->url; - } - echo "" . htmlentities_utf8($termin_url_anzeige) . ""; - ?> -
- : - - email, 1, $terminaktion->email, 0); - ?> -
- ergebnisse_live) echo JText::_('COM_SPORTSMANAGER_LIVE_'); ?> - : - - ergebnisse_url, "://") === false) - { - $termin_url_anzeige = $terminaktion->ergebnisse_url; - $termin_url = "http://" . $terminaktion->ergebnisse_url; - } - else - { - $termin_url_anzeige = substr($terminaktion->ergebnisse_url, 0, 7) == "http://" ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; - $termin_url = $terminaktion->ergebnisse_url; - } - echo "" . htmlentities_utf8($termin_url_anzeige) . ""; - ?> -
  +
+ + + - -
+
+ + + + + + + + + + zusaetze)) { + ?> + + + + + ort)) { + ?> + + + + + land)) { + ?> + + + + + beschreibung)) { + ?> + + + + + termin_id); + if ($info_dokument_dateiname !== false) { + ?> + + + + + url)) { + ?> + + + + + email)) { + ?> + + + + + ergebnisse_url)) { + ?> + + + + + + + - - - - - - - + + + + + + + - -
+ : + + erster_tag, $terminaktion->letzter_tag, true); + if (!$terminaktion->bestaetigt) + echo " (" . Text::_('COM_SPORTSMANAGER_IN_PLANING') . ")"; + ?> +
+ : + + bezeichnung); + ?> +
+ : + + zusaetze); ?> +
+ : + + ort); ?> +
+ + / + + land); ?> +
+ : + + beschreibung); ?> +
+ : + + +
+ : + + url, "://")) { + $termin_url_anzeige = $terminaktion->url; + $termin_url = "http://" . $terminaktion->url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->url, "http://") ? substr($terminaktion->url, 7) : $terminaktion->url; + $termin_url = $terminaktion->url; + } + echo "" . htmlentities_utf8($termin_url_anzeige) . ""; + ?> +
+ : + + email, 1, $terminaktion->email, 0); + ?> +
+ ergebnisse_live) echo Text::_('COM_SPORTSMANAGER_LIVE_'); ?> + : + + ergebnisse_url, "://")) { + $termin_url_anzeige = $terminaktion->ergebnisse_url; + $termin_url = "http://" . $terminaktion->ergebnisse_url; + } else { + $termin_url_anzeige = str_starts_with($terminaktion->ergebnisse_url, "http://") ? substr($terminaktion->ergebnisse_url, 7) : $terminaktion->ergebnisse_url; + $termin_url = $terminaktion->ergebnisse_url; + } + echo "" . htmlentities_utf8($termin_url_anzeige) . ""; + ?> +
  -
- : - - -
  +
+ + + +
  -
-
+
+
+
+
" + value="" class="button" - onclick="if (document.adminForm.bezeichnung_id.value != '0') document.adminForm.bezeichnung.value = document.adminForm.bezeichnung_id.options[document.adminForm.bezeichnung_id.selectedIndex].text; if (document.adminForm.land_id.value != '0') document.adminForm.land.value = document.adminForm.land_id.options[document.adminForm.land_id.selectedIndex].text; return true;"/> - + termin_remove"/>
- -
- :
+ ?> +
+ :
@@ -14170,7 +14540,7 @@ class HTML_sportsmanager_admin @@ -14179,614 +14549,643 @@ class HTML_sportsmanager_admin
- +
- termin_save"/>  
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- + if (!empty($bezeichnungen)) { + ?> - + - + $k = 0; + foreach ($bezeichnungen as $bezeichnung) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="termin_bezeichnung_id); ?>" + onclick="return confirm('');" + title="">X - +
bezeichnung)); ?> + href="termin_bezeichnung_id); ?>">bezeichnung)); ?> X
- + static function adminEditTermineBezeichnung($bezeichnung, $admin_uebersicht): void + { + global $params; + ?>
Termine - Veranstaltung:
+ Veranstaltung:
-
- - - -
-
- - - - - - - - - - - - - -
- : - - -
- - -
-
  +
+ + + + +
+
+ + + + + + + + + + + + + + +
+ + + +
+ + +
+
 
+
+
+
-
-
- - - + termine_bezeichnung_save"/> "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- + if (!empty($bezeichnungszusaetze)) { + ?> - - + + - + $k = 0; + foreach ($bezeichnungszusaetze as $bezeichnungszusatz) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="termin_bezeichnungszusatz_id); ?>" + onclick="return confirm('Willst du den Veranstaltungszusatz wirklich entfernen?');" + title="">X - +
bezeichnungszusatz)); ?> + href="termin_bezeichnungszusatz_id); ?>">bezeichnungszusatz)); ?> titel)); ?> X
- -
- :
+ static function adminEditTermineBezeichnungszusatz($bezeichnungszusatz, $admin_uebersicht): void + { + global $params; + ?> +
+ :
-
- - - -
-
- - - - - - - - - - - - - - - - - -
- - /: - - -
- - -
- : - - -
  +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+ + + +
 
+
+
+
-
-
- - - + termine_bezeichnungszusatz_save"/> "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- + if (!empty($bundeslaender)) { + ?> - + - + $k = 0; + foreach ($bundeslaender as $bundesland) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="termin_bundesland_id); ?>" + onclick="return confirm('Willst du das Bundesland wirklich entfernen?');" + title="">X - +
bundesland)); ?> + href="termin_bundesland_id); ?>">bundesland)); ?> X
- -
- :
+ static function adminEditTermineBundesland($bundesland, $admin_uebersicht): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - + +
- : - - -
- - -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + - -
+ + + +
+ + +
+
  -
-
+
+
+
+
- - + termine_bundesland_save"/> "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- + if (!empty($laender)) { + ?> - + - + $k = 0; + foreach ($laender as $land) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + href="termin_land_id); ?>" + onclick="return confirm('');" + title="">X - +
land)); ?> + href="termin_land_id); ?>">land)); ?> X
- -
- :
+ static function adminEditTermineLand($land, $admin_uebersicht): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - + +
- : - - -
- - -
-
  +
+ + + - -
+
+ + + + + + + + + + + + + - -
+ + + +
+ + +
+
  -
-
+
+
+
+
- - + termine_land_save"/> "/>
- -
- :
- + ?> +
+ :
+
+ href="">
+ href="">
- + if (!empty($symbole)) { + ?> - - - + + + - + $k = 0; + foreach ($symbole as $symbol) { + ?> + $k = ($k + 1) % 2; ?>get('pageclass_sfx'); ?>"> + style="text-align: center">status == 0 ? Text::_('COM_SPORTSMANAGER_NO') : Text::_('COM_SPORTSMANAGER_YES')); ?> - +
symboltitel)); ?> + href="termin_symbol_id); ?>">symboltitel)); ?> - termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) - echo $bild; - ?> + termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) + echo $bild; + ?> status == 0 ? JText::_('COM_SPORTSMANAGER_NO') : JText::_('COM_SPORTSMANAGER_YES')); ?> + href="termin_symbol_id); ?>" + onclick="return confirm('');" + title="">
- -
- :
+ static function adminEditTermineSymbol($symbol, $admin_uebersicht): void + { + global $params; + ?> +
+ :
-
- - + +
-
- - - - - - - - - - - - - - + +
- : - - -
- : - - termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) - { - ?> - -

-

-

- - -

- -
- : - - -
  +
+ + + - -
+
+ + + + + + + + + + + + + + + - -
+ + + +
+ : + + termin_symbol_id, 0, 0, 240, 240, 'border="0"')) != null) { + ?> + +

+

+

+ + +

+ +
+ + + +
  -
-
+
+
+
+
- - + termine_symbol_save"/> "/>
- diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php index a76557a..5e78cda 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_ticker.php @@ -4,2284 +4,2097 @@ */ // kein direkter Zugriff +use Joomla\CMS\Application\SiteApplication; +use Joomla\CMS\Factory; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\Uri\Uri; + defined('_JEXEC') or die('Restricted access'); -require_once (JPATH_COMPONENT.DIRECTORY_SEPARATOR.'views/sportsmanager/view_tools.php'); +require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_tools.php'; +require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; -class HTML_sportsmanager_ticker { - // $buttons_right == 1: Show "Groups" - // $buttons_right == 2: Show "Groups", "K.O." - // $buttons_right == 3: Show "Groups", "K.O.", "Final" - static function veranstaltungenTickerTimestamp($matches_timestamp, $groups_timestamp) { - //$groups_timestamp="1232188323137723883"; - //$matches_timestamp="123288147121"; - echo 'tmatchez='.$matches_timestamp.'&tgroups='.$groups_timestamp; - } - static function veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $currentpage, $begegnung_spiele) { - $view_right = $veranstaltung_elimination_index < 0 ? 0 : 3; - if ($type == "allmatches" || $type == "finmatches" || $type == "upcmatches" || $type == "runmatches") { - $matchez = array(); - foreach ($begegnungen as $begegnung) { - $id = $begegnung->begegnung_id; - $zeitpunkt_ts = strtotime($begegnung->zeitpunkt); - $datum = date("j. M", $zeitpunkt_ts); - $zeit = date("H:i", $zeitpunkt_ts); - // if ($begegnung->gerade_aktualisiert) - if (false) - $status = 'updated'; - elseif ($begegnung->zwischenergebnis) - $status = 'livenow'; - elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte)) - $status = 'finished'; - elseif ($begegnung->verlegung_eingetragen) - continue; - else - $status = 'upcoming'; - $ist_spieltag = false; - $spieltag = Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0, false, true); - $gewinner = $begegnung->heim_spielpunkte > $begegnung->gast_spielpunkte ? 1 : ($begegnung->heim_spielpunkte < $begegnung->gast_spielpunkte ? 2 : 0); - $heim_name = $begegnung->heim_name; - $gast_name = $begegnung->gast_name; - $heim_spielpunkte = $begegnung->heim_spielpunkte; - $gast_spielpunkte = $begegnung->gast_spielpunkte; - $heim_logo = bildHTML("mannschaften", $begegnung->heim_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($heim_logo) && !empty($begegnung->heim_verein_id)) - $heim_logo = bildHTML("vereine", $begegnung->heim_verein_id, 30, 30, 0, 0, 'border="0"'); - $gast_logo = bildHTML("mannschaften", $begegnung->gast_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($gast_logo) && !empty($begegnung->gast_verein_id)) - $gast_logo = bildHTML("vereine", $begegnung->gast_verein_id, 30, 30, 0, 0, 'border="0"'); - $matchez[] = array('id' => $id, 'status' => $status, 'day' => $datum, 'hour' => $zeit, 'round' => $spieltag, 'winner' => $gewinner, 'team1' => $heim_name,'team2' => $gast_name, 'logo1' => $heim_logo, 'logo2' => $gast_logo, 'score1' => $heim_spielpunkte, 'score2' => $gast_spielpunkte); - } - HTML_sportsmanager_ticker::veranstaltungenTickerPrintable($matchez, $currentpage); // feeding the array to the function it prints the right table - } elseif ($type == "groups") { // when right side groups have to be updated the script is called with type=groups - HTML_sportsmanager_ticker::veranstaltungenTickerPrintRightheader($view_right, $type); - ?> - - $veranstaltung) { - if ($index == $veranstaltung_elimination_index) - continue; - $teamz = array(); - $punkte_anzeigen = false; - if (count($tabellen[$index]) > 0 && $tabellen[$index][0]->gesamtpunkte != NULL) - $punkte_anzeigen = true; - foreach ($tabellen[$index] as $mannschaft) { - $logo = bildHTML("mannschaften", $mannschaft->team_id, 17, 17, 0, 0, 'border="0"'); - if (empty($logo) && !empty($mannschaft->verein_id)) - $logo = bildHTML("vereine", $mannschaft->verein_id, 17, 17, 0, 0, 'border="0"'); - if ($punkte_anzeigen) - $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname, 'score' => floatval($mannschaft->gesamtpunkte)); - else - $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname); - } +class HTML_sportsmanager_ticker +{ + static function veranstaltungenTickerTimestamp($matches_timestamp, $groups_timestamp): void + { + echo 'tmatchez=' . $matches_timestamp . '&tgroups=' . $groups_timestamp; + } - HTML_sportsmanager_ticker::veranstaltungenTickerPrintgtable($teamz, $veranstaltung->bezeichnung); - } - ?> - - 'upcoming', 'winner' => 0, 'team1' => '', 'team2' => '', 'blogo1' => null, 'blogo2' => null, 'slogo1' => null, 'slogo2' => null, 'score1' => '', 'score2' => '', 'placeholder' => true); - } - foreach ($begegnungen as $begegnung) { - $spieltag = $begegnung->spieltag; - if ($spieltag == 19999 || $spieltag == 29898) // Finale - $begegnung_index = 6; - elseif ($spieltag == 19998 || $spieltag == 29896) // Platz 3 - $begegnung_index = 7; - elseif ($spieltag == 19997 || $spieltag == 29698) { // Halb - if (isset($matchez[4]['placeholder'])) - $begegnung_index = 4; - else - $begegnung_index = 5; - } elseif ($spieltag == 19996 || $spieltag == 29298) { // Viertel - if (isset($matchez[0]['placeholder'])) - $begegnung_index = 0; - elseif (isset($matchez[1]['placeholder'])) - $begegnung_index = 1; - elseif (isset($matchez[2]['placeholder'])) - $begegnung_index = 2; - else - $begegnung_index = 3; - } else - continue; - // if ($begegnung->gerade_aktualisiert) - if (false) - $status = 'updated'; - elseif ($begegnung->zwischenergebnis) - $status = 'livenow'; - elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte)) - $status = 'finished'; - elseif ($begegnung->verlegung_eingetragen) - continue; - else - $status = 'upcoming'; - $gewinner = $begegnung->heim_spielpunkte > $begegnung->gast_spielpunkte ? 1 : ($begegnung->heim_spielpunkte < $begegnung->gast_spielpunkte ? 2 : 0); - $heim_name = $begegnung->heim_name; - $gast_name = $begegnung->gast_name; - $heim_spielpunkte = $begegnung->heim_spielpunkte; - $gast_spielpunkte = $begegnung->gast_spielpunkte; - $heim_logo = bildHTML("mannschaften", $begegnung->heim_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($heim_logo) && !empty($begegnung->heim_verein_id)) - $heim_logo = bildHTML("vereine", $begegnung->heim_verein_id, 30, 30, 0, 0, 'border="0"'); - $gast_logo = bildHTML("mannschaften", $begegnung->gast_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($gast_logo) && !empty($begegnung->gast_verein_id)) - $gast_logo = bildHTML("vereine", $begegnung->gast_verein_id, 30, 30, 0, 0, 'border="0"'); - $heim_logo_klein = bildHTML("mannschaften", $begegnung->heim_team_id, 17, 17, 0, 0, 'border="0"'); - if (empty($heim_logo_klein) && !empty($begegnung->heim_verein_id)) - $heim_logo_klein = bildHTML("vereine", $begegnung->heim_verein_id, 17, 17, 0, 0, 'border="0"'); - $gast_logo_klein = bildHTML("mannschaften", $begegnung->gast_team_id, 17, 17, 0, 0, 'border="0"'); - if (empty($gast_logo_klein) && !empty($begegnung->gast_verein_id)) - $gast_logo_klein = bildHTML("vereine", $begegnung->gast_verein_id, 17, 17, 0, 0, 'border="0"'); - $matchez[$begegnung_index] = array('status' => $status, 'winner' => $gewinner, 'team1' => $heim_name,'team2' => $gast_name, 'blogo1' => $heim_logo, 'blogo2' => $gast_logo, 'slogo1' => $heim_logo_klein, 'slogo2' => $gast_logo_klein, 'score1' => $heim_spielpunkte, 'score2' => $gast_spielpunkte); - } - // Adjust order so the tree fits - // 1/4 Finals: matchez[0..3], 1/2 Finals: matchez[4..5], Final: matchez[6], 3rd Place: matchez[7] - $tmatchez = $matchez; - for ($i = 4; $i <= 5; $i++) { - $offset = 0; - if (!isset($tmatchez[$i]['placeholder'])) { - for ($j = 0; $j <= 3 && $offset < 2; $j++) { - if (!isset($tmatchez[$j]['placeholder'])) { - if ($tmatchez[$i]['team1'] == $tmatchez[$j]['team1'] || $tmatchez[$i]['team1'] == $tmatchez[$j]['team2'] || $tmatchez[$i]['team2'] == $tmatchez[$j]['team1'] || $tmatchez[$i]['team2'] == $tmatchez[$j]['team2']) { - $matchez[($i - 4) * 2 + $offset++] = $tmatchez[$j]; - } + static function veranstaltungenTickerDaten($type, $veranstaltungen, $tabellen, $begegnungen, $veranstaltung_elimination_index, $begegnung_spiele): void + { + $view_right = $veranstaltung_elimination_index < 0 ? 0 : 3; + if ($type == "allmatches" || $type == "finmatches" || $type == "upcmatches" || $type == "runmatches") { + $matchez = array(); + foreach ($begegnungen as $begegnung) { + $id = $begegnung->begegnung_id; + $zeitpunkt_ts = strtotime($begegnung->zeitpunkt); + $datum = date("j. M", $zeitpunkt_ts); + $zeit = date("H:i", $zeitpunkt_ts); + if ($begegnung->zwischenergebnis) + $status = 'livenow'; + elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte)) + $status = 'finished'; + elseif ($begegnung->verlegung_eingetragen) + continue; + else + $status = 'upcoming'; + $spieltag = Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0, false, true); + $gewinner = $begegnung->heim_spielpunkte > $begegnung->gast_spielpunkte ? 1 : ($begegnung->heim_spielpunkte < $begegnung->gast_spielpunkte ? 2 : 0); + $heim_name = $begegnung->heim_name; + $gast_name = $begegnung->gast_name; + $heim_spielpunkte = $begegnung->heim_spielpunkte; + $gast_spielpunkte = $begegnung->gast_spielpunkte; + $heim_logo = bildHTML("mannschaften", $begegnung->heim_team_id, 30, 30, 0, 0, 'border="0"'); + if (empty($heim_logo) && !empty($begegnung->heim_verein_id)) + $heim_logo = bildHTML("vereine", $begegnung->heim_verein_id, 30, 30, 0, 0, 'border="0"'); + $gast_logo = bildHTML("mannschaften", $begegnung->gast_team_id, 30, 30, 0, 0, 'border="0"'); + if (empty($gast_logo) && !empty($begegnung->gast_verein_id)) + $gast_logo = bildHTML("vereine", $begegnung->gast_verein_id, 30, 30, 0, 0, 'border="0"'); + $matchez[] = array('id' => $id, 'status' => $status, 'day' => $datum, 'hour' => $zeit, 'round' => $spieltag, 'winner' => $gewinner, 'team1' => $heim_name, 'team2' => $gast_name, 'logo1' => $heim_logo, 'logo2' => $gast_logo, 'score1' => $heim_spielpunkte, 'score2' => $gast_spielpunkte); } - } - } - while ($offset < 2) - $matchez[($i - 4) * 2 + $offset++] = array('status' => 'upcoming', 'winner' => 0, 'team1' => '', 'team2' => '', 'blogo1' => null, 'blogo2' => null, 'slogo1' => null, 'slogo2' => null, 'score1' => '', 'score2' => '', 'placeholder' => true); - } + HTML_sportsmanager_ticker::veranstaltungenTickerPrintable($matchez); // feeding the array to the function it prints the right table + } elseif ($type == "groups") { // when right side groups have to be updated the script is called with type=groups + HTML_sportsmanager_ticker::veranstaltungenTickerPrintRightheader($view_right); + ?> - HTML_sportsmanager_ticker::veranstaltungenTickerPrintRightheader($view_right,$type); - HTML_sportsmanager_ticker::veranstaltungenTickerPrinteliminations($matchez); // called to display right elimination table - - $teamz = array(); - if ($veranstaltung_elimination_index != -1) { - $platz = 1; - foreach ($tabellen[$veranstaltung_elimination_index] as $mannschaft) { - if ($mannschaft->platz > 3 || $mannschaft->platz != $platz) - break; - $groesse = ($n == 0) ? 30 : 17; - $logo = bildHTML("mannschaften", $mannschaft->team_id, $groesse, $groesse, 0, 0, 'border="0"'); - if (empty($logo) && !empty($mannschaft->verein_id)) - $logo = bildHTML("vereine", $mannschaft->verein_id, $groesse, $groesse, 0, 0, 'border="0"'); - $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname); - $platz++; - } - if (count($teamz) != 3) - $teamz = array(); - } - - HTML_sportsmanager_ticker::veranstaltungenTickerPrintop3($teamz); // called to display right top 3 results - } elseif ($type == "finalranking") { - $teamz = array(); - $veranstaltung_titel = JText::_('COM_FINAL_RANKING'); - if ($veranstaltung_elimination_index != -1) { - foreach ($tabellen[$veranstaltung_elimination_index] as $mannschaft) { - $logo = bildHTML("mannschaften", $mannschaft->team_id, 17, 17, 0, 0, 'border="0"'); - if (empty($logo) && !empty($mannschaft->verein_id)) - $logo = bildHTML("vereine", $mannschaft->verein_id, 17, 17, 0, 0, 'border="0"'); - $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname); - } - $veranstaltung_titel = $veranstaltungen[$veranstaltung_elimination_index]->bezeichnung; - } - - HTML_sportsmanager_ticker::veranstaltungenTickerPrintRightheader($view_right,$type); - ?> - - - - heim_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($heim_logo) && !empty($begegnung->heim_verein_id)) - $heim_logo = bildHTML("vereine", $begegnung->heim_verein_id, 30, 30, 0, 0, 'border="0"'); - $gast_logo = bildHTML("mannschaften", $begegnung->gast_team_id, 30, 30, 0, 0, 'border="0"'); - if (empty($gast_logo) && !empty($begegnung->gast_verein_id)) - $gast_logo = bildHTML("vereine", $begegnung->gast_verein_id, 30, 30, 0, 0, 'border="0"'); - // HTML_sportsmanager_ticker::veranstaltungenTickerPrintGameDetails($begegnungen[0], $begegnung_spiele); - ?> - - - - - - - - - - - - - -
heim_spielpunkte > $begegnung->gast_spielpunkte) echo "class=\"finished_winner\" "; ?>id="team_heim">heim_name); ?> -
- -
zwischenergebnis && empty($begegnung->heim_spielpunkte) && empty($begegnung->gast_spielpunkte)) echo "--|--"; else echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?>
- -
-
heim_spielpunkte < $begegnung->gast_spielpunkte) echo "class=\"finished_winner\" "; ?>id="team_gast">gast_name); ?>
zeitpunkt); ?> - spieltag, $begegnung->unterteilung == 0, false, false); ?>
- - - - - - - - - -
- - - teamspiel_heim_punkte > $spiel->teamspiel_gast_punkte) - $sieger = 1; - elseif ($spiel->teamspiel_heim_punkte < $spiel->teamspiel_gast_punkte) - $sieger = 2; - else - $sieger = 0; - ?> - "> - - - - - - - -
"; ?>heim_spieler_1_id)) echo $spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname; if (!empty($spiel->heim_spieler_2_id)) echo "
" . $spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname;?>"; ?>
teamspiel_heim_punkte != 0 || $spiel->teamspiel_gast_punkte != 0) echo $spiel->teamspiel_heim_punkte . ":" . $spiel->teamspiel_gast_punkte; ?>"; ?>gast_spieler_1_id)) echo $spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname; if (!empty($spiel->gast_spieler_2_id)) echo "
" . $spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname;?>"; ?>
-
- addScript(JURI::root(TRUE).'/components/com_sportsmanager/js/jquery.min.js'); - $document->addStyleSheet(SportsManagerURL("&task=veranstaltungen_ticker_css")); - ?> - - -
-
-
-

LIVE-TICKER

- Home -
-
- -
-
- -
- -
- -
- -
-
SEE QUALIFICATION ROUND
-
-
-
-

TABELLE

-
- - -
- - - -
-
-
- - getTemplate().DIRECTORY_SEPARATOR, JPATH_BASE.DIRECTORY_SEPARATOR ); - foreach ($dirs as $dir ) { - $icon = $dir . 'favicon.ico'; - if (file_exists( $icon )) { - $path = str_replace( JPATH_BASE . DIRECTORY_SEPARATOR, '', $dir ); - $path = str_replace( '\\', '/', $path ); - $favicon_url = JURI::base(true).'/'.$path . 'favicon.ico'; - break; - } - } - ?> - - - - - Livescore Ticker - '; ?> - " rel="stylesheet" type="text/css" /> - - - - - - - -
-
- -
-
onClick="window.open('');">
- $veranstaltung) { + if ($index == $veranstaltung_elimination_index) + continue; + $teamz = array(); + $punkte_anzeigen = false; + if (count($tabellen[$index]) > 0 && $tabellen[$index][0]->gesamtpunkte != NULL) + $punkte_anzeigen = true; + foreach ($tabellen[$index] as $mannschaft) { + $logo = bildHTML("mannschaften", $mannschaft->team_id, 17, 17, 0, 0, 'border="0"'); + if (empty($logo) && !empty($mannschaft->verein_id)) + $logo = bildHTML("vereine", $mannschaft->verein_id, 17, 17, 0, 0, 'border="0"'); + if ($punkte_anzeigen) + $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname, 'score' => floatval($mannschaft->gesamtpunkte)); + else + $teamz[] = array('place' => $mannschaft->platz, 'logo' => $logo, 'name' => $mannschaft->teamname); + } + + HTML_sportsmanager_ticker::veranstaltungenTickerPrintgtable($teamz, $veranstaltung->bezeichnung); } ?> -
-

LIVE-TICKER

-
- Home -
-
-
- - - - - body{ - background: #767676; - font-family:Verdana, Geneva, sans-serif; - padding: 2px; - margin:0px; -} - -a{ - outline: 0; -} - -#wrapper { - max-width: 1149px; - min-width: 490px; - margin-left:auto; - margin-right:auto; - position: relative; - padding-right:481px; - /*background: url(left_background_pad.png) top left no-repeat;*/ - -} - -#left_page_rround{ - - width: 6px; - height: 720px; - top:0px; - right:0px; - position: absolute; -} - -#left_page { - width: 100%; - float: left; - position: relative; - /*background: url(right_background_pad.png) top right no-repeat ;*/ -} - -#right_page { - width: 478px; - overflow: hidden; - position: absolute; - top: 0px; - right: 0px; - -moz-border-radius: 7px; - -webkit-border-radius: 7px; - border-radius: 7px; - behavior: url(components/com_sportsmanager/views/sportsmanager/border-radius.htc); - background: #DADEDF; /*url(right_page_background.png) top left no-repeat;*/ - -} - -#left_page_header { - width: 300px; - height: 55px; - float: left; - -} - -h1#pagetitle_text { - font-size:26px; - color: #fff; - float:left; - margin-top: 10px; - margin-left: 20px; - text-decoration:none; - font-weight:bold; - text-transform:uppercase; - margin-bottom: 0px; - z-index: 20; - position: relative; -} - -a#homeicon { - - background: url(homeicon.jpg) no-repeat; - height: 20px; - width: 66px; - float: right; - text-decoration:none; - text-align:right; - color: #666; - font-size: 14px; - line-height: 20px; - font-weight:bold; - margin-top: 15px; - margin-right: 20px; - padding-top: 1px; -} - -#left_menu { - - width: 800px; - display:block; - text-align: left; - -} -#table_matches { - width: 100%; - display:block; -} -#l_menu{ - padding-left: 16px; - margin: 0px; - z-index: 9995; - position:relative; -} -#left_menu ul li a span{ - - - padding: 4px 4px; - text-decoration:none; - display: inline; - font-size:14px; - font-family:Verdana, Geneva, sans-serif; - color:#ffffff; - cursor:pointer; - -} - -#left_menu ul li#all_games { - - margin-right: 20px; - -} - -#left_menu ul li{ - - background:url(right_button.png) top right no-repeat; - padding: 1px 2px 1px 0px; - display: block; - margin-right: 8px; - float:left; - -} - -#left_menu ul li a{ - - background:url(left_button.png) top left no-repeat; - padding: 1px 0px; - color:#FFF; - text-decoration:none; - cursor:pointer; - padding-left: 2px; - -} - -#left_menu ul li#finished a span{ - -} -#left_menu ul li#finished { - background:url(right_button_fin.png) top right no-repeat; -} - -#left_menu ul li#finished a{ - background:url(left_button_fin.png) top left no-repeat; -} - -#left_menu ul li#running a span{ - -} -#left_menu ul li#running { - background:url(right_button_run.png) top right no-repeat; -} - -#left_menu ul li#running a{ - background:url(left_button_run.png) top left no-repeat; -} - -#left_menu ul li#upcoming a span{ - -} -#left_menu ul li#upcoming { - background:url(right_button_upc.png) top right no-repeat; -} - -#left_menu ul li#upcoming a{ - background:url(left_button_upc.png) top left no-repeat; -} + } -#left_menu ul li:hover a span{ + function moreResults(param, param2, param3, param4, param5) { + const x = (param4 - 1) * matchezperpage; + const y = param4 * matchezperpage; + let nodataload = 0; + let nodataload2 = 0; + let $tableMatches1 = $('#table_matches tr.amatch'); + let $tableMatchesFinished1 = $('#table_matches tr.finished'); + let $tableMatchesUpcoming1 = $('#table_matches tr.upcoming'); + let $tableMatchesUpdated1 = $('#table_matches tr.updated'); + let $tableMatchesLiveNow1 = $('#table_matches tr.livenow'); + if ((machstampz['allmatches'] === 0) || (groupstampz[param2] === 0) || (param5 === 1) || (groupstampz[param2] == null)) { + if (param2.indexOf("matchdetail") >= 0) { + scrollpos[param2] = $("." + param2 + ' #detailedresults').scrollTop(); + } else { + scrollpos[param2] = $('#groups2.' + param2).scrollTop(); + } + const client = new XMLHttpRequest(); + client.open('GET', '&matches=' + 'allmatches' + '&groups=' + param2); + client.onreadystatechange = function () { + let tstamps; + if (client.readyState === 4 && client.status === 200) { + tstamps = client.responseText.split("&"); + if (machstampz['allmatches'] !== tstamps[0].replace('tmatchez=', '')) { + machstampz['allmatches'] = tstamps[0].replace('tmatchez=', ''); + $('#table_matches').load('&type=' + 'allmatches' + '&day=' + param3 + '¤tpage=' + param4, function (response, status) { + if (status === "success") { + let $tableMatches = $tableMatches1; + let $tableMatchesFinished = $tableMatchesFinished1; + let $tableMatchesUpcoming = $tableMatchesUpcoming1; + let $tableMatchesUpdated = $tableMatchesUpdated1; + let $tableMatchesLiveNow = $tableMatchesLiveNow1; + if (param === 'allmatches') { + $tableMatches.hide(); + $tableMatches.removeClass('even'); + $tableMatches.removeClass('odd'); + $('#table_matches tr.amatch:nth-child(even)').addClass('even'); + $('#table_matches tr.amatch:nth-child(odd)').addClass('odd'); + $tableMatches.slice(x, y).show(); + pager($tableMatches.length); + } else { + $tableMatches.removeClass('even'); + $tableMatches.removeClass('odd'); + $tableMatchesFinished.hide(); + $tableMatchesUpdated.hide(); + $tableMatchesLiveNow.hide(); + $tableMatchesUpcoming.hide(); + } + if (param === 'finmatches') { + $('#table_matches tr.finished:nth-child(even)').addClass('even'); + $('#table_matches tr.finished:nth-child(odd)').addClass('odd'); + $tableMatchesFinished.slice(x, y).show(); + pager($tableMatchesFinished.length); + } + if (param === 'upcmatches') { + $('#table_matches tr.upcoming:nth-child(even)').addClass('even'); + $('#table_matches tr.upcoming:nth-child(odd)').addClass('odd'); + $tableMatchesUpcoming.slice(x, y).show(); + pager($tableMatchesUpcoming.length); + } + if (param === 'runmatches') { + $tableMatchesUpdated.slice(x, y).show(); + $tableMatchesLiveNow.slice(x, y).show(); + pager($tableMatchesUpdated.length + $tableMatchesLiveNow.length); + } + $('#table_matches tr:eq(0)').show(); + $('#table_matches tr.last_row').show(); + $('#r_menu li').removeClass('active'); + $('#r_menu ' + active1).addClass('active'); + $('#l_menu li').removeClass('active'); + $('#l_menu ' + active2).addClass('active'); + } + }); + } else { - padding: 4px 4px; - text-decoration:none; - display: inline; - font-size:14px; - font-family:Verdana, Geneva, sans-serif; - color:#ffffff; - cursor:pointer; + nodataload = 1; -} + } -#left_menu ul li:hover,#left_menu ul li.active,#left_menu ul li#finished:hover,#left_menu ul li#finished.active,#left_menu ul li#upcoming:hover,#left_menu ul li#upcoming.active,#left_menu ul li#running:hover,#left_menu ul li#running.active{ + if (groupstampz[param2] !== tstamps[1].replace('tgroups=', '')) { + if (groupstampz[param2] == null) { + $('#right_page').append('
'); + } + groupstampz[param2] = tstamps[1].replace('tgroups=', ''); + $('#right_page #groups2.' + param2).load('&type=' + param2 + '&day=' + param3, function (response, status) { + if (status === "success") { + $('#right_page #groups2').hide(); + $('#r_menu li').removeClass('active'); + $('#r_menu li#' + param2).addClass('active'); + $('#right_page #groups2.' + param2).show(); - background:url(right_button_hover.png) top right no-repeat; - padding: 1px 2px 1px 0px; - display: inline; - margin-right: 8px; + if (param2.indexOf("matchdetail") >= 0) { + let $detailedResults = $("." + param2 + ' #detailedresults'); + $detailedResults.blur(); + $detailedResults.focus(); + $detailedResults.scrollTop(scrollpos[param2]); + } else { + let $group2 = $('#groups2.' + param2); + $group2.blur(); + $group2.focus(); + $group2.scrollTop(scrollpos[param2]); + } + } + }); -} + } else { -#left_menu ul li:hover a,#left_menu ul li.active a,#left_menu ul li#finished:hover a,#left_menu ul li#finished.active a,#left_menu ul li#upcoming:hover a,#left_menu ul li#upcoming.active a,#left_menu ul li#running:hover a,#left_menu ul li#running.active a{ + nodataload2 = 1; - background:url(left_button_hover.png) top left no-repeat; - padding: 1px 0px; - color:#FFF; - text-decoration:none; - cursor:pointer; - padding-left: 2px; + } + } + } + client.send(); + } + if (((param5 === 1) && (nodataload === 1)) || (param5 === 0) || (globalresize === 1)) { + globalresize = 0; + if (param === 'allmatches') { + $tableMatches1.hide(); + $tableMatches1.removeClass('even'); + $tableMatches1.removeClass('odd'); + $('#table_matches tr.amatch:nth-child(even)').addClass('even'); + $('#table_matches tr.amatch:nth-child(odd)').addClass('odd'); + $tableMatches1.slice(x, y).show(); + pager($tableMatches1.length); + } else { + $tableMatches1.removeClass('even'); + $tableMatches1.removeClass('odd'); + $tableMatchesFinished1.hide(); + $tableMatchesUpdated1.hide(); + $tableMatchesLiveNow1.hide(); + $tableMatchesUpcoming1.hide(); + } + if (param === 'finmatches') { + $('#table_matches tr.finished:nth-child(even)').addClass('even'); + $('#table_matches tr.finished:nth-child(odd)').addClass('odd'); + $tableMatchesFinished1.slice(x, y).show(); + pager($tableMatchesFinished1.length); + } + if (param === 'upcmatches') { + $('#table_matches tr.upcoming:nth-child(even)').addClass('even'); + $('#table_matches tr.upcoming:nth-child(odd)').addClass('odd'); + $tableMatchesUpcoming1.slice(x, y).show(); + pager($tableMatchesUpcoming1.length); + } + if (param === 'runmatches') { + $tableMatchesUpdated1.slice(x, y).show(); + $tableMatchesLiveNow1.slice(x, y).show(); + pager($tableMatchesUpdated1.length + $tableMatchesLiveNow1.length); + } + $('#table_matches tr:eq(0)').show(); + $('#table_matches tr.last_row').show(); + $('#r_menu li').removeClass('active'); + $('#r_menu ' + active1).addClass('active'); + $('#l_menu li').removeClass('active'); + $('#l_menu ' + active2).addClass('active'); -} + } + if (((param5 === 1) && (nodataload2 === 1)) || (param5 === 0)) { -table#tbl { - width:100%; -} -#tbl tr.updated td { + $('#right_page #groups2').hide(); + $('#r_menu li').removeClass('active'); + $('#r_menu li#' + param2).addClass('active'); + $('#right_page #groups2.' + param2).show(); - border-bottom: 1px solid #fa9917; - height: 45px; -} -tr.updated>:first-child { - -} -tr.updated>:last-child { - -} - -#tbl tr.livenow td { - - border-bottom: 1px solid #007f3d; - height: 45px; -} -tr.livenow>:first-child { - -} -tr.livenow>:last-child { - -} -#tbl th { - font-family:Verdana, Geneva, sans-serif; - font-size: 14px; - text-decoration:none; - color:#393939; - height:25px; - text-align: center; - background-color:#c9cfd0; -} - -#tbl tr td { - font-family:Verdana, Geneva, sans-serif; - font-size:14px; - color: #656565; - text-align: center; - height: 44px; -} -#tbl tr td.matchdate{ - height: 25px; - text-align:left; - font-weight:bold; - font-size: 12px; - padding-left: 10px; - color: #fff; -} - -#tbl tr.amatch{ - cursor: pointer; -} - -#detailedresults #tbl tr td{ - font-size: 12px; -} - -#detailedresults #tbl tr.odd td{ - background-color: #f8f8f8; - text-align: center; -} - -#detailedresults #tbl tr.even td{ - background-color: #fdfdfd; - text-align: center; -} - -#detailedresults #tbl tr td.num{ - width: 50px; -} - -#detailedresults #tbl tr td.heim{ - width: 150px; -} - -#detailedresults #tbl tr td.ergeb{ - width: 80px; - font-size: 14px; - font-weight: bold; - color: #c42424; - text-decoration: none; -} - -#detailedresults #tbl tr td.ergeb a{ + } + } + moreResults('allmatches', 'groups', 1, 1, 0); + int = self.setInterval("moreResults(matches,groups,day,page,1)", 60000); + + + + match_status.png); - background-position: center center; - background-repeat: no-repeat; -} - -#date_time { - min-width: 51px; -} -#match_status_finished { - min-width: 46px; - height: 19px; - background-image:url(fin_icon.png); - background-position: center center; - background-repeat: no-repeat; - -} - -#match_status_updated{ - min-width: 46px; - height: 19px; - background-image:url(upd_icon.png); - background-position: center center; - background-repeat: no-repeat; -} - -#match_status_livenow { - min-width: 46px; - height: 19px; - background-image:url(live_icon.png); - background-position: center center; - background-repeat: no-repeat; -} - -#match_status_upcoming { - min-width: 46px; - height: 19px; - background-image:url(upc_icon.png); - background-position: center center; - background-repeat: no-repeat; -} - - -tr.last_row { - background-color:#c9cfd0; - height:20px; -} - -#tbl tr td#last_row { - background-color:#c9cfd0; - height: 25px; -} - -#team_heim { - -} - -#team_gast { - - -} - -#match_resultat { - width:150px; - margin-left:auto; - margin-right: auto; -} - -#team_heim_logo { - width: 30px; - height: 30px; - float:left; - margin-right: 5px; -} - -tr.finished.odd #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - font-weight:bold; - text-align:center; - color: #c42424; - padding-top: 3px; - padding-bottom: 2px; -} - -tr.finished.even #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - font-weight:bold; - text-align:center; - color: #c42424; - padding-top: 3px; - padding-bottom: 2px; -} - -tr.updated #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - font-weight:bold; - text-align:center; - color: #fa9917; - padding-top: 3px; - padding-bottom: 2px; -} - -tr.livenow #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - font-weight:bold; - text-align:center; - color: #007f3d; - padding-top: 3px; - padding-bottom: 2px; -} - -tr.upcoming.odd #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - text-align:center; - color: #3a3a3a; - padding-top: 3px; - padding-bottom: 2px; -} - -tr.upcoming.even #resultat_holder { - width: 78px; - height: 25px; - background:url(result_holder.png) center center no-repeat; - float:left; - font-size: 19px; - font:Verdana, Geneva, sans-serif; - text-align:center; - color: #3a3a3a; - padding-top: 3px; - padding-bottom: 2px; -} - -#team_gast_logo { - width: 30px; - height: 30px; - float:left; - margin-left: 5px; -} - -#combobox { - width: 100px; - padding-left: 16px; - padding-top: 8px; - float:left; - margin-top: 10px; -} - -#results_button { - width: 280px; - background:url(see_results_btn_right.png) right center no-repeat; - margin-right: 46px; - float:right; - font-family:Verdana, Geneva, sans-serif; - font-size: 14px; - color:#fff; - font-weight:bold; - text-align:center; - cursor: pointer; - padding-right: 11px; - margin-top: 10px; - -} -#results_button_right{ - height: 30px; - padding-top: 16px; - background:url(see_results_btn.png) left center no-repeat; - padding-left: 11px; -} -#right_page_header { - width: 460px; - height: 54px; - -} - -#right_menu { - - width: 460px; - display:block; - text-align: left; - -} - -#r_menu{ - padding-left: 23px; - margin: 0px; -} -#right_menu ul li a span{ - - - padding: 4px 4px; - text-decoration:none; - display: inline; - font-size:14px; - font-family:Verdana, Geneva, sans-serif; - color:#ffffff; - cursor:pointer; - -} - -#right_menu ul li#eliminations { - - margin-right: 134px; - -} - -#right_menu ul li{ - - background:url(right_button.png) top right no-repeat; - padding: 1px 2px 2px 0px; - display: block; - margin-right: 8px; - float:left; - -} - -#right_menu ul li a{ - - background:url(left_button.png) top left no-repeat; - padding: 1px 0px 2px 2px; - color:#FFF; - text-decoration:none; - cursor:pointer; -} - - -#right_menu ul li#finalranking a span{ - -} -#right_menu ul li#finalranking { - background:url(right_button_fin.png) top right no-repeat; -} - -#right_menu ul li#finalranking a{ - background:url(left_button_fin.png) top left no-repeat; -} - - -#right_menu ul li:hover a span{ - - - padding: 4px 4px; - text-decoration:none; - display: inline; - font-size:14px; - font-family:Verdana, Geneva, sans-serif; - color:#ffffff; - cursor:pointer; - -} - -#right_menu ul li:hover,#right_menu ul li.active, #right_menu ul li#finalranking:hover,#right_menu ul li#finalranking.active{ - - background:url(right_button_hover.png) top right no-repeat; - padding: 1px 2px 2px 0px; - display: inline; - margin-right: 8px; - -} - -#right_menu ul li:hover a,#right_menu ul li.active a, #right_menu ul li#finalranking:hover a,#right_menu ul li#finalranking.active a{ - - background:url(left_button_hover.png) top left no-repeat; - padding: 1px 0px 2px 2px; - color:#FFF; - text-decoration:none; - cursor:pointer; - padding-left: 2px; - -} -#chart_matches { - - width: 460px; - height: 500px; - display:block; - -} - -.grey_button{ - background:#C9CFD0; - width:153px; - height:22px; - text-align:center; - cursor:pointer; - float:left; - -} -.grey_button a{ - font-size:14px; - font-family:Verdana, Geneva, sans-serif; - color:#393939; - text-decoration:none; - -} -#tab_groups{ - background:url(tab_groups.png) top left no-repeat; - width:105px; - height:20px; - position:absolute; - top:57px; - left:23px; - padding-left: 9px; - cursor:pointer; -} -#tab_elimination{ - background:url(tab_groups.png) top left no-repeat; - width:105px; - height:20px; - position:absolute; - top:57px; - left:131px; - padding-left: 9px; - cursor:pointer; -} -#tab_elimination:hover,#tab_groups:hover{ - background:url(tab_eliminations.png) top left no-repeat; -} -#tab_groups a{ - text-decoration:none; - font-size:14px; - color:#FFF; -} -#tab_elimination a{ - text-decoration:none; - font-size:14px; - color:#FFF; -} -#heading{ - background-color:#c9cfd0; - -} -#heading td{ - font-family:Verdana, Geneva, sans-serif; - font-size:14px; - color:#393939; - padding: 2px 10px 2px 10px; -} -#heading td#points{ - padding-left: 40px; - padding-right: 40px; -} -.groups td{ - font-family:Verdana, Geneva, sans-serif; - font-size:14px; - color:#000; - padding: 2px 20px 2px 20px; - text-align:center; -} -table.groups{ - width: 460px; -} -#groups2{ - padding-top: 0px; - display: block; - overflow-y: scroll; -} - -#groups2.matchdetail{ - overflow: hidden; -} - -#scheme{ - background:url(sheme1.png) top left no-repeat; - width:456px; - margin-left: 2px; - height:465px; - position:relative; - font-family:Verdana, Geneva, sans-serif; - clear: both; -} -#winner_area{ - width:455px; -} -.field_team{ - width:140px; - height:30px; - font-size:12px; - color:#6f6f6f; - padding-top:2px; -} -.field_team img{ - margin-left: 2px; - margin-top: 0px; - margin-right: 2px; - float:left; - -} -#team1{ - position:absolute; - top:9px; - left:8px; -} -.field_team span{ - float:left; - width: 105px; -} -#team2{ - position:absolute; - top:68px; - left:8px; -} -.field_score{ - background:#c0d3eb; - width:109px; - height:21px; - padding-left:27px; - padding-top: 5px; - border-left:1px solid #c0d3eb; - border-right:1px solid #c0d3eb; -} -#result{ - font-family:Verdana, Geneva, sans-serif; - width:46px; - height:14px; - border:1px solid #e8e8e8; - background-color:#FFF; - float:left; - margin-left: 4px; - margin-right: 4px; - text-align:center; - font-size:12px; - color:#000; - font-weight:bold; -} -#result1{ - position:absolute; - top:42px; - left:9px; -} -#result2{ - position:absolute; - top:160px; - left:9px; -} -#result3{ - position:absolute; - top:278px; - left:9px; -} -#result4{ - position:absolute; - top:397px; - left:9px; -} -#result5{ - position:absolute; - top:101px; - left:160px; -} -#result6{ - position:absolute; - top:342px; - left:160px; -} -#result7{ - position:absolute; - top:221px; - left:311px; -} -#result8{ - position:absolute; - top:397px; - left:311px; -} -#team3{ - position:absolute; - top:126px; - left:8px; -} -#team4{ - position:absolute; - top:187px; - left:8px; -} -#team5{ - position:absolute; - top:244px; - left:8px; -} -#team6{ - position:absolute; - top:303px; - left:8px; -} -#team7{ - position:absolute; - top:363px; - left:8px; -} -#team8{ - position:absolute; - top:422px; - left:8px; -} -#team9{ - position:absolute; - top:68px; - left:159px; -} -#team10{ - position:absolute; - top:127px; - left:159px; -} -#team11{ - position:absolute; - top:310px; - left:159px; -} -#team12{ - position:absolute; - top:368px; - left:159px; -} -#team13{ - position:absolute; - top:187px; - left:310px; -} -#team14{ - position:absolute; - top:246px; - left:310px; -} -#team15{ - position:absolute; - top:363px; - left:310px; -} -#team16{ - position:absolute; - top:422px; - left:310px; -} -.strike_through span{ - text-decoration: line-through; -} -.winner_bold{ - font-weight:bold; - color:#000; -} -.field_score img{ - float:left; -} -.livenow_match{ - background-color:#bcf0d5; - border-left:1px solid #0c8546; - border-right:1px solid #0c8546; - color:#007f3d; -} -.finished_match{ - background-color:#c42424; - border-left:1px solid #c93d3d; - border-right:1px solid #c93d3d; - color:#c42424; -} -.livenow_match #result{ - color:#007f3d; -} -.finished_match #result{ - color:#c42424; -} -.place_final{ - width:120px; - height:17px; - font-size:14px; - color:#FFF; - padding-left: 27px; - padding-top:2px; - -} -#place_position1{ - position:absolute; - top:158px; - left:310px; -} -#place_position3{ - position:absolute; - top:334px; - left:310px; -} -#winner_area_heading{ - font-family:Verdana, Geneva, sans-serif; - background-color:#656565; - width:455px; - height:19px; - margin-left:2px; - margin-top:7px; - color:#FFF; - text-transform:uppercase; - font-size:14px; - text-align:center; - padding-top:3px; -} -#winner_area_positions{ - font-family:Verdana, Geneva, sans-serif; - background-color:#FFF; - width:453px; - padding-bottom: 2px; - margin-left:2px; - border-left:1px solid #e5e5e5; - border-right:1px solid #e5e5e5; - position:relative; - margin-bottom: 5px; -} -#cup{ - background:url(cup.png) top left no-repeat; - width:30px; - height:38px; - position:absolute; - top:5px; - left:409px; -} -#view_all_results{ - background:url(btn_view_results.png) top left no-repeat; - width:170px; - height:22px; - position:absolute; - top:63px; - left:275px; - color:#FFF; - font-family:Verdana, Geneva, sans-serif; - font-size:14px; - text-align:center; - padding-top:3px; - font-weight:bold; - cursor:pointer; -} -#winner, #winner_name{ - font-family:Verdana, Geneva, sans-serif; - font-size:20px; - color:#656565; - padding-left: 7px; -} -#first_position img{ - margin-top: 3px; -} -#second_position, #third_position{ - width:300px; -} -#second_position span, #third_position span{ - font-family:Verdana, Geneva, sans-serif; - font-size:14px; - color:#656565; - padding-left: 7px; -} -#second_position img, #third_position img{ - margin-left: 9px; -} - -#mid_page_round{ - background: #dadedf; - overflow: hidden; - -moz-border-radius: 7px; - -webkit-border-radius: 7px; - border-radius: 7px; - behavior: url(components/com_sportsmanager/views/sportsmanager/border-radius.htc); - z-index: 0; -} -#last_row span{ - cursor: pointer; - font-size: 14px; - color: #7e8283; -} -#last_row span#curr{ - font-weight: bold; - font-size: 14px; -} -#last_row span#nextpage{ - padding-right: 19px; - background: url(next.jpg) center right no-repeat; - font-size: 14px; - font-weight: bold; -} -#last_row span#prevpage{ - padding-left: 19px; - background: url(prev.jpg) center left no-repeat; - font-size: 14px; - font-weight: bold; -} -#fedlogo{ - width: 139px; - height: 69px; - position: absolute; - top: 195px; - left: 159px; -} -#sponsorz{ - background: #C9CFD0; - height: 45px; - width: 450px; - position: absolute; - left: 10px; - top: 7px; - z-index:10; - cursor: pointer; -} -#sponsorz img{ - width: 100%; - height: auto; -} -#left_menu ul li{ - z-index:9996; -} -#left_menu ul li a{ - z-index:9997; -} -#left_menu ul li a span{ - z-index:9998; -} - -@media only screen and (max-width:1200px){ - -#tbl th,#tbl tr td { - font-size: 12px; -} -} - -@media only screen and (max-width:1030px){ - -#sponsorz{ - width: 390px; - height: 39px; -} -} - This function is responsible for display of the left table matches - static function veranstaltungenTickerPrintable($matchez,$currentpage=1){ - $bilder_pfad = JURI::root(TRUE).'/components/com_sportsmanager/images/'; - - $matchezperpage=12; - $allmatchez=count($matchez); - $allpages=floor($allmatchez/$matchezperpage);if(($allmatchez%$matchezperpage)>0)$allpages++; - if($currentpage==''){$currentpage=1;}elseif(($currentpage<1)||($currentpage>$allpages)){$currentpage=1;} - - echo ' + + static function veranstaltungenTickerCSS(): void + { + $bilder_pfad = Uri::root(TRUE) . '/components/com_sportsmanager/images/'; + ?> + body{ + background: #767676; + font-family:Verdana, Geneva, sans-serif; + padding: 2px; + margin:0px; + } + + a{ + outline: 0; + } + + #wrapper { + max-width: 1149px; + min-width: 490px; + margin-left:auto; + margin-right:auto; + position: relative; + padding-right:481px; + /*background: url(left_background_pad.png) top left no-repeat;*/ + + } + + #left_page_rround{ + + width: 6px; + height: 720px; + top:0px; + right:0px; + position: absolute; + } + + #left_page { + width: 100%; + float: left; + position: relative; + /*background: url(right_background_pad.png) top right no-repeat ;*/ + } + + #right_page { + width: 478px; + overflow: hidden; + position: absolute; + top: 0px; + right: 0px; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; + border-radius: 7px; + behavior: url(components/com_sportsmanager/views/sportsmanager/border-radius.htc); + background: #DADEDF; /*url(right_page_background.png) top left no-repeat;*/ + + } + + #left_page_header { + width: 300px; + height: 55px; + float: left; + + } + + h1#pagetitle_text { + font-size:26px; + color: #fff; + float:left; + margin-top: 10px; + margin-left: 20px; + text-decoration:none; + font-weight:bold; + text-transform:uppercase; + margin-bottom: 0px; + z-index: 20; + position: relative; + } + + a#homeicon { + + background: url(homeicon.jpg) no-repeat; + height: 20px; + width: 66px; + float: right; + text-decoration:none; + text-align:right; + color: #666; + font-size: 14px; + line-height: 20px; + font-weight:bold; + margin-top: 15px; + margin-right: 20px; + padding-top: 1px; + } + + #left_menu { + + width: 800px; + display:block; + text-align: left; + + } + #table_matches { + width: 100%; + display:block; + } + #l_menu{ + padding-left: 16px; + margin: 0px; + z-index: 9995; + position:relative; + } + #left_menu ul li a span{ + + + padding: 4px 4px; + text-decoration:none; + display: inline; + font-size:14px; + font-family:Verdana, Geneva, sans-serif; + color:#ffffff; + cursor:pointer; + + } + + #left_menu ul li#all_games { + + margin-right: 20px; + + } + + #left_menu ul li{ + + background:url(right_button.png) top right no-repeat; + padding: 1px 2px 1px 0px; + display: block; + margin-right: 8px; + float:left; + + } + + #left_menu ul li a{ + + background:url(left_button.png) top left no-repeat; + padding: 1px 0px; + color:#FFF; + text-decoration:none; + cursor:pointer; + padding-left: 2px; + + } + + #left_menu ul li#finished a span{ + + } + #left_menu ul li#finished { + background:url(right_button_fin.png) top right no-repeat; + } + + #left_menu ul li#finished a{ + background:url(left_button_fin.png) top left no-repeat; + } + + #left_menu ul li#running a span{ + + } + #left_menu ul li#running { + background:url(right_button_run.png) top right no-repeat; + } + + #left_menu ul li#running a{ + background:url(left_button_run.png) top left no-repeat; + } + + #left_menu ul li#upcoming a span{ + + } + #left_menu ul li#upcoming { + background:url(right_button_upc.png) top right no-repeat; + } + + #left_menu ul li#upcoming a{ + background:url(left_button_upc.png) top left no-repeat; + } + + + #left_menu ul li:hover a span{ + + + padding: 4px 4px; + text-decoration:none; + display: inline; + font-size:14px; + font-family:Verdana, Geneva, sans-serif; + color:#ffffff; + cursor:pointer; + + } + + #left_menu ul li:hover,#left_menu ul li.active,#left_menu ul li#finished:hover,#left_menu ul li#finished.active,#left_menu ul li#upcoming:hover,#left_menu ul li#upcoming.active,#left_menu ul li#running:hover,#left_menu ul li#running.active{ + + background:url(right_button_hover.png) top right no-repeat; + padding: 1px 2px 1px 0px; + display: inline; + margin-right: 8px; + + } + + #left_menu ul li:hover a,#left_menu ul li.active a,#left_menu ul li#finished:hover a,#left_menu ul li#finished.active a,#left_menu ul li#upcoming:hover a,#left_menu ul li#upcoming.active a,#left_menu ul li#running:hover a,#left_menu ul li#running.active a{ + + background:url(left_button_hover.png) top left no-repeat; + padding: 1px 0px; + color:#FFF; + text-decoration:none; + cursor:pointer; + padding-left: 2px; + + } + + table#tbl { + width:100%; + } + #tbl tr.updated td { + + border-bottom: 1px solid #fa9917; + height: 45px; + } + tr.updated>:first-child { + + } + tr.updated>:last-child { + + } + + #tbl tr.livenow td { + + border-bottom: 1px solid #007f3d; + height: 45px; + } + tr.livenow>:first-child { + + } + tr.livenow>:last-child { + + } + #tbl th { + font-family:Verdana, Geneva, sans-serif; + font-size: 14px; + text-decoration:none; + color:#393939; + height:25px; + text-align: center; + background-color:#c9cfd0; + } + + #tbl tr td { + font-family:Verdana, Geneva, sans-serif; + font-size:14px; + color: #656565; + text-align: center; + height: 44px; + } + #tbl tr td.matchdate{ + height: 25px; + text-align:left; + font-weight:bold; + font-size: 12px; + padding-left: 10px; + color: #fff; + } + + #tbl tr.amatch{ + cursor: pointer; + } + + #detailedresults #tbl tr td{ + font-size: 12px; + } + + #detailedresults #tbl tr.odd td{ + background-color: #f8f8f8; + text-align: center; + } + + #detailedresults #tbl tr.even td{ + background-color: #fdfdfd; + text-align: center; + } + + #detailedresults #tbl tr td.num{ + width: 50px; + } + + #detailedresults #tbl tr td.heim{ + width: 150px; + } + + #detailedresults #tbl tr td.ergeb{ + width: 80px; + font-size: 14px; + font-weight: bold; + color: #c42424; + text-decoration: none; + } + + #detailedresults #tbl tr td.ergeb a{ + + } + + #detailedresults #tbl tr td.gast{ + width: 150px; + } + #tbl tr.tablehead td{ + height: 25px; + font-weight: bold; + background-color: #C9CFD0; + font-size: 12px; + } + tr.finished.odd { + background-color:#f1f2f2; + } + + tr.finished.even { + background-color:#eaecec; + } + + tr.updated { + background-color:#ffeed7; + } + + + tr.livenow { + background-color:#bcf0d5; + border:10px solid #007f3d; + } + + tr.upcoming.odd { + background-color:#dde8f3; + } + tr.upcoming.even { + background-color:#d1e0ef; + } + + #tbl tr td.finished_winner { + color: #393939; + font-weight:bold; + } + + #match_round { + + min-width: 51px; + height: 25px; + text-align: center; + background-image:url(match_status.png); + background-position: center center; + background-repeat: no-repeat; + } + + #date_time { + min-width: 51px; + } + #match_status_finished { + min-width: 46px; + height: 19px; + background-image:url(fin_icon.png); + background-position: center center; + background-repeat: no-repeat; + + } + + #match_status_updated{ + min-width: 46px; + height: 19px; + background-image:url(upd_icon.png); + background-position: center center; + background-repeat: no-repeat; + } + + #match_status_livenow { + min-width: 46px; + height: 19px; + background-image:url(live_icon.png); + background-position: center center; + background-repeat: no-repeat; + } + + #match_status_upcoming { + min-width: 46px; + height: 19px; + background-image:url(upc_icon.png); + background-position: center center; + background-repeat: no-repeat; + } + + + tr.last_row { + background-color:#c9cfd0; + height:20px; + } + + #tbl tr td#last_row { + background-color:#c9cfd0; + height: 25px; + } + + #team_heim { + + } + + #team_gast { + + + } + + #match_resultat { + width:150px; + margin-left:auto; + margin-right: auto; + } + + #team_heim_logo { + width: 30px; + height: 30px; + float:left; + margin-right: 5px; + } + + tr.finished.odd #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + font-weight:bold; + text-align:center; + color: #c42424; + padding-top: 3px; + padding-bottom: 2px; + } + + tr.finished.even #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + font-weight:bold; + text-align:center; + color: #c42424; + padding-top: 3px; + padding-bottom: 2px; + } + + tr.updated #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + font-weight:bold; + text-align:center; + color: #fa9917; + padding-top: 3px; + padding-bottom: 2px; + } + + tr.livenow #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + font-weight:bold; + text-align:center; + color: #007f3d; + padding-top: 3px; + padding-bottom: 2px; + } + + tr.upcoming.odd #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + text-align:center; + color: #3a3a3a; + padding-top: 3px; + padding-bottom: 2px; + } + + tr.upcoming.even #resultat_holder { + width: 78px; + height: 25px; + background:url(result_holder.png) center center no-repeat; + float:left; + font-size: 19px; + font:Verdana, Geneva, sans-serif; + text-align:center; + color: #3a3a3a; + padding-top: 3px; + padding-bottom: 2px; + } + + #team_gast_logo { + width: 30px; + height: 30px; + float:left; + margin-left: 5px; + } + + #combobox { + width: 100px; + padding-left: 16px; + padding-top: 8px; + float:left; + margin-top: 10px; + } + + #results_button { + width: 280px; + background:url(see_results_btn_right.png) right center no-repeat; + margin-right: 46px; + float:right; + font-family:Verdana, Geneva, sans-serif; + font-size: 14px; + color:#fff; + font-weight:bold; + text-align:center; + cursor: pointer; + padding-right: 11px; + margin-top: 10px; + + } + #results_button_right{ + height: 30px; + padding-top: 16px; + background:url(see_results_btn.png) left center no-repeat; + padding-left: 11px; + } + #right_page_header { + width: 460px; + height: 54px; + + } + + #right_menu { + + width: 460px; + display:block; + text-align: left; + + } + + #r_menu{ + padding-left: 23px; + margin: 0px; + } + #right_menu ul li a span{ + + + padding: 4px 4px; + text-decoration:none; + display: inline; + font-size:14px; + font-family:Verdana, Geneva, sans-serif; + color:#ffffff; + cursor:pointer; + + } + + #right_menu ul li#eliminations { + + margin-right: 134px; + + } + + #right_menu ul li{ + + background:url(right_button.png) top right no-repeat; + padding: 1px 2px 2px 0px; + display: block; + margin-right: 8px; + float:left; + + } + + #right_menu ul li a{ + + background:url(left_button.png) top left no-repeat; + padding: 1px 0px 2px 2px; + color:#FFF; + text-decoration:none; + cursor:pointer; + } + + + #right_menu ul li#finalranking a span{ + + } + #right_menu ul li#finalranking { + background:url(right_button_fin.png) top right no-repeat; + } + + #right_menu ul li#finalranking a{ + background:url(left_button_fin.png) top left no-repeat; + } + + + #right_menu ul li:hover a span{ + + + padding: 4px 4px; + text-decoration:none; + display: inline; + font-size:14px; + font-family:Verdana, Geneva, sans-serif; + color:#ffffff; + cursor:pointer; + + } + + #right_menu ul li:hover,#right_menu ul li.active, #right_menu ul li#finalranking:hover,#right_menu ul li#finalranking.active{ + + background:url(right_button_hover.png) top right no-repeat; + padding: 1px 2px 2px 0px; + display: inline; + margin-right: 8px; + + } + + #right_menu ul li:hover a,#right_menu ul li.active a, #right_menu ul li#finalranking:hover a,#right_menu ul li#finalranking.active a{ + + background:url(left_button_hover.png) top left no-repeat; + padding: 1px 0px 2px 2px; + color:#FFF; + text-decoration:none; + cursor:pointer; + padding-left: 2px; + + } + #chart_matches { + + width: 460px; + height: 500px; + display:block; + + } + + .grey_button{ + background:#C9CFD0; + width:153px; + height:22px; + text-align:center; + cursor:pointer; + float:left; + + } + .grey_button a{ + font-size:14px; + font-family:Verdana, Geneva, sans-serif; + color:#393939; + text-decoration:none; + + } + #tab_groups{ + background:url(tab_groups.png) top left no-repeat; + width:105px; + height:20px; + position:absolute; + top:57px; + left:23px; + padding-left: 9px; + cursor:pointer; + } + #tab_elimination{ + background:url(tab_groups.png) top left no-repeat; + width:105px; + height:20px; + position:absolute; + top:57px; + left:131px; + padding-left: 9px; + cursor:pointer; + } + #tab_elimination:hover,#tab_groups:hover{ + background:url(tab_eliminations.png) top left no-repeat; + } + #tab_groups a{ + text-decoration:none; + font-size:14px; + color:#FFF; + } + #tab_elimination a{ + text-decoration:none; + font-size:14px; + color:#FFF; + } + #heading{ + background-color:#c9cfd0; + + } + #heading td{ + font-family:Verdana, Geneva, sans-serif; + font-size:14px; + color:#393939; + padding: 2px 10px 2px 10px; + } + #heading td#points{ + padding-left: 40px; + padding-right: 40px; + } + .groups td{ + font-family:Verdana, Geneva, sans-serif; + font-size:14px; + color:#000; + padding: 2px 20px 2px 20px; + text-align:center; + } + table.groups{ + width: 460px; + } + #groups2{ + padding-top: 0px; + display: block; + overflow-y: scroll; + } + + #groups2.matchdetail{ + overflow: hidden; + } + + #scheme{ + background:url(sheme1.png) top left no-repeat; + width:456px; + margin-left: 2px; + height:465px; + position:relative; + font-family:Verdana, Geneva, sans-serif; + clear: both; + } + #winner_area{ + width:455px; + } + .field_team{ + width:140px; + height:30px; + font-size:12px; + color:#6f6f6f; + padding-top:2px; + } + .field_team img{ + margin-left: 2px; + margin-top: 0px; + margin-right: 2px; + float:left; + + } + #team1{ + position:absolute; + top:9px; + left:8px; + } + .field_team span{ + float:left; + width: 105px; + } + #team2{ + position:absolute; + top:68px; + left:8px; + } + .field_score{ + background:#c0d3eb; + width:109px; + height:21px; + padding-left:27px; + padding-top: 5px; + border-left:1px solid #c0d3eb; + border-right:1px solid #c0d3eb; + } + #result{ + font-family:Verdana, Geneva, sans-serif; + width:46px; + height:14px; + border:1px solid #e8e8e8; + background-color:#FFF; + float:left; + margin-left: 4px; + margin-right: 4px; + text-align:center; + font-size:12px; + color:#000; + font-weight:bold; + } + #result1{ + position:absolute; + top:42px; + left:9px; + } + #result2{ + position:absolute; + top:160px; + left:9px; + } + #result3{ + position:absolute; + top:278px; + left:9px; + } + #result4{ + position:absolute; + top:397px; + left:9px; + } + #result5{ + position:absolute; + top:101px; + left:160px; + } + #result6{ + position:absolute; + top:342px; + left:160px; + } + #result7{ + position:absolute; + top:221px; + left:311px; + } + #result8{ + position:absolute; + top:397px; + left:311px; + } + #team3{ + position:absolute; + top:126px; + left:8px; + } + #team4{ + position:absolute; + top:187px; + left:8px; + } + #team5{ + position:absolute; + top:244px; + left:8px; + } + #team6{ + position:absolute; + top:303px; + left:8px; + } + #team7{ + position:absolute; + top:363px; + left:8px; + } + #team8{ + position:absolute; + top:422px; + left:8px; + } + #team9{ + position:absolute; + top:68px; + left:159px; + } + #team10{ + position:absolute; + top:127px; + left:159px; + } + #team11{ + position:absolute; + top:310px; + left:159px; + } + #team12{ + position:absolute; + top:368px; + left:159px; + } + #team13{ + position:absolute; + top:187px; + left:310px; + } + #team14{ + position:absolute; + top:246px; + left:310px; + } + #team15{ + position:absolute; + top:363px; + left:310px; + } + #team16{ + position:absolute; + top:422px; + left:310px; + } + .strike_through span{ + text-decoration: line-through; + } + .winner_bold{ + font-weight:bold; + color:#000; + } + .field_score img{ + float:left; + } + .livenow_match{ + background-color:#bcf0d5; + border-left:1px solid #0c8546; + border-right:1px solid #0c8546; + color:#007f3d; + } + .finished_match{ + background-color:#c42424; + border-left:1px solid #c93d3d; + border-right:1px solid #c93d3d; + color:#c42424; + } + .livenow_match #result{ + color:#007f3d; + } + .finished_match #result{ + color:#c42424; + } + .place_final{ + width:120px; + height:17px; + font-size:14px; + color:#FFF; + padding-left: 27px; + padding-top:2px; + + } + #place_position1{ + position:absolute; + top:158px; + left:310px; + } + #place_position3{ + position:absolute; + top:334px; + left:310px; + } + #winner_area_heading{ + font-family:Verdana, Geneva, sans-serif; + background-color:#656565; + width:455px; + height:19px; + margin-left:2px; + margin-top:7px; + color:#FFF; + text-transform:uppercase; + font-size:14px; + text-align:center; + padding-top:3px; + } + #winner_area_positions{ + font-family:Verdana, Geneva, sans-serif; + background-color:#FFF; + width:453px; + padding-bottom: 2px; + margin-left:2px; + border-left:1px solid #e5e5e5; + border-right:1px solid #e5e5e5; + position:relative; + margin-bottom: 5px; + } + #cup{ + background:url(cup.png) top left no-repeat; + width:30px; + height:38px; + position:absolute; + top:5px; + left:409px; + } + #view_all_results{ + background:url(btn_view_results.png) top left no-repeat; + width:170px; + height:22px; + position:absolute; + top:63px; + left:275px; + color:#FFF; + font-family:Verdana, Geneva, sans-serif; + font-size:14px; + text-align:center; + padding-top:3px; + font-weight:bold; + cursor:pointer; + } + #winner, #winner_name{ + font-family:Verdana, Geneva, sans-serif; + font-size:20px; + color:#656565; + padding-left: 7px; + } + #first_position img{ + margin-top: 3px; + } + #second_position, #third_position{ + width:300px; + } + #second_position span, #third_position span{ + font-family:Verdana, Geneva, sans-serif; + font-size:14px; + color:#656565; + padding-left: 7px; + } + #second_position img, #third_position img{ + margin-left: 9px; + } + + #mid_page_round{ + background: #dadedf; + overflow: hidden; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; + border-radius: 7px; + behavior: url(components/com_sportsmanager/views/sportsmanager/border-radius.htc); + z-index: 0; + } + #last_row span{ + cursor: pointer; + font-size: 14px; + color: #7e8283; + } + #last_row span#curr{ + font-weight: bold; + font-size: 14px; + } + #last_row span#nextpage{ + padding-right: 19px; + background: url(next.jpg) center right no-repeat; + font-size: 14px; + font-weight: bold; + } + #last_row span#prevpage{ + padding-left: 19px; + background: url(prev.jpg) center left no-repeat; + font-size: 14px; + font-weight: bold; + } + #fedlogo{ + width: 139px; + height: 69px; + position: absolute; + top: 195px; + left: 159px; + } + #sponsorz{ + background: #C9CFD0; + height: 45px; + width: 450px; + position: absolute; + left: 10px; + top: 7px; + z-index:10; + cursor: pointer; + } + #sponsorz img{ + width: 100%; + height: auto; + } + #left_menu ul li{ + z-index:9996; + } + #left_menu ul li a{ + z-index:9997; + } + #left_menu ul li a span{ + z-index:9998; + } + + @media only screen and (max-width:1200px){ + + #tbl th,#tbl tr td { + font-size: 12px; + } + } + + @media only screen and (max-width:1030px){ + + #sponsorz{ + width: 390px; + height: 39px; + } + } + This function is responsible for display of the left table matches + static function veranstaltungenTickerPrintable($matchez): void + { + $bilder_pfad = Uri::root(TRUE) . '/components/com_sportsmanager/images/'; + + echo '
- - - - - - ';?> - +
--|--:
+ + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - - ?> - - - - - - - + } + } else { ?> + - - - - - - - -
'.JText::_('COM_SPORTSMANAGER_DATE').''.JText::_('COM_SPORTSMANAGER_ROUND').''.JText::_('COM_SPORTSMANAGER_TEAM_HOME').''.JText::_('COM_SPORTSMANAGER_RESULT').''.JText::_('COM_SPORTSMANAGER_TEAM_VISITOR').'
Hannoverkicker Hannoverclass="finished_winner">
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
4:16
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
10:5
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
55:55
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
55:55
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
55:55
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
55:55
- -
-
Hannoverkicker Hannover
15 July, 11:00 ViertelHannoverkicker Hannover -
- -
55:55
- -
-
Hannoverkicker Hannover

class="finished_winner"> -
- - -
--|--:
- - -
-
class="finished_winner">

1){if($currentpage>1){echo 'Zurück  ';}for($jj=1;$jj<=$allpages;$jj++){if($jj>1)echo '  ';if($jj==$currentpage){$sup='id="curr"';}else{$sup='';}echo ''.$jj.'';}if($currentpage<$allpages){echo '  Weiter';}}?>
- This function is responsible for display of the groups qualification results - static function veranstaltungenTickerPrintgtable($teamz, $group) { - $punkte_anzeigen = false; - if (isset($teamz[0]) && isset($teamz[0]['score'])) - $punkte_anzeigen = true; - $bilder_pfad = JURI::root(TRUE).'/components/com_sportsmanager/images/'; - if(!empty($teamz)){ - echo ' - - - - - - '; - $teamcount=0; - foreach($teamz as $team){ - $teamcount++; - if(($teamcount%2)==0){$class2='even';}else{$class2='odd';} - ?> - - - - - - - - -
'.JText::_('COM_SPORTSMANAGER_PLACE').''.$group.''. ($punkte_anzeigen ? JText::_('COM_SPORTSMANAGER_POINTS') : ' ') . '
- - + +

+ + -

TABELLEN

-
-
    -
  • - Gruppen -
  • "; - if(($printright==1)||($printright==3)){ - echo "
  • - K.O.-Phase -
  • "; - } - if($printright==3){ - echo "
  • - Endtabelle -
  • "; - } - echo "
"; - */ - } - // printeliminations function start -> This function is responsible for display of the right elimination chart - static function veranstaltungenTickerPrinteliminations($matchez){ - $bilder_pfad = JURI::root(TRUE).'/components/com_sportsmanager/images/'; - $federationLogoFile="dtfvb_logo.png"; - if(!empty($matchez)){ - /* - echo ' - - -
'; - */ - - echo ' - - + } + ?> + + + + This function is responsible for display of the groups qualification results + static function veranstaltungenTickerPrintgtable($teamz, $group): void + { + $punkte_anzeigen = false; + if (isset($teamz[0]['score'])) + $punkte_anzeigen = true; + $bilder_pfad = Uri::root(TRUE) . '/components/com_sportsmanager/images/'; + if (!empty($teamz)) { + echo ' + + + + + + '; + foreach ($teamz as $team) { + ?> + + + + + + + + + + + This function is responsible for display of the right elimination chart + static function veranstaltungenTickerPrinteliminations($matchez): void + { + $bilder_pfad = Uri::root(TRUE) . '/components/com_sportsmanager/images/'; + if (!empty($matchez)) { + + echo ' + +
'; - $matchcount=0; - foreach($matchez as $match){ - $matchcount++; - if(($matchcount%2)==0){$class2='even';}else{$class2='odd';} - ?> -
- - - -
-
- - - -
-
- - -
--|--:
- - -
- - -
-
-
- - This function is responsible for display of the right top3 end results after the elimination chart - static function veranstaltungenTickerPrintop3($teamz){ - $bilder_pfad = JURI::root(TRUE).'/components/com_sportsmanager/images/'; - if(!empty($teamz)){ - ?> -
-
-
- -
-
-
1.
-
2.
-
3.
- -
-

- -
-
- - +
+ + + +
+
+ + + +
+
+ + +
--|--:
+ + +
+ + +
+
+ + This function is responsible for display of the right top3 end results after the elimination chart + static function veranstaltungenTickerPrintop3($teamz): void + { + if (!empty($teamz)) { + ?> +
+
+
+
+
+
1. +
+
+ 2. +
+
+ 3. +
+
+
+ + - remove_database(); + function uninstall($adapter): bool + { + $this->remove_database(); - if (!JFolder::delete(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager')) + if (!Folder::delete(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager')) echo '

Warning: Image directory could not be deleted!

'; echo '

Sports Manager was successfully removed from Joomla.

'; - //echo '

' . JText::_('COM_SPORTSMANAGER_UNINSTALL_TEXT') . '

'; + return true; } - function update($parent) - { - // echo '

' . JText::sprintf('COM_SPORTSMANAGER_UPDATE_TEXT', $parent->get('manifest')->version) . '

'; + function update($adapter): bool + { + // not used + return true; } - function preflight($type, $parent) + function preflight($type, $adapter): bool { - // echo '

' . JText::_('COM_SPORTSMANAGER_PREFLIGHT_' . $type . '_TEXT') . '

'; + // not used + return true; } - function postflight($type, $parent) - { + function postflight($type, $adapter): bool + { require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; if (!$this->database_exists()) { $this->create_database(); - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaften', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaften', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaftsmitglieder', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaftsmitglieder', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'vereine', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'vereine', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'import', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'import', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'export', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'export', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'termine', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'termine', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'terminsymbole', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'terminsymbole', 0777)) echo '

Error: Image directory cannot be created!

'; - if (!JFolder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaftswettbewerbe', 0777)) + if (!Folder::create(JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'mannschaftswettbewerbe', 0777)) echo '

Error: Image directory cannot be created!

'; $pfad = JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'termine'.DIRECTORY_SEPARATOR.'.htaccess'; @@ -75,29 +82,44 @@ class com_sportsmanagerInstallerScript if (file_put_contents($pfad, $inhalt) === FALSE) echo '

Fehler: Anlegen der .htaccess-Datei im Termineverzeichnis ist gescheitert!

'; - if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-m.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'m.png', 180, 240, 1)) - die('Das Bild konnte nicht an die Zielposition kopiert werden.'); + if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-m.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'m.png', 180, 240, 1)) { + Log::add('Image /components/com_sportsmanager/images/spieler-m.png could not be copied to /images/sportsmanager/spieler/m.png', Log::ERROR); + echo '

Fehler: Bild spieler-m.png konnte nicht nach /images/sportsmanager/spieler/m.png verschoben werden

'; + return false; + } + + if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-w.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'w.png', 180, 240, 1)) { + Log::add('Image /components/com_sportsmanager/images/spieler-w.png could not be copied to /images/sportsmanager/spieler/w.png', Log::ERROR); + echo '

Fehler: Bild spieler-w.png konnte nicht nach /images/sportsmanager/spieler/w.png verschoben werden

'; + return false; + } - if (!bildKopierenAngepasst(JPATH_ROOT.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_sportsmanager'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'spieler-w.png', JPATH_ROOT.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'sportsmanager'.DIRECTORY_SEPARATOR.'spieler'.DIRECTORY_SEPARATOR.'w.png', 180, 240, 1)) - die('Das Bild konnte nicht an die Zielposition kopiert werden.'); } - $parent->getParent()->setRedirectURL('index.php?option=com_sportsmanager'); - // echo '

' . JText::_('COM_SPORTSMANAGER_POSTFLIGHT_' . $type . '_TEXT') . '

'; + $adapter->getParent()->setRedirectURL('index.php?option=com_sportsmanager'); + return true; } - private function database_exists() { - $db =& JFactory::getDBO(); + private function database_exists(): bool + { + $db = Factory::getContainer()->get(DatabaseInterface::class); $query = "SHOW TABLE STATUS WHERE name = '" . $db->getPrefix() . "sportsmanager_einstellungen' || name = '" . $db->getPrefix() . "tsleague_basis' || name = '" . $db->getPrefix() . "tsleague_einstellungen'"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } - $rows = $db->loadObjectList(); + try { + $db->execute(); + $rows = $db->loadObjectList(); + }catch (RuntimeException $e) { + Log::add('Database error: ' . $e->getMessage(), Log::ERROR); + echo 'An error occurred while querying the database'; + return false; + } return count($rows) > 0; } - private function create_database() { - $db =& JFactory::getDBO(); + private function create_database(): void + { + $db = Factory::getContainer()->get(DatabaseInterface::class); $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_saison` (" . "\n `saison_id` int(11) NOT NULL AUTO_INCREMENT," @@ -105,7 +127,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`saison_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_begegnung` (" . "\n `begegnung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -126,7 +148,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `spielort_id` (`spielort_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_begegnung_historie` (" . "\n `begegnung_historie_id` int(11) NOT NULL AUTO_INCREMENT," @@ -145,7 +167,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `verantwortlich_team_id` (`verantwortlich_team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_individualwettbewerb` (" . "\n `berechtigt_fuer_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," @@ -156,7 +178,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_individualwettbewerb_id` (`berechtigt_individualwettbewerb_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_team` (" . "\n `berechtigt_fuer_team_id` int(11) NOT NULL AUTO_INCREMENT," @@ -167,7 +189,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_team_id` (`berechtigt_team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_turnier` (" . "\n `berechtigt_fuer_turnier_id` int(11) NOT NULL AUTO_INCREMENT," @@ -178,7 +200,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_turnier_id` (`berechtigt_turnier_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstalter` (" . "\n `berechtigt_fuer_veranstalter_id` int(11) NOT NULL AUTO_INCREMENT," @@ -189,7 +211,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_veranstalter_id` (`berechtigt_veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_veranstaltung` (" . "\n `berechtigt_fuer_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -200,7 +222,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_veranstaltung_id` (`berechtigt_veranstaltung_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechtigt_fuer_verein` (" . "\n `berechtigt_fuer_verein_id` int(11) NOT NULL AUTO_INCREMENT," @@ -211,7 +233,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `berechtigt_verein_id` (`berechtigt_verein_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstellungen` (" . "\n `name` char(64) NOT NULL DEFAULT ''," @@ -219,7 +241,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`name`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_berechnung` (" . "\n `berechnung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -233,7 +255,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `id` (`typ`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung` (" . "\n `einstufung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -246,7 +268,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `prioritaet` (`prioritaet`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_einstufung_rangliste` (" . "\n `einstufung_rangliste_id` int(11) NOT NULL AUTO_INCREMENT," @@ -259,7 +281,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `rangliste_id` (`rangliste_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_elo_cache` (" . "\n `cache_datum` date NOT NULL," @@ -271,7 +293,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`spieler_id`, `cache_datum`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb` (" . "\n `individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," @@ -290,7 +312,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_spiel` (" . "\n `individualwettbewerb_spiel_id` int(11) NOT NULL AUTO_INCREMENT," @@ -311,7 +333,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `gast_spieler_2_id` (`gast_spieler_2_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_platzierung` (" . "\n `individualwettbewerb_platzierung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -323,7 +345,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `platz` (`platz`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_individualwettbewerb_ausgangsplatzierung` (" . "\n `individualwettbewerb_ausgangsplatzierung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -335,7 +357,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `platz` (`platz`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_kategorie` (" . "\n `kategorie_id` int(11) NOT NULL AUTO_INCREMENT," @@ -345,7 +367,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`kategorie_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_mitglied_von_team` (" . "\n `mitglied_von_team_id` int(11) NOT NULL AUTO_INCREMENT," @@ -359,7 +381,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `team_id` (`team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_mitglied_von_verein` (" . "\n `mitglied_von_verein_id` int(11) NOT NULL AUTO_INCREMENT," @@ -372,7 +394,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `verein_id` (`verein_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_moderator` (" . "\n `moderator_id` int(11) NOT NULL AUTO_INCREMENT," @@ -381,7 +403,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `moderator_user_id` (`moderator_user_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_moderator_zugriff` (" . "\n `moderator_zugriff_id` int(11) NOT NULL AUTO_INCREMENT," @@ -393,7 +415,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `zugriff` (`zugriff`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste` (" . "\n `rangliste_id` int(11) NOT NULL AUTO_INCREMENT," @@ -416,7 +438,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `system_id` (`system_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_punkte` (" . "\n `rangliste_id` int(11) NOT NULL DEFAULT '0'," @@ -428,7 +450,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `rangliste_platz` (`rangliste_id`, `platz`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_turnierdisziplin_punkte` (" . "\n `rangliste_id` int(11) NOT NULL," @@ -439,7 +461,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`rangliste_id`, `spieler_id`, `turnierdisziplin_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_system` (" . "\n `rangliste_system_id` int(11) NOT NULL AUTO_INCREMENT," @@ -449,7 +471,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`rangliste_system_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_system_punkte` (" . "\n `rangliste_system_punkte_id` int(11) NOT NULL AUTO_INCREMENT," @@ -463,7 +485,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `system_id` (`system_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rangliste_turnierdisziplin` (" . "\n `rangliste_turnierdisziplin_id` int(11) NOT NULL AUTO_INCREMENT," @@ -478,7 +500,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `system_id` (`system_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste` (" . "\n `bestenliste_id` int(11) NOT NULL AUTO_INCREMENT," @@ -495,7 +517,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `saison_id` (`saison_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_punkte` (" . "\n `bestenliste_punkte_id` int(11) NOT NULL AUTO_INCREMENT," @@ -518,7 +540,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `spieler_2_id` (`spieler_2_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_veranstaltung` (" . "\n `bestenliste_veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -529,7 +551,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstaltung_id` (`veranstaltung_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_bestenliste_individualwettbewerb` (" . "\n `bestenliste_individualwettbewerb_id` int(11) NOT NULL AUTO_INCREMENT," @@ -540,7 +562,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `individualwettbewerb_id` (`individualwettbewerb_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung` (" . "\n `rechnung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -557,7 +579,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_rechnung_spieler` (" . "\n `rechnung_spieler_id` int(11) NOT NULL AUTO_INCREMENT," @@ -568,7 +590,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `spieler_id` (`spieler_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_spieler` (" . "\n `spieler_id` int(11) NOT NULL AUTO_INCREMENT," @@ -607,7 +629,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `spielernr` (`spielernr`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_spieler_import` (" . "\n `spieler_import_id` int(11) NOT NULL AUTO_INCREMENT," @@ -637,7 +659,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `session_id` (`session_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_spielort` (" . "\n `spielort_id` int(11) NOT NULL AUTO_INCREMENT," @@ -652,7 +674,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`spielort_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_team` (" . "\n `team_id` int(11) NOT NULL AUTO_INCREMENT," @@ -691,7 +713,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstaltung_id` (`veranstaltung_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_teamansprechpartner` (" . "\n `kontaktperson_id` int(11) NOT NULL AUTO_INCREMENT," @@ -712,7 +734,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `team_id` (`team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_teamspiel` (" . "\n `teamspiel_id` int(11) NOT NULL AUTO_INCREMENT," @@ -735,7 +757,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `gast_spieler_2_id` (`gast_spieler_2_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_teamspiel_modus` (" . "\n `teamspiel_modus_id` int(11) NOT NULL AUTO_INCREMENT," @@ -753,7 +775,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`teamspiel_modus_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_teamwechsel` (" . "\n `teamwechsel_id` int(11) NOT NULL AUTO_INCREMENT," @@ -764,7 +786,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`teamwechsel_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin` (" . "\n `termin_id` int(11) NOT NULL AUTO_INCREMENT," @@ -784,7 +806,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `termin_bezug_id` (`termin_bezug_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbolanzeige` (" . "\n `termin_symbolanzeige_id` int(11) NOT NULL AUTO_INCREMENT," @@ -795,7 +817,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `termin_id` (`termin_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_symbol` (" . "\n `termin_symbol_id` int(11) NOT NULL AUTO_INCREMENT," @@ -805,7 +827,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `status` (`status`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_aktion` (" . "\n `termin_aktion_id` int(11) NOT NULL AUTO_INCREMENT," @@ -825,7 +847,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `status` (`status`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_zusatz` (" . "\n `termin_zusatz_id` int(11) NOT NULL AUTO_INCREMENT," @@ -836,7 +858,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `ix_length_zusatz` (`zusatz`(16))" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnungszusatz` (" . "\n `termin_bezeichnungszusatz_id` int(11) NOT NULL AUTO_INCREMENT," @@ -845,7 +867,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`termin_bezeichnungszusatz_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bezeichnung` (" . "\n `termin_bezeichnung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -853,7 +875,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`termin_bezeichnung_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_bundesland` (" . "\n `termin_bundesland_id` int(11) NOT NULL AUTO_INCREMENT," @@ -861,7 +883,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`termin_bundesland_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_termin_land` (" . "\n `termin_land_id` int(11) NOT NULL AUTO_INCREMENT," @@ -869,7 +891,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`termin_land_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnier` (" . "\n `turnier_id` int(11) NOT NULL AUTO_INCREMENT," @@ -885,7 +907,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnierdisziplin` (" . "\n `turnierdisziplin_id` int(11) NOT NULL AUTO_INCREMENT," @@ -905,7 +927,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `voranmeldungen_rangliste_id` (`voranmeldungen_rangliste_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turniermeldung` (" . "\n `turniermeldung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -919,7 +941,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `meldungsgruppe_id` (`meldungsgruppe_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turniermeldung_spieler` (" . "\n `turniermeldung_spieler_id` int(11) NOT NULL AUTO_INCREMENT," @@ -930,7 +952,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `spieler_id` (`spieler_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turniermeldung_spieler_name` (" . "\n `turniermeldung_spieler_name_id` int(11) NOT NULL AUTO_INCREMENT," @@ -942,7 +964,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `turniermeldung_spieler_id` (`turniermeldung_spieler_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnierspiel` (" . "\n `turnierspiel_id` int(11) NOT NULL AUTO_INCREMENT," @@ -960,7 +982,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `gast_meldung_id` (`gast_meldung_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_turnier_rundenstufe` (" . "\n `turnier_rundenstufe_id` int(11) NOT NULL AUTO_INCREMENT," @@ -978,7 +1000,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `rundenstufe` (`rundenstufe`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_unbestaetigtes_ergebnis` (" . "\n `unbestaetigtes_ergebnis_id` int(11) NOT NULL AUTO_INCREMENT," @@ -992,7 +1014,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `vorschlagendes_team_id` (`vorschlagendes_team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_veranstalter` (" . "\n `veranstalter_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1002,7 +1024,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_veranstaltung` (" . "\n `veranstaltung_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1028,7 +1050,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `verschieberegel_id` (`verschieberegel_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verein` (" . "\n `verein_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1043,7 +1065,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_vereinsansprechpartner` (" . "\n `vereinsansprechpartner_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1064,7 +1086,7 @@ class com_sportsmanagerInstallerScript . "\n KEY `verein_id` (`verein_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verschieberegel` (" . "\n `verschieberegel_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1078,7 +1100,7 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`verschieberegel_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_verteiler` (" . "\n `verteiler_id` int(11) NOT NULL AUTO_INCREMENT," @@ -1087,519 +1109,519 @@ class com_sportsmanagerInstallerScript . "\n PRIMARY KEY (`verteiler_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '102';"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'basis_spielernr', wert = '';"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'spielerliste_elo', wert = '0';"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'ansprechpartner_ausblenden', wert = '0';"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'ansprechpartner_spielerdaten', wert = '1';"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen)" . "\n VALUES ('Beliebig', '0', '0', '0', '1', '3', '0');"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_rangliste_system" . "\n SET systembezeichnung = 'Klostermann/Wahle (1 Punkt für letzten Platz)'," . "\n status = '1'," - // . "\n funktion = 'MAX(ROUND(IF(m >= 0, m, 1 / -m) * ROUND((((POW(n * 10, 0.7) - 1) * (-LN(p / n) * (1 - (p / n)))) / (-LN(1 / n) * (1 - (1 / n)))) + 1)), 1)'"; . "\n funktion = 'VERTEILUNG(POW(n * 10, 0.7), p, n, m)'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_rangliste_system" . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 129)'," . "\n status = '1'," . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-20.45) * LN(p))))), 1)'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_rangliste_system" . "\n SET systembezeichnung = 'Klostermann (1 Punkt ab Platz 50)'," . "\n status = '1'," . "\n funktion = 'MAX(ROUND(m * ROUND((((n / 100) * 0.5) + 0.7) * (100 + ((-25.3) * LN(p))))), 1)'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Challenger'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Meeting'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'ITSF Master'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'ITSF Pro'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'ITSF WCS'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = '2. Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Frauen-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = '2. Frauen-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Junioren-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = '2. Junioren-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Senioren-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = '2. Senioren-Bundesliga'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Sonstiges'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnung" . "\n SET bezeichnung = 'Deutsche Meisterschaft'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'OD'," . "\n titel = 'Offenes Doppel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'OE'," . "\n titel = 'Offenes Einzel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'HD'," . "\n titel = 'Herren Doppel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'HE'," . "\n titel = 'Herren Einzel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'DD'," . "\n titel = 'Damen Doppel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'DE'," . "\n titel = 'Damen Einzel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'JD'," . "\n titel = 'Junioren Doppel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'JE'," . "\n titel = 'Junioren Einzel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'SD'," . "\n titel = 'Senioren Doppel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bezeichnungszusatz" . "\n SET bezeichnungszusatz = 'SE'," . "\n titel = 'Senioren Einzel'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Baden-Württemberg'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Bayern'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Berlin'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Bremen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Hamburg'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Hessen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Niedersachsen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Nordrhein-Westfalen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Rheinland-Pfalz'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Saarland'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Sachsen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Sachsen-Anhalt'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Schleswig-Holstein'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Schweiz'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "INSERT #__sportsmanager_termin_bundesland" . "\n SET bundesland = 'Thüringen'"; $db->setQuery($query); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } } - private function remove_database() { - $db =& JFactory::getDBO(); + private function remove_database(): void + { + $db = Factory::getContainer()->get(DatabaseInterface::class); $query = "DROP TABLE IF EXISTS `#__sportsmanager_saison`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_begegnung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_begegnung_historie`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_individualwettbewerb`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_team`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_turnier`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_verein`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_veranstalter`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechtigt_fuer_veranstaltung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_bestenliste`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_bestenliste_punkte`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_bestenliste_veranstaltung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_bestenliste_individualwettbewerb`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_berechnung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_einstellungen`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_einstufung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_einstufung_rangliste`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_elo_cache`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_individualwettbewerb`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_individualwettbewerb_spiel`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_kategorie`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_mitglied_von_team`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_mitglied_von_verein`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_moderator`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_moderator_zugriff`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rangliste`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_symbol`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_symbolanzeige`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_aktion`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_zusatz`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_bezeichnungszusatz`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_bezeichnung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_bundesland`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_termin_land`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rangliste_punkte`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rangliste_system`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rangliste_system_punkte`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rangliste_turnierdisziplin`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rechnung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_rechnung_spieler`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_spieler`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_spieler_import`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_spielort`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_team`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_teamansprechpartner`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_teamspiel`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_teamspiel_modus`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_teamwechsel`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turnier`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turnierdisziplin`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turniermeldung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turniermeldung_spieler`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turniermeldung_spieler_name`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turnierspiel`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_turnier_rundenstufe`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_unbestaetigtes_ergebnis`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_veranstalter`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_veranstaltung`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_verein`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_vereinsansprechpartner`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_verschieberegel`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } $query = "DROP TABLE IF EXISTS `#__sportsmanager_verteiler`;"; $db->setQuery( $query ); - if (!$result = $db->execute()) { die($db->stderr(true)); } + if (!$db->execute()) { die($db->stderr(true)); } } -} +}; From 067e67e08b48bf0c3cde365a8b69def3571a7bae Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 14:32:53 +0100 Subject: [PATCH 5/9] chore: outsource more image methods into own file --- .../com_sportsmanager/util/image.php | 431 +++++++++++++++++- 1 file changed, 428 insertions(+), 3 deletions(-) diff --git a/src/structure/components/com_sportsmanager/util/image.php b/src/structure/components/com_sportsmanager/util/image.php index b5e056a..f6a0fd4 100644 --- a/src/structure/components/com_sportsmanager/util/image.php +++ b/src/structure/components/com_sportsmanager/util/image.php @@ -1,6 +1,12 @@ get(SiteApplication::class)->input; + + if (empty($id)) + $id = $jInput->get('id', 0, 'INT'); + $fixed_width = $jInput->get('w', 0, 'INT'); + $fixed_height = $jInput->get('h', 0, 'INT'); + $max_width = $jInput->get('mw', 0, 'INT'); + $max_height = $jInput->get('mh', 0, 'INT'); + $no_cache = $jInput->get('nc', 0, 'INT'); + + $pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ . DIRECTORY_SEPARATOR . $id . '.'; + if (File::exists($pfad . 'png')) + $ext = "png"; + else if (File::exists($pfad . 'jpg')) + $ext = "jpg"; + else { + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header('HTTP/1.1 404 Not Found'); + die(); + } + + $filemtime = filemtime($pfad . $ext); + $last_modified = gmdate('D, d M Y H:i:s', $filemtime) . " GMT"; + $etag = md5($id . '.' . $ext . $filemtime); + + // Prüfung, ob die im Browsercache vorhandene Datei der hiesigen entspricht + if ($_SERVER['HTTP_IF_NONE_MATCH'] == '"' . $etag . '"' || $last_modified == $_SERVER['HTTP_IF_MODIFIED_SINCE']) { + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header('HTTP/1.1 304 Not Modified'); + if ($no_cache) + header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft + else + header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird. + header("Last-Modified: " . $last_modified); + header('ETag: "' . $etag . '"'); + die(); + } + + $image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext); + if ($image === false) { + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header('HTTP/1.1 404 Not Found'); + die(); + } + + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header("Content-type: image/" . ($ext == "png" ? "png" : "jpeg")); + if ($no_cache) + header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft + else + header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird. + header("Last-Modified: " . $last_modified); + header('ETag: "' . $etag . '"'); + + $width = imagesx($image); + $height = imagesy($image); + + if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) { + if ($ext == "png") { + imagesavealpha($image, true); + imagepng($image); + } else + imagejpeg($image); + die(); + } + + $new_width = $width; + $new_height = $height; + + if ($max_height > 0 && $new_height > $max_height) { + $new_width = max(round($new_width * $max_height / $new_height), 1); + $new_height = $max_height; + } + if ($max_width > 0 && $new_width > $max_width) { + $new_height = max(round($new_height * $max_width / $new_width), 1); + $new_width = $max_width; + } + + if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_width += 1; + if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_height += 1; + + $image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height)); + $color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64); + imagefill($image_resized, 0, 0, $color); + imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height); + if ($ext == "png") { + imagesavealpha($image_resized, true); + imagepng($image_resized); + } else + imagejpeg($image_resized); + die(); +} + +function bildLoeschen($typ, $id): void +{ + global $sportsmanager_joomla_path; + $typ_exploded = explode("/", $typ); + $typ = $typ_exploded[0]; + $typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : ""; + $bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ; + $pfad = $bilder_pfad . '/' . $typ_prefix . $id . "."; + if (!is_file($pfad . 'png') && !is_file($pfad . 'jpg')) + return; + $alte_bilder = Folder::files($bilder_pfad, '^' . $typ_prefix . $id . '\.|^' . $typ_prefix . 'I' . $id . 'T'); + foreach ($alte_bilder as $fn) + File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $fn); +} + +function bildIdentisch($typ1, $id1, $typ2, $id2): bool +{ + global $sportsmanager_joomla_path; + $typ1_exploded = explode("/", $typ1); + $typ1 = $typ1_exploded[0]; + $typ1_prefix = count($typ1_exploded) > 1 ? $typ1_exploded[1] : ""; + $bilder_pfad1 = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ1; + $pfad1 = $bilder_pfad1 . '/' . $typ1_prefix . $id1 . "."; + if (is_file($pfad1 . "png")) + $ext = "png"; + else if (is_file($pfad1 . "jpg")) + $ext = "jpg"; + else + $ext = ""; + $pfad1 .= $ext; + + $typ2_exploded = explode("/", $typ2); + $typ2 = $typ2_exploded[0]; + $typ2_prefix = count($typ2_exploded) > 1 ? $typ2_exploded[1] : ""; + $bilder_pfad2 = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ2; + $pfad2 = $bilder_pfad2 . '/' . $typ2_prefix . $id2 . "." . $ext; + + return files_identical($pfad1, $pfad2); +} + +function teamImage($teamId, $vereinId, $width = 240, $height = 240): ?string +{ + $url = bildURL("mannschaften", $teamId, 0, 0, $width, $height); + + if ($url == null) { + $url = bildURL("vereine", $vereinId, 0, 0, $width, $height); + } + + return $url; +} + +function playerImage($playerId, $gender, $width = 180, $height = 240): ?string +{ + $url = bildURL("spieler", $playerId, $width, $height, 0,0, $gender == 'M' ? 'm' : 'w'); + if ($url == null) { + $url = bildURL("mannschaftsmitglieder", $playerId, $width, $height); + } + + return $url; +} + +#[NoReturn] function spielerbild(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + $spielernr = $db->escape(trim($jInput->get('spielernr', '', 'RAW'))); + $lizenznr = $db->escape(trim($jInput->get('lizenznr', '', 'RAW'))); + + if (empty($spielernr) && empty($lizenznr)) { + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header('HTTP/1.1 404 Not Found'); + die(); + } + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE NOT ISNULL(aktueller_verein_id) AND NOT bild_ausblenden" . (!empty($spielernr) ? " AND spielernr = '$spielernr'" : " AND lizenznr = '$lizenznr'") + . "\n ORDER BY spieler_id DESC"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $rows = $db->loadObjectList(); + if (count($rows) < 1) { + ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind + header('HTTP/1.1 404 Not Found'); + die(); + } + + $id = $rows[0]->spieler_id; + bildAnpassen("spieler", $id); +} + +function bildURL($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $alternativ = ""): ?string +{ + global $sportsmanager_joomla_path; + global $sportsmanager_joomla_url; + + $typ_exploded = explode("/", $typ); + $typ = $typ_exploded[0]; + $typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : ""; + + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else if (!empty($alternativ)) { + $id = $alternativ; + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else + return null; + } + else + return null; + + $time = filemtime($pfad . $ext); + + if ($fixed_width > 0 && $fixed_height > 0) { + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $fixed_width . "H" . $fixed_height . "." . $ext; + if (is_file($pfad_angepasst)) { + return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst); + } + } + + $size = getimagesize($pfad . $ext); + $width = $size[0]; + $height = $size[1]; + + $max_width = $fixed_width > 0 ? $fixed_width : $max_width; + $max_height = $fixed_height > 0 ? $fixed_height : $max_height; + + if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) { + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $width . "H" . $height . "." . $ext; + if (!is_file($pfad_angepasst)) { + if (!copy($pfad . $ext, $pfad_angepasst)) + return null; + } + + return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst); + } + + $new_width = $width; + $new_height = $height; + + if ($max_height > 0 && $new_height > $max_height) { + $new_width = max(round($new_width * $max_height / $new_height), 1); + $new_height = $max_height; + } + if ($max_width > 0 && $new_width > $max_width) { + $new_height = max(round($new_height * $max_width / $new_width), 1); + $new_width = $max_width; + } + + if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_width += 1; + if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_height += 1; + + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . max($fixed_width, $new_width) . "H" . max($fixed_height, $new_height) . "." . $ext; + + if (!is_file($pfad_angepasst)) { + $image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext); + if ($image === false) + return null; + + $image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height)); + $color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64); + imagefill($image_resized, 0, 0, $color); + imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height); + if ($ext == "png") { + imagesavealpha($image_resized, true); + imagepng($image_resized, $pfad_angepasst); + } + else + imagejpeg($image_resized, $pfad_angepasst); + } + + return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst); +} + +/* + * #resize=250 +#resize=250,250,blue +#resize=250,250,blue +#resize=250,250&sizes=60%,80%,200% +#resize=250,250,cover&sizes=60%,80%,200% +#resize=250,250,fill&sizes=60%,80%,200% +#crop=250,250,center,top +#crop=250,250 +#crop=250,250,center,bottom +#crop=250,250,left +#crop=250,250,right + */ +function yoothemeBild($typ, $id, $alternativ, $resize = '', $zusatz = ""): ?string +{ + global $sportsmanager_joomla_path; + + $typ_exploded = explode("/", $typ); + $typ = $typ_exploded[0]; + $typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : ""; + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else if (!empty($alternativ)) { + $id = $alternativ; + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else + return null; + } + else + return null; + + $bildpfad = "images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "." . $ext; + + return ''; +} + +function bildHTML($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $zusatz = "", $alternativ = ""): ?string +{ + global $sportsmanager_joomla_path; + global $sportsmanager_joomla_url; + + $typ_exploded = explode("/", $typ); + $typ = $typ_exploded[0]; + $typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : ""; + + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else if (!empty($alternativ)) { + $id = $alternativ; + $pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "."; + if (is_file($pfad . "png")) + $ext = "png"; + else if (is_file($pfad . "jpg")) + $ext = "jpg"; + else + return null; + } + else + return null; + + $time = filemtime($pfad . $ext); + + if ($fixed_width > 0 && $fixed_height > 0) { + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $fixed_width . "H" . $fixed_height . "." . $ext; + if (is_file($pfad_angepasst)) { + return ''; + } + } + + $size = getimagesize($pfad . $ext); + $width = $size[0]; + $height = $size[1]; + + $max_width = $fixed_width > 0 ? $fixed_width : $max_width; + $max_height = $fixed_height > 0 ? $fixed_height : $max_height; + + if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) { + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $width . "H" . $height . "." . $ext; + if (!is_file($pfad_angepasst)) { + if (!copy($pfad . $ext, $pfad_angepasst)) + return null; + } + + return ''; + } + + $new_width = $width; + $new_height = $height; + + if ($max_height > 0 && $new_height > $max_height) { + $new_width = max(round($new_width * $max_height / $new_height), 1); + $new_height = $max_height; + } + if ($max_width > 0 && $new_width > $max_width) { + $new_height = max(round($new_height * $max_width / $new_width), 1); + $new_width = $max_width; + } + + if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_width += 1; + if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied + $new_height += 1; + + $pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . max($fixed_width, $new_width) . "H" . max($fixed_height, $new_height) . "." . $ext; + + if (!is_file($pfad_angepasst)) { + $image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext); + if ($image === false) + return null; + + $image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height)); + $color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64); + imagefill($image_resized, 0, 0, $color); + imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height); + if ($ext == "png") { + imagesavealpha($image_resized, true); + imagepng($image_resized, $pfad_angepasst); + } + else + imagejpeg($image_resized, $pfad_angepasst); + } + + return ''; +} From a589ca83374dc4ff846432863d5cfbb0a3622427 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Fri, 28 Mar 2025 20:55:41 +0100 Subject: [PATCH 6/9] fix: remove duplicate language keys, change some of the language keys --- .../views/sportsmanager/view.html.php | 2 +- .../views/sportsmanager/view_admin.php | 4 +- .../de-DE/de-DE.com_sportsmanager.ini | 67 ++++++++++++++++-- .../en-GB/en-GB.com_sportsmanager.ini | 70 +++++++++++++++++-- 4 files changed, 131 insertions(+), 12 deletions(-) diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index 7bf7bf0..742411f 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -5698,7 +5698,7 @@ if ($statistik["elo_doppel"] > 0) { style="text-align: left"> - + > bezeichnung); ?> @@ -5848,7 +5848,7 @@ class HTML_sportsmanager_admin global $params; ?>
+ class="componentheadingget('pageclass_sfx'); ?>"> :
diff --git a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini index eed0a37..e8d7980 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -74,13 +74,13 @@ COM_SPORTSMANAGER_GAME="Spiel" COM_SPORTSMANAGER_GAMES="Spiele" COM_SPORTSMANAGER_GAMES_SHORTCUT="S" COM_SPORTSMANAGER_ADD_PLAYER_STATISTICS="Spielerstatistik hinzufügen" -COM_SPORTSMANAGER_PLAYER_STATISTICS="Spielerstatistik" +COM_SPORTSMANAGER_PLAYER_STATISTIC="Spielerstatistik" COM_SPORTSMANAGER_COMPETITION="Wettbewerb" COM_SPORTSMANAGER_COMPETITIONS="Wettbewerbe" COM_SPORTSMANAGER_IN_COMPETITIONS="in Wettbewerb" COM_SPORTSMANAGER_COMPETITIONS_SHORTCUT="W" COM_SPORTSMANAGER_DUPLICATE="Duplizieren" -COM_SPORTSMANAGER_CONFIRM_REMOVE_RANKING="Willst du die Spielerstatistik wirklich entfernen?" +COM_SPORTSMANAGER_CONFIRM_REMOVE_PLAYER_STATISTICS="Willst du die Spielerstatistik wirklich entfernen?" COM_SPORTSMANAGER_LIVE_TICKER="Live-Ticker" COM_SPORTSMANAGER_PLACE="Platz" COM_SPORTSMANAGER_TEAM="Mannschaft" @@ -289,7 +289,6 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="Es müssen mindestens %d Termine v COM_SPORTSMANAGER_REJECT_SHIFT="Verschiebung ablehnen" COM_SPORTSMANAGER_TO="bis" COM_SPORTSMANAGER_PLAYER_STATISTICS="Spielerstatistiken" -COM_SPORTSMANAGER_PERFORMANCE_INDEX="Leistungsindex" COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="LI" COM_SPORTSMANAGER_WON="gewonnen" COM_SPORTSMANAGER_LOST="verloren" @@ -827,7 +826,6 @@ COM_SPORTSMANAGER_REMOVE_STATE_REALLY="Willst du das Land wirklich entfernen?" COM_SPORTSMANAGER_DATES_STATE="Termine Land" COM_SPORTSMANAGER_RENAME_APPOINTMENTS_STATE="Termine mit dem bisherigen Land umbenennen" COM_SPORTSMANAGER_FINAL_RANKING="FINAL RANKING" -COM_SPORTSMANAGER_HOME_TEAM2="Heimmanschaft" COM_SPORTSMANAGER_RESULTS2="Resultat" COM_SPORTSMANAGER_NO_GAMES="Keine Spiele" COM_SPORTSMANAGER_END_GAME="Endspiel" @@ -925,3 +923,64 @@ COM_SPORTSMANAGER_RANK="Rang" ; SPIELER BEARBEITEN COM_SPORTSMANAGER_LIZENZ="Lizenz" +COM_SPORTSMANAGER_ARIA_LABEL_MATCHDAY_SELECT="Wähle einen Spieltag" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_DAY="Wähle den Tag des Begegnungsvorschlags" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MONTH="Wähle den Monat des Begegnungsvorschlags" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_YEAR="Wähle das Jahr des Begegnungsvorschlags" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_HOUR="Wähle die Stunde des Begegnungsvorschlags" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MINUTE="Wähle die Minute des Begegnungsvorschlags" +COM_SPORTSMANAGER_ARIA_LABEL_SPECIAL_FILTER="Erweiterter Filter" +COM_SPORTSMANAGER_ARIA_LABEL_PLACE="Ort" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_CLUB="Wähle berechtigten Verein" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_START_MONTH="Monat des Turnierbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_START_YEAR="Jahr des Turnierbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_END_MONTH="Monat des Turnierendes" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_END_YEAR="Jahr des Turnierendes" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_USER="Wähle berechtigten Anwender" +COM_SPORTSMANAGER_ARIA_LABEL_POINTS_GUEST="Punkte Gast" +COM_SPORTSMANAGER_ARIA_LABEL_POINTS_HOME="Punkte Heim" +COM_SPORTSMANAGER_ARIA_LABEL_PLAYER_GUEST="Spieler Gast" +COM_SPORTSMANAGER_ARIA_LABEL_PLAYER_HOME="Spieler Heim" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_MONTH="Wähle den Monat" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_YEAR="Wähle das Jahr" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_HOUR="Wähle eine Stunde" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_MINUTE="Wähle eine Minute" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_GUEST="Spiel Gast" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_HOME="Spiel Heim" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_DOUBLE="Verknüpfung Doppel" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE="Verknüpfung Einzel" +COM_SPORTSMANAGER_ARIA_LABEL_PLACEMENT_MIN="Platzierung Min." +COM_SPORTSMANAGER_ARIA_LABEL_PLACEMENT_MAX="Platzierung Max." +COM_SPORTSMANAGER_ARIA_LABEL_PARTICIPANT_MIN="Teilnehmer Min." +COM_SPORTSMANAGER_ARIA_LABEL_PARTICIPANT_MAX="Teilnehmer Max." +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_START_MONTH="Monat des Ranglistenbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_START_YEAR="Jahr des Ranglistenbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_END_MONTH="Monat des Ranglistenendes" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_END_YEAR="Jahr des Ranglistenendes" +COM_SPORTSMANAGER_ARIA_LABEL_MAXIMUM_EVALUATED_COUNT="Maximal gewertete Teilnahmen" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_START_MONTH="Monat des Statistikbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_START_YEAR="Jahr des Statistikbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_END_MONTH="Monat des Statistikendes" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_END_YEAR="Jahr des Statistikendes" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_ORGANIZER="Wähle berechtigten Veranstalter" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_START_MONTH="Monat des Veranstaltungsbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_START_YEAR="Jahr des Veranstaltungsbeginns" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_END_MONTH="Monat des Veranstaltungsendes" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_END_YEAR="Jahr des Veranstaltungsendes" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND="Erste Runde" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND_TYPE="Erste Runde Typ" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND_PLACE="Erste Runde Platzierung" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND="Letzte Runde" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND_TYPE="Letzte Runde Typ" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND_PLACE="Letzte Runde Platzierung" +COM_SPORTSMANAGER_ARIA_LABEL_ROUND_TYPE="Rundentyp" +COM_SPORTSMANAGER_ARIA_LABEL_ROUND_PLACE="Rundenplatzierung" +COM_SPORTSMANAGER_HOME_POINTS="Heim Punkte" +COM_SPORTSMANAGER_GUEST_POINTS="Gast Punkte" +COM_SPORTSMANAGER_ARIA_LABEL_ENCOUNTER_YEAR="Jahr der Begegnung" +COM_SPORTSMANAGER_ARIA_LABEL_PAIRING_TEAM="Team für Paarung" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_COMPETITION="Wähle berechtigten Anwender" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_EVALUATION="Ranking Wertung" +COM_SPORTSMANAGER_ARIA_LABEL_LASTNAME="Nachname" +COM_SPORTSMANAGER_ARIA_LABEL_FIRSTNAME="Vorname" +COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Verein" diff --git a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini index 8484415..fb7f657 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -74,13 +74,13 @@ COM_SPORTSMANAGER_GAME="Game" COM_SPORTSMANAGER_GAMES="Games" COM_SPORTSMANAGER_GAMES_SHORTCUT="G" COM_SPORTSMANAGER_ADD_PLAYER_STATISTICS="Add player statistics" -COM_SPORTSMANAGER_PLAYER_STATISTICS="Player statistics" +COM_SPORTSMANAGER_PLAYER_STATISTIC="Player statistics" COM_SPORTSMANAGER_COMPETITION="Competition" COM_SPORTSMANAGER_COMPETITIONS="Competitions" COM_SPORTSMANAGER_IN_COMPETITIONS="in competition" COM_SPORTSMANAGER_COMPETITIONS_SHORTCUT="C" COM_SPORTSMANAGER_DUPLICATE="Duplicate" -COM_SPORTSMANAGER_CONFIRM_REMOVE_RANKING="Do you really want to remove the player statistics?" +COM_SPORTSMANAGER_CONFIRM_REMOVE_PLAYER_STATISTICS="Do you really want to remove the player statistics?" COM_SPORTSMANAGER_LIVE_TICKER="Live ticker" COM_SPORTSMANAGER_PLACE="Place" COM_SPORTSMANAGER_TEAM="Team" @@ -289,7 +289,6 @@ COM_SPORTSMANAGER_REQUEST_MESSAGE_PLURAL="At least %d dates must be given comple COM_SPORTSMANAGER_REJECT_SHIFT="Reject shift" COM_SPORTSMANAGER_TO="until" COM_SPORTSMANAGER_PLAYER_STATISTICS="Player statistics" -COM_SPORTSMANAGER_PERFORMANCE_INDEX="Performance index" COM_SPORTSMANAGER_PERFORMANCE_INDEX_SHORTCUT="PI" COM_SPORTSMANAGER_WON="won" COM_SPORTSMANAGER_LOST="lost" @@ -444,7 +443,7 @@ COM_SPORTSMANAGER_NOTE="Note" COM_SPORTSMANAGER_WANT_REALLY_REMOVE="Do you really want to remove the club?" COM_SPORTSMANAGER_ADD="Add" COM_SPORTSMANAGER_REMOVE_ACCOUNT="Remove account" -COM_SPORTSMANAGER_DISTRICT="Ristrict" +COM_SPORTSMANAGER_DISTRICT="District" COM_SPORTSMANAGER_ELIGIBLE_FOR_TEAM="Eligible for team" COM_SPORTSMANAGER_ELIGIBLE_FOR_CLUB="Eligible for club" COM_SPORTSMANAGER_SAVED_CLUB="Club to maintain" @@ -827,7 +826,6 @@ COM_SPORTSMANAGER_REMOVE_STATE_REALLY="Do you really want to remove the country? COM_SPORTSMANAGER_DATES_STATE="Appointments country" COM_SPORTSMANAGER_RENAME_APPOINTMENTS_STATE="Rename appointments with the preset country" COM_SPORTSMANAGER_FINAL_RANKING="FINAL RANKING" -COM_SPORTSMANAGER_HOME_TEAM2="Home team" COM_SPORTSMANAGER_RESULTS2="Result" COM_SPORTSMANAGER_NO_GAMES="No games" COM_SPORTSMANAGER_END_GAME="Final" @@ -921,3 +919,65 @@ COM_SPORTSMANAGER_NON_SMOKING_PROTECTION_MARK_NO=" (Kein Nichtraucherschutz)" COM_SPORTSMANAGER_POINTS_TABLE="Points table" COM_SPORTSMANAGER_EVALUATION="Auswertung" COM_SPORTSMANAGER_FUNCTION_DESCRIPTION="Variables: n = number of participants, p = place, m = multiplier of rating and in doubles possibly additionally reduced rating
Functions: +, -, *, /, round(x), pow(x), if(a > b, x, y), min(x, y), max(x, y), log(x), ln(x), logn(b, x)
VerteilungR(r, p, n, m) := max(round((((m * r - 1) * (-log(p / n) * (1 - (p / n)))) / (-log(1 / n) * (1 - (1 / n)))) + 1), 1)
Verteilung(r, p, n, m) := max(round(m * round((((r - 1) * (-log(p / n) * (1 - (p / n)))) / (-log(1 / n) * (1 - (1 / n)))) + 1)), 1)

The functions VerteilungR() and Verteilung() distribute points for place 1 (r) descending to the individual places (p) of the number of participants (n).
VerteilungR() applies the multiplier (m) to the points for 1st place and then distributes down to 1 point for the last place.
Verteilung() applies the multiplier (m) to the points after the calculation, i.e. the last place receives 1 * m points." + +COM_SPORTSMANAGER_ARIA_LABEL_MATCHDAY_SELECT="Choose a match day" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_DAY="Choose the day of the match proposal" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MONTH="Choose the month of the match proposal" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_YEAR="Choose the year of the match proposal" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_HOUR="Choose the hour of the match proposal" +COM_SPORTSMANAGER_ARIA_LABEL_PROPOSAL_MINUTE="Choose the minute of the match proposal" +COM_SPORTSMANAGER_ARIA_LABEL_SPECIAL_FILTER="Advanced Filter" +COM_SPORTSMANAGER_ARIA_LABEL_PLACE="Location" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_CLUB="Choose eligible club" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_START_MONTH="Month of tournament start" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_START_YEAR="Year of tournament start" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_END_MONTH="Month of tournament end" +COM_SPORTSMANAGER_ARIA_LABEL_TOURNAMENT_END_YEAR="Year of tournament end" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_USER="Choose eligible user" +COM_SPORTSMANAGER_ARIA_LABEL_POINTS_GUEST="Points away" +COM_SPORTSMANAGER_ARIA_LABEL_POINTS_HOME="Points home" +COM_SPORTSMANAGER_ARIA_LABEL_PLAYER_GUEST="Player away" +COM_SPORTSMANAGER_ARIA_LABEL_PLAYER_HOME="Player home" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_MONTH="Choose a Month" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_YEAR="Choose a Year" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_HOUR="Choose an Hour" +COM_SPORTSMANAGER_ARIA_LABEL_SCHEDULE_DATE_MINUTE="Choose a Minute" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_GUEST="Game away" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_HOME="Game home" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_DOUBLE="Game link double" +COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE="Game link single" +COM_SPORTSMANAGER_ARIA_LABEL_PLACEMENT_MIN="Placement min." +COM_SPORTSMANAGER_ARIA_LABEL_PLACEMENT_MAX="Placement max." +COM_SPORTSMANAGER_ARIA_LABEL_PARTICIPANT_MIN="Participant min." +COM_SPORTSMANAGER_ARIA_LABEL_PARTICIPANT_MAX="Participant max." +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_START_MONTH="Month of ranking start" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_START_YEAR="Year of ranking start" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_END_MONTH="Month of ranking end" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_END_YEAR="Year of ranking end" +COM_SPORTSMANAGER_ARIA_LABEL_MAXIMUM_EVALUATED_COUNT="Maximum number of evaluated participations" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_START_MONTH="Month of statistics start" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_START_YEAR="Year of statistics start" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_END_MONTH="Month of statistics end" +COM_SPORTSMANAGER_ARIA_LABEL_STATISTICS_END_YEAR="Year of statistics end" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_ORGANIZER="Choose eligible organizer" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_START_MONTH="Month of event start" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_START_YEAR="Year of event start" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_END_MONTH="Month of event end" +COM_SPORTSMANAGER_ARIA_LABEL_EVENT_END_YEAR="Year of event end" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND="First round" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND_TYPE="First round type" +COM_SPORTSMANAGER_ARIA_LABEL_FIRST_ROUND_PLACE="First round place" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND="Last round" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND_TYPE="Last round type" +COM_SPORTSMANAGER_ARIA_LABEL_LAST_ROUND_PLACE="Last round place" +COM_SPORTSMANAGER_ARIA_LABEL_ROUND_TYPE="round type" +COM_SPORTSMANAGER_ARIA_LABEL_ROUND_PLACE="round place" +COM_SPORTSMANAGER_HOME_POINTS="Home points" +COM_SPORTSMANAGER_GUEST_POINTS="Guest points" +COM_SPORTSMANAGER_ARIA_LABEL_ENCOUNTER_YEAR="Year of encounter" +COM_SPORTSMANAGER_ARIA_LABEL_PAIRING_TEAM="Team for fixture" +COM_SPORTSMANAGER_ARIA_LABEL_ELIGIBLE_COMPETITION="Choose eligible user" +COM_SPORTSMANAGER_ARIA_LABEL_RANKING_EVALUATION="Ranking evaluation" +COM_SPORTSMANAGER_ARIA_LABEL_LASTNAME="Lastname" +COM_SPORTSMANAGER_ARIA_LABEL_FIRSTNAME="Firstname" +COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Club" From cac8f33aa766ff776a1815a00122cf76b1a47a7f Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Wed, 9 Apr 2025 15:38:21 +0200 Subject: [PATCH 7/9] fix: add more specific error message to no access method --- src/structure/components/com_sportsmanager/tools.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index 6aa2c09..07ac5a9 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -41,8 +41,8 @@ class MathParserSM extends MathParser abortWithError(401 . ' Unauthorized'); } if (!$login || Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id) { - Log::add('an error occurred', Log::ERROR, 'com_sportsmanager'); - throw new RuntimeException('An error occurred.', 500); + Log::add('Unauthorized user with id ' . Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id, Log::WARNING, 'com_sportsmanager'); + throw new RuntimeException('´Not authorized!', 401); } $version = new Version(); $joomla = $version->getShortVersion(); From fea9f4089ca47ecd174beba57dffe14505e32cfd Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Wed, 9 Apr 2025 15:48:31 +0200 Subject: [PATCH 8/9] fix: remove tick --- src/structure/components/com_sportsmanager/tools.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index 07ac5a9..59992be 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -42,7 +42,7 @@ class MathParserSM extends MathParser } if (!$login || Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id) { Log::add('Unauthorized user with id ' . Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id, Log::WARNING, 'com_sportsmanager'); - throw new RuntimeException('´Not authorized!', 401); + throw new RuntimeException('Not authorized!', 401); } $version = new Version(); $joomla = $version->getShortVersion(); From c59a0be5ecd1edaf50c2fa8c4a9d22e5060beff6 Mon Sep 17 00:00:00 2001 From: Marvin Flock Date: Wed, 9 Apr 2025 15:59:16 +0200 Subject: [PATCH 9/9] feat: enable logging into own log file com_sportsmanager.php --- .../components/com_sportsmanager/services/provider.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/structure/administrator/components/com_sportsmanager/services/provider.php b/src/structure/administrator/components/com_sportsmanager/services/provider.php index 0879c48..4f17e3f 100644 --- a/src/structure/administrator/components/com_sportsmanager/services/provider.php +++ b/src/structure/administrator/components/com_sportsmanager/services/provider.php @@ -15,6 +15,7 @@ use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface; use Joomla\CMS\Extension\ComponentInterface; use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory; use Joomla\CMS\Extension\Service\Provider\MVCFactory; +use Joomla\CMS\Log\Log; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; @@ -36,6 +37,14 @@ return new class implements ServiceProviderInterface { */ public function register(Container $container): void { + Log::addLogger( + [ + 'text_file' => 'com_sportsmanager.php', + ], + Log::ALL, + ['com_sportsmanager'] + ); + $container->registerServiceProvider(new MVCFactory('\\Dtfb\\Component\\com_sportsmanager')); $container->registerServiceProvider(new ComponentDispatcherFactory('\\Dtfb\\Component\\com_sportsmanager'));
' . Text::_('COM_SPORTSMANAGER_PLACE') . '' . $group . '' . ($punkte_anzeigen ? Text::_('COM_SPORTSMANAGER_POINTS') : ' ') . '