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